Macro pour créer et modifier des propriétés dans une pièces SolidWorks

Bonjour,

J'ai très souvent besoin d'utiliser et d'actualiser des pièces créer sur SolidWorks il y un un bon moment.

A chaque fois que j'ai besoin de modifier une des ces pièces ou d'en recréer un plan je dois lui affecter un matériau (en général toujours le même), créer la propriété personnalisées Matériau, créer la propriété Masse et me rendre dans les propriété du document pour modifier l'unité de masse pour la passer en kg.

Pour éviter de répéter toujours ces mêmes actions j'aimerai savoir s'il serai possible de créer une macro qui ferait tout ça.

J'ai essayé d'enregistrer une macro en faisant tout ça mais lorsque je veux l'utiliser elle m'ouvre juste le menu des propriétés personnalisées et rien d'autre ne se passe.

Comme je n'y connais pas grand chose en Macro j'espère que quelqu'un saura m'aider.

 

Merci d'avance pour vos réponses.

 

Guillaume

Pour le material regarde cette macro elle pourra surement t'aider:

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

Pour les propriétés tu trouvera dans le menu de ce chapitre, lire une propriété et écrire une propriété:

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

Regarde si tu trouve ton bonheur et essaie de modifier à ton gout.

Sinon sans aucune connaissance en macro il y à les outils Visiativ (MyCad-Intégration) qui fait ce que tu demande sans aucune connaisance en macro et en lot (appliquer sur un dossier ou un assemblage et tous les enfants:

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

1 « J'aime »

Merci pour ta réponse.

J'ai réussi à me débrouiller pour le changement d'unité des masses et l'application du matériau.

Pour les propriétés, je vais essayer de voir avec ton lien.

Et mes connaissances en macro s'arretent à quelques cours de VBA sur excel en licence.

Idem mais grace à ce site j'ai réussi à me débrouiller avec souvent un peu d'aide sur ce forum.

1 « J'aime »

Salut,

Tu peux aussi regarder du coté du planificateur de tache qui te permet d'appliquer des propriétés personalisées à plusieures pièces ou dossier sans avoir besoin de VBA.

1 « J'aime »

Bonjour,

A mon avis il y a plus simple que les liens donnés au-dessus :

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

Bien sûr, sur la ligne avec la fonction "SetMaterialPropertyName2" tu remplaces les valeurs entre guillemets à ta convenance.

Cordialement,

4 « J'aime »

Merci @d.roger pour ton temps.

T'as réponse est top et est juste ce qu'il me faut, le seul problème qu'il me reste est pour la partie choix du matériau.

A la place de "NomDeMaConfig" est-ce qu'il est possible d'utiliser autre chose pour appliquer la modification quelque soit la config.

Dans certain cas mes pièces ont la configuration "Défault" mais dans beaucoup de cas elle porte d'autres noms.

 

Merci d'avance 

 

Guillaume

Tu peux remplacer la ligne :

Part.SetMaterialPropertyName2 "NomDeMaConfig", "C:\xxxxxxxx\MaBaseDeMateriaux.sldmat", "NomDeMonMateriau"

Par les lignes :

Set swConfMgr = Part.ConfigurationManager
Set swconf = swConfMgr.ActiveConfiguration
Part.SetMaterialPropertyName2 swconf.Name, "C:\xxxxxxxx\MaBaseDeMateriaux.sldmat", "NomDeMonMateriau"

Cela permet de relever le nom de la configuration active et donc de travailler sur celle-ci.

Cordialement,

1 « J'aime »

Merci beaucoup, c'est parfait

 

Cordialement