Makro do tworzenia i modyfikowania właściwości w części SolidWorks

Witam

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.

 

Z góry dziękuję za odpowiedzi.

 

Guillaume

Jeśli chodzi o materiał, spójrz na to makro, które na pewno Ci pomoże:

https://www.codestack.net/solidworks-api/document/materials/show-edit-material-dialog/

Dla właściwości, które znajdziesz w menu tego rozdziału, przeczytaj właściwość i wpisz właściwość:

https://www.codestack.net/solidworks-document-manager-api/document/data-storage/custom-properties/

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:

https://help.visiativ.com/mycadtools/2018/fr/PrsentationdelutilitaireIntegrat.html

1 polubienie

Dziękuję za odpowiedź.

Udało mi się poradzić sobie ze zmianą jednostki masy i zastosowaniem materiału.

Jeśli chodzi o właściwości, postaram się zobaczyć z twoim linkiem.

A moja wiedza o makro kończy się na kilku kursach VBA na temat Excela na studiach licencjackich.

To samo, ale dzięki tej stronie udawało mi się radzić z często małą pomocą na tym forum.

1 polubienie

Witam

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.

1 polubienie

Witam

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.

Pozdrowienia

4 polubienia

Dziękuję @d.roger za poświęcony czas.

Odpowiedź jest świetna i jest właśnie tym, czego potrzebuję, jedynym problemem, jaki mi pozostał, jest wybór materiału.

Zamiast "MyConfigName" można użyć czegoś innego, aby zastosować modyfikację, niezależnie od konfiguracji.

W niektórych przypadkach moje części mają konfigurację "Domyślną", ale w wielu przypadkach mają one inne nazwy.

 

Z góry dziękuję

 

Guillaume

Linię można wymienić:

Part.SetMaterialPropertyName2 "MyConfigName", "C:\xxxxxxxx\MyMaterialBase.sldmat", "MyMaterialName"

Według linii:

Ustaw swConfMgr = Part.ConfigurationManager
Ustaw swconf = swConfMgr.ActiveConfiguration
Part.SetMaterialPropertyName2 swconf. Nazwa, "C:\xxxxxxxx\MyMaterialBase.sldmat", "MyMaterialName"

Pozwala to na odczytanie nazwy aktywnej konfiguracji, a tym samym na pracę nad nią.

Pozdrowienia

1 polubienie

Dziękuję bardzo, jest idealnie

 

Pozdrowienia