Makro — stosowanie formularzy właściwości (.asmprp, .drwprp, .prtprp)

Witam!

 Pracuję nad makrem, aby między innymi zastosować moje nowe formularze właściwości do starych plików, które nadal używają starych.

Chciałbym wiedzieć, czy wiedziałbyś, jak pobrać pliki .asmprp, .drwprp i .prtprp i zastosować je do asm, drw lub prt za pomocą  makra.

Z góry dziękuję, jeśli masz trop.

Miłego dnia

Bez sprawdzania znalazłem to:

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

 

Wiosna:

https://www.cadforum.net/viewtopic.php?t=26

 

Witam

Dziękuję Ci 2. Damienowi za pomysł i Sdadenisowi za rozwiązanie.

W załączeniu moje makro z testem typu pliku.

Miłego dnia.


appliquer_formulaires_de_proprietes.swp

Dziękuję za wskazówki!

Wymyśliłem coś, co wydaje się działać. Na pewno nie jest ani idealny, ani zoptymalizowany, dopiero zaczynam...

Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2

Sub main()

Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc

• Określa, czy dokument jest otwierany w SolidWorks
Jeśli swModel jest niczym, to
MsgBox "Aby korzystać z tej funkcji, potrzebujesz otwartego dokumentu!", vbInformation, "New MasqueMarking "

' Sprawdza, czy otwarty dokument jest dokumentem
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocPART Then
' Sprawdź, czy zastosowano już prawidłową maskę znakowania
Jeśli nie Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_PRT.prtprp" to
Stosowanie odpowiedniej maski znakowania
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_PRT.prtprp"
Zakończ jeżeli:
        
' Określa, czy otwarty dokument jest złożeniem
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocASSEMBLY Następnie
' Sprawdź, czy zastosowano już prawidłową maskę znakowania
Jeśli nie Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_ASM.asmprp" to
Stosowanie odpowiedniej maski znakowania
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_ASM.asmprp"
Zakończ jeżeli:

' Określa, czy otwarty dokument jest rysunkiem
ElseIf Application.SldWorks.ActiveDoc.GetType = swDocDRAWING Następnie
' Sprawdź, czy zastosowano już prawidłową maskę znakowania
Jeśli nie Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_DRW.drwprp" to
Stosowanie odpowiedniej maski znakowania
Application.SldWorks.ActiveDoc.Extension.CustomPropertyBuilderTemplate(False) = "Masque_marquage_DRW.drwprp"
Zakończ jeżeli:
   
Zakończ jeżeli:

Koniec subwoofera

 

Jak na 1. dewelopera wydaje mi się to całkiem niezłe i raczej dobrze zoptymalizowane, ponieważ wziąłeś pod uwagę obsługę błędów.

Powinien być rzeczywiście funkcjonalny, a nie do testowania w czasie.