Macro renommage propriété

Bonjour tout le monde,

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)

Auriez vous une piste ?

Merci

Bonjour;

des pistes ici…
https://help.solidworks.com/2022/English/api/sldworksapi/Get_Custom_Properties_Example_VB.htm?verRedirect=1
https://help.solidworks.com/2022/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icustompropertymanager~get6.html

https://help.solidworks.com/2022/english/api/sldworksapi/get_custom_properties_for_configuration_example_vb.htm

Il est difficile de vous répondre sans voir plus de votre code …mais il semble que votre erreur soit:

lRetVal = swCustProp.Get6("Code Article", False, ValOut, **CodArt00**, False, False)
essayez avec:
lRetVal = swCustProp.Get6("Code Article", False, ValOut,ResolvedValOut, False, False)

Cordialement.

4 Likes

Bonjour,

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)

3 Likes

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
2 Likes