Eksport monet makro DXF

Witam, długo próbowałem stworzyć proste makro do eksportu w DXF bieżącego widoku mojej części (.part), bez względu na to, jak bardzo staram się używać exporttoDWG2, nigdy nie udaje mi się uruchomić mojego maccro, zaczynam od daleka w VBA również próbowałem zhakować kilka kodów, które znalazłem na inne tematy, ale nic nie pomaga. a ChatGPT nie zdołał zaspokoić mojej potrzeby, mimo że wydaje się to proste.

Nie mogę się doczekać, aby przeczytać Cię na forum inżynierowie :slight_smile:

ChatGPT ... Ale co wy wszyscy macie teraz z tym czymś? To nigdy nie jest tylko robot, który kopiuje i wkleja fragmenty tekstu, które widzi. Krótki

Czy próbowałeś stworzyć makro, ucząc się, rejestrując swoje ruchy podczas tworzenia DXF? Może to pozwolić Ci zobaczyć podstawowe funkcje, które są wywoływane dla Twojego działania

1 polubienie

Jest to narzędzie Gpt, moim zdaniem to znacznie więcej, ale tak, pobiera te informacje z dużej bazy danych. W skrócie²

Tak, zacząłem od zrobienia tego, ale nawet jeśli utworzę DXF z mojej części, generuje kod, próbuję ponownie z tą samą częścią, usuwając wcześniej wykonany DXF, uruchamia się, ale wydaje się, że nie wykonuje żadnej czynności i nie ma tworzenia DXF na wyjściu...

' ******************************************************************************
' macro recorded on 04/21/23 by CAO21
' ******************************************************************************
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

' Save As
longstatus = Part.SaveAs3("mon chemin.DXF", 0, 2)

' Redraw
Part.GraphicsRedraw2
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameLeft = 0
myModelView.FrameTop = 22
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Mise en plan.drwdot", 0, 0, 0)
swApp.ActivateDoc2 "Mise en plan25 - Feuille1", False, longstatus
Set Part = swApp.ActiveDoc
Set Part = swApp.ActiveDoc
Set myModelView = Part.ActiveView
myModelView.FrameLeft = 0
myModelView.FrameTop = 22
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
swApp.ActivateDoc2 "nom piece", False, longstatus
Set Part = swApp.ActiveDoc

' New View
Part.NameView "*En cours"
Dim myView As Object
Set myView = Part.CreateDrawViewFromModelView3("cheminpiece", "*En cours", 0, 0, 0)
boolstatus = Part.DeleteNamedView(*En cours)
Part.ClearSelection2 True
End Sub

oto kod, który mi wychodzi... a kiedy uruchamiam go później, pojawia się błąd synthaxis

boolstatus = Part.DeleteNamedView(*En cours)

Witam
W przypadku błędu składniowego jest on spowodowany zapomnieniem cudzysłowów wokół *W toku. Bez cudzysłowów traktuje ją jako zmienną, więc ponieważ nie istnieje lub jest pusta, zwraca błąd.

2 polubienia

Witam Cyril dziękuję za odpowiedź, rozwiązało to błąd synthaxe, niemniej jednak problem przesuwa się nieco niżej, kiedy uruchamiam makro pojawia się komunikat
następny:
image

Linia

Set myView = Part.CreateDrawViewFromModelView3("chemin de ma pièce.SLDPRT", "*En cours", 0, 0, 0)

jest teraz podświetlony,

Po uruchomieniu makra otwiera się również pusty rysunek.

Witam
Po analizie makro moim zdaniem nie jest stworzone na taką potrzebę.
Powinniśmy raczej przyjrzeć się temu kodowi i w razie potrzeby go dostosować.

Gdzie mogę to znaleźć? Skopiuj public_documents \samples\tutorial\api\2012-sm.sldprt do ' c:\temp . ’

