Macro propriété configuration

Bonsoir,

 

Je recherche une macro qui permettrait de mettre à jour les propriétés SOLIDWORKS d'une configuration.

Actuellement j'utilise ces deux lignes de code pour remettre à jour les propriétés mais la mise à jour se fait sur le document et non sur une configuration spécifiée.

 

bRet = swmodel.DeleteCustomInfo2("", "ma_propriété")

bRet = swmodel.AddCustomInfo3("", "ma_propriété", swCustomInfoText, "ici la valeur de la propriété")

 

 

Auriez-vous quelques informations à me fournir à ce sujet.

 

Par avance, merci

 

 

Sylvain

 

 

 

 

 

 

 

2 « J'aime »
Bonsoir, Je te conseille de regarder ce lien http://help.solidworks.com/2013/English/api/swdocmgrapi/get_configuration_information_example_vbnet.htm

Au risque d'être un "peu lourd", pourquoi ne pas utiliser les Smartproperties (utilitaire Axemble en vente sur Lynkoa) plutôt que de lancer des macros (perso je ne maitrise pas, c'est peu être pour ça !!!!).

 

Pour les gens qui ne maitrisent pas la programmation des macros, ce type d'utilitaire c'est quand même ce que l'on fait de mieux,non?

 

Pour info, je ne touche pas un centime sur la vente de l'utilitaire Smartproperties !!!!!!!!!

 

 

http://www.lynkoa.com/store/fr/tools-et-macros/utilitaire-smartproperties.html

 

4 « J'aime »

@flegendre

Ii est vrai que smartproperties remplie cette fonction, mais il est complex car il en fait plus  

Bonjour,

 

Il faut utiliser l'api CustomPropertyManager ou l'on spécifie le nom de la configuration a modifier "" pour les propriétés personnalisées.

 

Ensuite sur l'objet vous avez les API Add, Get , Set , et Delete pour les créer, récupérer, modifier et suppimer :

 

http://help.solidworks.com/2013/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ICustomPropertyManager_members.html

 

@Lucas Prieur : ton lien est l'API a utiliser si le document est fermé

 

Exemple :

 

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Dim swModelDocExt As ModelDocExtension

Dim swCustProp As CustomPropertyManager

Dim val As String

Dim valout As String

Dim bool As Boolean

 

Sub main()

 

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swModelDocExt = swModel.Extension

' Get the custom property data

 

Set swCustProp = swModelDocExt.CustomPropertyManager("Nom de configuration")

 

bool = swCustProp.Get4("Property_Name", False, val, valout)

 

Debug.Print "Value: " & val

Debug.Print "Evaluated value: " & valout Debug.Print "Up-to-date data: " & bool

 

End Sub

7 « J'aime »

Bonjour,

 

Merci pour ces réponses, je vais regarder ça.

Pour ce qui est de SMARTPROPERTIES je l'utilise. En fait j'ai un bouton dans le SMARTPROPERTIES qui lane une macro avec une requête SQL qui pointe vers l'ERP.

A partir des valeurs d'une propriétés je récupère quelques paramètres de l'ERP pour les remettre dans les propriétés SOLIDWORKS.

 

Je vous tiens au courant

 

Merci

 

sylvain

 

 

2 « J'aime »

Bonjour

Voici un exemple qui complete la réponse de prossignol

 

J'utilise cette macro pour supprimer des propriétés dans toutes les configurations des pièces et des assemblages :

 

Option Explicit
    Dim swApp               As SldWorks.SldWorks
    Dim swModel             As SldWorks.ModelDoc2
    Dim swModelDocExt       As SldWorks.ModelDocExtension
    Dim swConfig            As SldWorks.Configuration
    Dim swCustPropMgr       As SldWorks.CustomPropertyManager
    Dim i                   As Long
    Dim vConfName           As Variant
    Dim valOut              As String
    
Public Enum swDocumentTypes_e
    swDocNONE = 0       '  Used to be TYPE_NONE
    swDocPART = 1       '  Used to be TYPE_PART
    swDocASSEMBLY = 2   '  Used to be TYPE_ASSEMBLY
    swDocDRAWING = 3    '  Used to be TYPE_DRAWING
    End Enum

Sub main()
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
  'Suppression des proprietes dans l'onglet Spécifique à la configuration
  If swModel.GetType <> swDocDRAWING Then
    vConfName = swModel.GetConfigurationNames
    For i = 0 To UBound(vConfName)
        Set swConfig = swModel.GetConfigurationByName(vConfName(i))
        'Debug.Print "  Configuration = " & vConfName(i)
        Set swCustPropMgr = swConfig.CustomPropertyManager
        
        swCustPropMgr.Delete "Author"
        swCustPropMgr.Delete "Project"
        swCustPropMgr.Delete "Status"
        swCustPropMgr.Delete "Number"
 
   Next i
 End If
 
End Sub

2 « J'aime »

Pour un minimum de modification avec votre code

il suffit de specifier le nom de la config a la place du champ vide

 

bRet = swmodel.DeleteCustomInfo2("Nom config", "ma_propriété")

bRet = swmodel.AddCustomInfo3("Nom config", "ma_propriété", swCustomInfoText, "ici la valeur de la propriété")

 

Mais il est conseillé de passer par la reponse de prossignol

8 « J'aime »

Tu as réussi à mettre à jour ta macro ???

1 « J'aime »

Bonjour à tous

 

Merci de vos réponses qui viennet de solutionner le problème.

 

 

Sylvain