Bardzo często muszę używać i aktualizować części utworzone w SolidWorks przez długi czas.
Za każdym razem, gdy muszę zmodyfikować jedną z tych części lub odtworzyć jej płaszczyznę, muszę przypisać do niej materiał (zwykle zawsze ten sam), utworzyć niestandardową właściwość Materiał, utworzyć właściwość Masa i przejść do właściwości dokumentu, aby zmodyfikować jednostkę masy, aby zmienić ją na kg.
Aby uniknąć powtarzania w kółko tych samych czynności, chciałbym wiedzieć, czy możliwe będzie stworzenie makra, które zrobi to wszystko.
Próbowałem nagrać makro podczas robienia tego wszystkiego, ale kiedy chcę go użyć, po prostu otwiera mi się menu właściwości niestandardowych i nic więcej się nie dzieje.
Ponieważ nie znam się zbytnio na Macro, mam nadzieję, że ktoś będzie w stanie mi pomóc.
Sprawdź, czy znajdziesz to, czego szukasz i spróbuj zmodyfikować według własnych upodobań.
W przeciwnym razie, bez żadnej wiedzy na temat makr, istnieją narzędzia Visiativ (MyCad-Integration), które robią to, o co prosisz, bez żadnej wiedzy w makro i wsadowo (zastosuj do folderu lub zestawu i wszystkie dzieci:
Możesz także spojrzeć na harmonogram zadań, który umożliwia zastosowanie niestandardowych właściwości do kilku części lub folderów bez konieczności korzystania z VBA.
Moim zdaniem są prostsze niż linki podane powyżej:
Dim swApp As SldWorks.SldWorks
Dim Part As ModelDoc2
Dim CustPropMgr As CustomPropertyManager
Dim bRet As Boolean
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
If Not Part Is Nothing Then
If Part.GetType() = swDocumentTypes_e.swDocPART Then
bRet = Part.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swUnitSystem, swUnitSystem_e.swUnitSystem_Custom)
bRet = Part.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swUnitsMassPropMass, swUnitsMassPropMass_e.swUnitsMassPropMass_Kilograms)
Part.SetMaterialPropertyName2 "NomDeMaConfig", "C:\xxxxxxxx\MaBaseDeMateriaux.sldmat", "NomDeMonMateriau"
Set CustPropMgr = Part.Extension.CustomPropertyManager("")
bRet = CustPropMgr.Add3("Matiere", swCustomInfoType_e.swCustomInfoText, """SW-Material""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
bRet = CustPropMgr.Add3("Masse", swCustomInfoType_e.swCustomInfoText, """SW-Masse""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
Part.ForceRebuild3 True
End If
End If
End Sub
Oczywiście w wierszu z funkcją "SetMaterialPropertyName2" zamieniasz wartości w cudzysłów według własnego uznania.