Makro - Anwenden von Eigenschaftsformularen (.asmprp, .drwprp, .prtprp)

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.