Hallo, ich habe lange versucht, ein einfaches Makro zu erstellen, um die aktuelle Ansicht meines Teils (.part) in DXF zu exportieren, egal wie sehr ich versuche, exporttoDWG2 zu verwenden, ich schaffe es nie, mein Maccro zum Laufen zu bringen, ich fange von weit in VBA an, auch habe ich versucht, mehrere Codes zu hacken, die ich zu anderen Themen gefunden habe, aber nichts hilft. und ChatGPT hat es nicht geschafft, meine Bedürfnisse zu erfüllen, auch wenn es einfach erscheint.
Ich kann es kaum erwarten, Ihnen das Forum Ingenieure zu lesen
ChatGPT ... Aber was habt ihr jetzt alle mit diesem Ding drauf? Es ist nie nur ein Roboter, der Textstücke, die er sieht, kopiert und einfügt. Kurz
Haben Sie versucht, ein Makro zu erstellen, indem Sie gelernt haben, indem Sie Ihre Bewegungen beim Erstellen eines DXF aufgezeichnet haben? Es könnte Ihnen ermöglichen, die grundlegenden Funktionen zu sehen, die für Ihre Aktion erforderlich sind
Es ist ein Gpt-Tool, es ist meiner Meinung nach viel mehr als das, aber ja, es nimmt diese Informationen aus einer großen Datenbank. In Kürze²
Ja, ich habe damit angefangen, aber selbst wenn ich ein DXF von meinem Teil erstelle, gibt es einen Code aus, ich versuche es erneut mit demselben Teil, indem ich das zuvor erstellte DXF lösche, es wird gestartet, scheint aber keine Aktion auszuführen und keine DXF-Erstellung in der Ausgabe ...
' ******************************************************************************
' 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
Hier ist der Code, den es mir gibt... und wenn ich es danach ausführe, bekomme ich einen synthaxis-Fehler auf
Hallo Der Syntaxfehler liegt daran, dass die Anführungszeichen um *In Bearbeitung vergessen wurden. Ohne die Anführungszeichen wird sie als Variable betrachtet, sodass sie nicht existiert oder leer ist, und gibt daher einen Fehler zurück.
Hallo Cyril danke für Ihre Antwort, es hat den synthaxe-Fehler gelöst, trotzdem bewegt sich das Problem etwas tiefer, wenn ich das Makro starte, habe ich die Nachricht nächster:
Die Linie
Set myView = Part.CreateDrawViewFromModelView3("chemin de ma pièce.SLDPRT", "*En cours", 0, 0, 0)
wird nun hervorgehoben,
Wenn ich das Makro ausführe, wird auch eine leere Zeichnung geöffnet.
Hallo Nach der Analyse ist das Makro meiner Meinung nach nicht für den Bedarf gemacht. Wir sollten uns diesen Code lieber anschauen und gegebenenfalls anpassen.
Normalerweise befindet sich dies im öffentlichen Dokumentenordner von Windows. C:\Benutzer\Öffentliche\Dokumente\SOLIDWORKS\SOLIDWORKS XXXX\Beispiele\tutorial
Das angehängte Makro sollte in der Lage sein, die aktuelle Ansicht eines Teils im DXF- oder DWG-Format zu speichern. Das Dokument muss geöffnet und das Dokument aktiv sein. Beachten Sie, dass Flächenkörper in der SolidWorks Exportfunktion nicht berücksichtigt werden.
EDIT: Es funktioniert auf 2 der 3 Stationen einwandfrei, auf der 3. funktioniert das Makro, aber dann ist es unmöglich, einen neuen Raum zu erstellen, das Problem bleibt bis zur Eröffnung eines anderen Raums bestehen. Haben Sie eine Idee, woher dieser Fehler kommen könnte? (Dies ist ein Detail, da wir uns in der Phase der DXF-Erstellung theoretisch nicht mehr in einer Phase der Erstellung neuer Teile befinden)
Ich habe das gleiche Verhalten auf meinem PC, das Menü, das der Erstellungsfunktion zugeordnet ist, reagiert nach dem Ausführen des Makros nicht. Durch die Befolgung der schrittweisen Ausführung ist das Anlegen eines neuen Teils im gesamten Makro bis hin zur Funktion ExportToDWG2 möglich und wird nach... Es scheint die Ursache des Problems zu sein, und ich habe keine Ahnung, wie ich es umgehen kann.
Es scheint, dass dieses GPT den Code nicht gut strukturiert hat, dennoch zeigte es eine gute Logik von {think}, erstellen Sie ein MEP der aktuellen Ansicht und exportieren Sie dann nach dxf, nicht schlecht,
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
Er hätte erraten können, dass der Name (*In Bearbeitung) zur Ansichtspalette gehört, nicht zur Vorlage
Hallo Ich denke, es hängt eher mit der Tatsache zusammen, dass Objekte nicht aus dem Speicher geleert werden. Das Formular bleibt zu Hause aktiv, hindert mich aber nicht daran, zumindest eine neue Datei zu erstellen (ich habe nicht versucht, etwas darin zu tun). Ich denke, ich sollte "Set xxx = Nothing" an verschiedenen Stellen im Makro hinzufügen.
@m.blt mit diesem Makro habe ich nach dem Export keine Probleme mit der Erstellung neuer Teile, aber ich hatte das Problem mit einem anderen, ich hatte keine Zeit, es zu untersuchen, um den Unterschied zwischen den beiden zu sehen, aber wenn es hilft.