Je voudrais créer une macro pour traiter des pièces existantes :
Ces pièces ont déja une (ou plusieurs) configuration(s).
Je voudrais récupérer la propriété personnalisée « Code Article » de la configuration « 00 ».
Puis n’en récupérer que les 11 premiers caractères et ajouter un suffixe.
Ce nouveau « Code Article » permettra de renseigner des configurations qui sont créées dans la suite de la macro. Cette partie est déjà faite.
En gros ma macro doit activer la configuration « 00 » comme suit:
''' Activation de la config 00
boolstatus = swModel.ShowConfiguration2("00")
Puis récupérer la valeur de la propriété « Code Article » et par un LEFT récupérer les 11 premiers caractères dans une variable que je pourrais attribuer pour les autres configurations.
J’ai essayé cette commande, mais ça bug :
''' Récupération de la propriété Code Article existante
lRetVal = swCustProp.Get6("Code Article", False, ValOut, CodArt00, False, False)
Je vais dans le sens de @Maclane et si les lignes sont issues de la macro initiée dans ce sujet ( Macro multiplication - Macro - Forum myCAD (visiativ.com)), il faut regarder dans les déclaration de variable s’il n’y a pas un problème.
De la même façon Get ne fonctionne pas si la propriété cherchée n’existe pas (il faut ajouter un contrôle d’existence dans ce cas et la créer si besoin)
Merci à vous deux.
J’ai fait un code test qui fonctionne.
Je vais donc l’intégrer à ma macro afin que cela renseigne mes configurations de RAL .
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swConfigMgr As SldWorks.ConfigurationManager
Dim swConfig As SldWorks.Configuration
Dim vConfigNameArr As Variant
Dim stnameConfig As String
Dim boolstatus As Boolean
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim sValout As String
Dim CodArt00 As String
Dim CodArtRAL As String
Dim CodeArticle As String
Dim lRetVal As String
Dim ValOut As String
Type ConfigData
confName As String
CodArt00 As String
CodArtRAL As String
End Type
Sub main()
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
''' Récupération du document actif
Set swModel = swApp.ActiveDoc
Set swConfigMgr = swModel.ConfigurationManager
''' Récupération de la configuration active
Set swConfig = swConfigMgr.ActiveConfiguration
stnameConfig = swConfig.Name
vConfigNameArr = swModel.GetConfigurationNames
Set swModelDocExt = swModel.Extension
Set swModelDocExt = swModel.Extension
''' Activation de la config 00
boolstatus = swModel.ShowConfiguration2("00")
stnameConfig = swConfig.Name
Set swCustProp = swModelDocExt.CustomPropertyManager(stnameConfig)
''' Récupération de la propriété Code Article existante
lRetVal = swCustProp.Get6("Code Article", False, ValOut, CodArt00, False, False)
'Renvoie les onze premiers caractères du Code Article
MsgBox Left(CodArt00, 11)
''' Ajout du Code Article RAL à partir des 11 caractères gauche du Code Article
CodArtRAL = (Left(CodArt00, 11)) & "R6005"
MsgBox (CodArtRAL)
End Sub