Macro om eigenschappen in een SolidWorks-onderdeel te maken en te wijzigen

Hallo

Ik moet heel vaak onderdelen die op SolidWorks zijn gemaakt lange tijd gebruiken en bijwerken.

Telkens wanneer ik een van deze onderdelen moet wijzigen of er een vlak van moet maken, moet ik er een materiaal aan toewijzen (meestal altijd hetzelfde), de aangepaste materiaaleigenschap maken, de massa-eigenschap maken en naar de documenteigenschappen gaan om de massa-eenheid te wijzigen om deze in kg te veranderen.

Om te voorkomen dat dezelfde acties steeds opnieuw worden herhaald, zou ik graag willen weten of het mogelijk zal zijn om een macro te maken die dit allemaal zou doen.

Ik heb geprobeerd een macro op te nemen terwijl ik dit allemaal deed, maar als ik het wil gebruiken, wordt het gewoon het menu met aangepaste eigenschappen voor mij geopend en gebeurt er verder niets.

Omdat ik niet veel weet over Macro, hoop ik dat iemand me kan helpen.

 

Bij voorbaat dank voor uw antwoorden.

 

Guillaume

Voor het materiaal, kijk naar deze macro, het zal je zeker helpen:

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

Voor eigenschappen die je in het menu van dit hoofdstuk vindt, lees je een eigenschap en schrijf je een eigenschap:

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

Kijk of je vindt wat je zoekt en probeer het naar wens aan te passen.

Anders zonder enige kennis van macro zijn er de Visiatv-tools (MyCad-Integration) die doet wat je vraagt zonder enige kennis in macro en in batch (van toepassing op een map of een assemblage en alle kinderen:

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

1 like

Dank u voor uw antwoord.

Ik slaagde erin om de verandering van de massa-eenheid en de toepassing van het materiaal te beheren.

Voor de eigenschappen, zal ik proberen te zien met uw link.

En mijn kennis van macro stopt bij een paar VBA-cursussen over excel in bachelor's degree.

Idem maar dankzij deze site heb ik me kunnen redden met vaak een beetje hulp op dit forum.

1 like

Hallo

U kunt ook kijken naar de taakplanner waarmee u aangepaste eigenschappen kunt toepassen op verschillende onderdelen of mappen zonder dat u VBA nodig hebt.

1 like

Hallo

Naar mijn mening zijn er eenvoudiger dan de hierboven gegeven links:

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

Natuurlijk vervangt u op de regel met de functie "SetMaterialPropertyName2" de waarden tussen aanhalingstekens zoals u dat wilt.

Vriendelijke groeten

4 likes

Bedankt @d.roger voor je tijd.

Het antwoord is geweldig en is precies wat ik nodig heb, het enige probleem dat ik nog heb is de materiaalkeuze.

In plaats van "MyConfigName" is het mogelijk om iets anders te gebruiken om de wijziging toe te passen, ongeacht de configuratie.

In sommige gevallen hebben mijn onderdelen de "Standaard" configuratie, maar in veel gevallen heeft het andere namen.

 

Bij voorbaat dank

 

Guillaume

U kunt de regel vervangen:

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

Volgens de regels:

Stel swConfMgr = Part.ConfigurationManager in
Stel swconf = swConfMgr.ActiveConfiguration in
Part.SetMaterialPropertyName2 swconf. Naam, "C:\xxxxxxxx\MyMaterialBase.sldmat", "MyMaterialName"

Hierdoor kunt u de naam van de actieve configuratie lezen en er dus aan werken.

Vriendelijke groeten

1 like

Heel erg bedankt, het is perfect

 

Vriendelijke groeten