Ich weiß nichts über Makros und würde gerne wissen, ob es möglich ist, ein DXF-Exportmakro zu erstellen, das alle Blätter einer Zeichnung in separate Dateien exportiert und die Namen der Blätter beibehält.
Nach der Suche im Forum habe ich dieses Thema mit dem angehängten Makro gefunden, das ich im Prinzip suche, nur dass es PDFs und keine DXFs macht:
Könnte eine gute Seele des Forums dieses Makro für mich ändern, um das PDF durch das DXF zu ersetzen? Behält das Makro die SolidWorks "Speichern unter"-Optionen bei, die ich verwende, wenn ich es manuell ausführe, z. B. bei der Verwendung einer Projektionsdatei?
Meine Zeichnung hat eine Ansicht mit Abmessungen für die Fab (Registerkarte "Blatt 1") und ein abgewickeltes Blech zum Laserschneiden (Registerkarte "Rep A")
Ich bin mir nicht sicher, ob ich die vorherige Nachricht verstanden habe.
Ist das PDF-Makro fertig und sollte das DXF-Makro das tun, was wir verstehen müssen?
Ich habe das Makro nicht geöffnet, aber wenn es einfach eine Änderung der Dateierweiterung im gesamten Code gab, wird es logischerweise nur in einem anderen Format gespeichert.
Das Makro "pdf_page_par_page.swp" erstellt 1 Datei pro Zeichnungsblatt und enthält im PDF-Dateinamen den Namen der Zeichnungsdatei + den Namen des Blattes
Wenn die Zeichnungsdatei z. B. "TOTO" heißt und 2 Blätter enthält, "PLAN" und "Rep A", führt das PDF-Makro Folgendes aus:
Ich für meinen Teil bin auf "Alle Blätter in einer Datei exportieren" eingestellt und habe kein Problem.
Nur wenn die Einstellung "Alle Blätter in separaten Dateien exportieren" ist, erzeugt der Export 4 Dateien.
Was mir auch aufgefallen ist, ist, dass man die Änderung der Einstellungen zweimal erzwingen muss, damit sie korrekt berücksichtigt wird (wahrscheinlich SW2020-Fehler).
Wenn man sich das Makro ansieht, gibt es mehrmals "swExpPdfData" und "SldWorks.ExportPdfData"
und eine Zeile outFile = outFile & IIf(INCLUDE_DRAWING_NAME, drawName & "_", "") & sheetName & ".dxf" oder es ist ".pdf" im PDF-Makro, die funktioniert
Ist es die ..... ExpPdfData, die durch das Äquivalent für DXFs ersetzt werden sollten?
Normalerweise erfüllt der folgende Code die Anforderungen
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim sPathname As String
Dim vSheetName As Variant
Dim nErrors As Long
Dim nWarnings As Long
Dim i As Long
Dim bRet As Boolean
Dim lParam As Long
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
lParam = swApp.GetUserPreferenceIntegerValue(swDxfMultiSheetOption)
'Changement paramétrage export dxf si différent de feuille active
If lParam <> 0 Then
bRet = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, swDxfMultisheet_e.swDxfActiveSheetOnly)
End If
sPathname = swModel.GetPathName
sPathname = Left(sPathname, Len(sPathname) - 7)
vSheetName = swDraw.GetSheetNames
For i = 0 To UBound(vSheetName)
bRet = swDraw.ActivateSheet(vSheetName(i))
bRet = swModel.SaveAs4(sPathname & "_" & vSheetName(i) & ".dxf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)
Next i
' Retour à la Feuille 1
bRet = swDraw.ActivateSheet(vSheetName(0))
' Remise en place du paramétrage initial
bRet = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, lParam)
End Sub
Hallo Es tut mir leid, das Thema zu entstauben, aber ich habe dieses Makro auf SW2025 ausprobiert und es funktioniert nicht. Das ist genau das, was ich auch tun möchte, ich zeichne Teile mit mehreren geschweißten Körpern. Vielen Dank Manu
Um Ihnen helfen zu können, benötigen wir weitere Informationen:
Du sagst, dass das Makro unter Sw2025 nicht funktioniert, was und die Fehlermeldung? Handelt es sich bei Ihrer Version von Solidworks um eine lokale oder 3Dexperience Version? Haben Sie schon einmal darüber nachgedacht, Solidworks Referenzen in Ihren VBA-Editor zu laden?
Anmerkung: Die Funktion " SaveAs4 " gilt in der Solidworks API-Hilfe als veraltet. seltsamerweise wird es durch " SaveAs3 " ersetzt. und ihre Aussagen sind etwas anders: Wert = Instanz. SaveAs4(Name, Version, Optionen, Fehler, Warnungen) und Wert = Instanz. SaveAs3(Name, Version, Optionen, ExportData, AdvancedSaveAsOptions, Fehler, Warnungen)
Allerdings ist eine " veraltete " Funktion nicht unbedingt unbrauchbar...
Aber hier greifen wir ein Thema an, das von Ihrem Niveau in der VBA-Programmierung abhängt. In Ihrem Fall denke ich eher an die VBA-Referenzen, die hinzugefügt werden sollen...
Hallo Vielen Dank für Ihr Feedback, als ich die Referenzen überprüfte, waren die SW-Kästchen bereits alle angekreuzt. Ich habe gerade Microsoft Scripting Runtime hinzugefügt, das Makro erneut ausgeführt, um es zu versuchen, und es scheint perfekt zu funktionieren. Ich weiß nicht, ob das das Problem war, aber auf jeden Fall bin ich zufrieden. Vielen Dank Manu
Es wird nicht seltsamerweise durch SaveAs3 ersetzt, es verwendet nur nicht die gleichen Methoden, SaveAs4 ist Teil der ModelDoc2- und SaveAs3-Methoden von ModelDocExtension. Als Antwort @Emmanuel_SERVEL wird die Microsoft Scripting Runtime-Referenz normalerweise nicht für den Codeausschnitt benötigt, den ich angegeben habe. Der Fehler könnte von der linken Funktion kommen, die manchmal nicht erkannt wird, Sie müssen VBA als Ersatz verwenden. Links.
Vielen Dank @Cyril_f ... Bereicherung meiner persönlichen Kultur: (und es gibt nicht einmal Sarkasmus)
ModelDoc2 : Stellt das Hauptdokument in SolidWorks dar (Teil, Baugruppe oder Zeichnung)
Ermöglicht den Zugriff auf grundlegende Vorgänge im Dokument: Öffnen, Speichern, Neuerstellen, Abrufen des Dokumenttyps, Zugriff auf Konfigurationen, Verwalten von Ansichten usw Also = > ModelDoc2:p alle grundlegenden Operationen am SolidWorks*-Dokument.
ModelDocExtension :
Ist eine Erweiterung von ModelDoc2, auf die über die Eigenschaft .Extension eines ModelDoc2*-Objekts zugegriffen wird.
Wurde erstellt, um zusätzliche Methoden und Eigenschaften hinzuzufügen, wenn ModelDoc2 seine Kapazitätsgrenze in Bezug auf die Anzahl der Methoden erreicht.
Bietet Zugriff auf erweiterte oder weniger gebräuchliche Funktionen, wie z. B.: benutzerdefinierte Eigenschaftsverwaltung, Masseneigenschaftsberechnungen, Verwaltung von Stücklistentabellen, Konvertierungsvorgänge, erweiterte Datensatzverwaltung (z. B. SaveAs2) Also: ModelDocExtension :p erweiterte oder spezialisierte Operationen, die nicht direkt in ModelDoc2 verfügbar sind und über die Eigenschaft .Extension eines ModelDoc2-Objekts zugänglich sind
Zusammenfassend lässt sich sagen, dass ModelDocExtension ModelDoc2 ergänzt und Zugriff auf zusätzliche Funktionen bietet, die für Makros oder erweiterte Automatisierungen in SolidWorks benötigt werden