Hallo!
Ich arbeite an einem Makro, um unter anderem meine neuen Eigenschaftsformulare auf alte Dateien anzuwenden, die noch die alten verwenden.
Ich würde gerne wissen, ob Sie wissen, wie Sie die .asmprp-, .drwprp- und .prtp-Dateien abrufen und sie mit einem Makro auf ein asm, drw oder prt anwenden können.
Vielen Dank im Voraus, wenn Sie einen Hinweis haben.
Schönen Tag
Ohne zu überprüfen, habe ich Folgendes gefunden:
sub main()
application.sldworks.activedoc.extension.custompropertybuildertemplate(false) = "whatever.prtprp"
end sub
https://help.solidworks.com/2020/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDocExtension~CustomPropertyBuilderTemplate.html?verRedirect=1
Feder:
https://www.cadforum.net/viewtopic.php?t=26
Hallo
Danke 2. An Damien für die Idee und Sdadenis für die Lösung.
Im Anhang ist mein Makro mit Dateityptest.
Schönen Tag.
appliquer_formulaires_de_proprietes.swp
Vielen Dank für die Leads!
Ich habe mir etwas einfallen lassen, das zu funktionieren scheint. Es ist sicherlich weder perfekt noch optimiert, ich fange gerade erst an...
Dimmen swApp als Objekt
Dim swModel As SldWorks.ModelDoc2
Sub main()
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
• Steuert, ob ein Dokument in SolidWorks geöffnet wird
Wenn swModel nichts ist, dann
MsgBox "Sie benötigen ein geöffnetes Dokument, um diese Funktion nutzen zu können!", vbInformation, "Neue MasqueMarking "
' Prüfung, ob es sich bei dem geöffneten Dokument um ein Dokument handelt
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocPART Dann
' Prüfen Sie, ob die richtige Markierungsmaske bereits angewendet wurde
Wenn nicht, Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_PRT.prtprp", dann
Wenden Sie die richtige Markierungsmaske an
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_PRT.prtprp"
Ende, wenn
' Steuert, ob es sich bei dem geöffneten Dokument um eine Baugruppe handelt
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocASSEMBLY dann
' Prüfen Sie, ob die richtige Markierungsmaske bereits angewendet wurde
Wenn nicht, Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_ASM.asmprp", dann
Wenden Sie die richtige Markierungsmaske an
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_ASM.asmprp"
Ende, wenn
' Steuert, ob es sich bei dem geöffneten Dokument um eine Zeichnung handelt
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocDRAWING Dann
' Prüfen Sie, ob die richtige Markierungsmaske bereits angewendet wurde
Wenn nicht, Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_DRW.drwprp", dann
Wenden Sie die richtige Markierungsmaske an
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_DRW.drwprp"
Ende, wenn
Ende, wenn
Ende Sub
Für einen 1. Entwickler scheint es mir ziemlich gut und ziemlich gut optimiert zu sein, da Sie die Fehlerbehandlung berücksichtigt haben.
Es sollte in der Tat funktionsfähig sein, mehr als im Laufe der Zeit getestet werden.