Zwykle znajduje się on w publicznym folderze Dokumenty systemu Windows.
C:\Użytkownicy\Publiczne\Dokumenty\SOLIDWORKS\SOLIDWORKS XXXX\samples\tutorial

Witaj @leon.c

Dołączone makro powinno być w stanie zapisać bieżący widok części w formacie DXF lub DWG.
Dokument musi być otwarty, a dokument aktywny.
Należy zauważyć, że obiekty powierzchniowe nie są uwzględniane w funkcji eksportu SolidWorks.

Pozdrowienia
PartToDxfDwg.swp (76.5 KB)

3 polubienia

EDIT: działa doskonale na 2 z 3 stacji, na 3 makro działa, ale wtedy nie da się stworzyć nowego pomieszczenia, problem utrzymuje się do momentu otwarcia kolejnego pomieszczenia. Masz pomysł, skąd może pochodzić ten błąd? (Jest to szczegół, biorąc pod uwagę, że na etapie tworzenia DXF teoretycznie nie jesteśmy już w fazie tworzenia nowych części)

Witam

Mam to samo zachowanie na moim komputerze, menu powiązane z funkcją tworzenia nie odpowiada po uruchomieniu makra.
Postępując zgodnie z instrukcją krok po kroku, utworzenie nowej części jest możliwe w całym makrze, aż do funkcji ExportToDWG2, i staje się niemożliwe po...
Wydaje się, że to jest przyczyną problemu i nie mam pojęcia, jak go obejść.

2 polubienia

Wygląda na to, że ten GPT nie ustrukturyzował dobrze kodu, niemniej jednak pokazał dobrą logikę {think}, utwórz mep bieżącego widoku, a następnie wyeksportuj do dxf, nieźle,

Option Explicit

Dim swApp As Object
Dim swModel As ModelDoc2
Dim swdrawing As DrawingDoc
Dim status As Boolean
Const modelPath As String = "C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2018\templates\Drawing.drwdot"
Const nameView As String = "Current"

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    If Not (swModel.GetType() = 1 Or swModel.GetType() = 2) Then
        MsgBox "Fonctional only on  'Part' or 'Assembly' documents.", vbCritical
        End
    End If
    Dim path As String
    path = swModel.GetPathName
    On Error GoTo err
    swModel.nameView nameView
    Set swdrawing = swApp.NewDocument(modelPath, 0, 0, 0)
    swdrawing.CreateDrawViewFromModelView3 path, nameView, 0, 0, 0
    Set swModel = swApp.ActiveDoc
    path = Left(path, InStr(1, path, ".")) + "dxf"
    Dim error As Long, warning As Long
    status = swModel.Extension.SaveAs(path, 0, 1, Nothing, error, warning)
    swApp.CloseDoc ""
    Set swModel = swApp.ActiveDoc
    swModel.DeleteNamedView nameView
    If status = False Then GoTo err
    MsgBox "Success", vbInformation
Exit Sub
err:
    MsgBox "Error in processing", vbCritical
End Sub

Byłby w stanie odgadnąć, że nazwa (*W trakcie) należy do palety widoków, a nie do szablonu :grin:

Może ze względu na tabelę widoków, zadeklarowaną dla 2 widoków, ale tylko 1 jest zdefiniowany,

Witam
Myślę, że jest to bardziej związane z faktem, że nie opróżniamy obiektów z pamięci.
Formularz pozostaje aktywny w domu, ale nie przeszkadza mi przynajmniej w utworzeniu nowego pliku (nie próbowałem nic w nim zrobić).
Myślę, że powinienem dodać "Ustaw xxx = Nic" w różnych punktach makra.

1 polubienie

@m_blt z tym makrem nie mam żadnych problemów po eksporcie do stworzenia nowej części ale miałem problem z inną, nie miałem czasu do niego zajrzeć, aby zobaczyć różnicę między tymi dwoma, ale czy to pomaga.

DXF z linią gięcia.swp (36 KB)