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.