Macro pour lancer et valider le smartproperties

Bonjour,

Je souhaite faire une macro afin de lancer le smartproperties d'axemble et le valider afin de pouvoir mettre à jour certaine propriétés pilotées uniquement par le smartproperties.

Le problème je ne connait pas le vba et que l'enregistreur de macro ne semble pas fonctionner pour cette macro qui semble être pourtant plutôt simple.

Le but est d'ensuite incorporer cette macro pour en faire une macro feature qui mettrait à jour les propriétés de la pièces à chaque changement.

J'ai beau regarder sur google et autre je dois pas taper les bons éléments de recherche pour lancer une macro depuis une macro SW...

Bonjour,

Comment tu veux lancer cette macro ? Avec un bouton ? Un raccourcis clavier ? A l'ouverture d'un fichier ?

 

A chaque modification du fichier car on recupère la designation de la pièce pour faire nos commande automatiquement avec notre ERP et il faut que la largeur de bande ainsi que la longueur dans la designation se mette à jour et cela se fait uniquement lors du lancement de smartproperties.

 

EDIT: D'ou le souhait d'incorporer cette macro dans une macro feature

Pour ceux à qui cela ne parle pas

http://www.lynkoa.com/tutos/r%C3%A9alisation-dune-macro-fonction-dans-solidworks#

 

Je pense que ton salut se trouve dans l'utilisation de l'utilitaire Axemble CustomToolBar peut-être couplé à LocalHelp.

Des infos intéressantes ici :

http://www.lynkoa.com/forum/solidworks/solidworks-2014-mycadtools-localhelp-l-ouverture

Ci joint l'aide de CulstomToolBar.


customtoolbar_fr.chm

Et l'aide de LocalHelp


localhelp_fr.chm

Le problème c'est que 1 pièce sur 500 seulement à beson de cette macro donc je ne peux pas la lancer via Custom Toolbar / local help

Je vois plutot a macro feature mais pour cela il faudrait que je fasse un macro qui lance une autre macro :SmartProperties 2014-Auto.swp et qui ne se trouve pas dans le même répertoire que la premiere macro

Exemple répertoire courant des macro C:\Macro et celle de smartproperties dans C:\Smartproperties

Et ce avec Run macro surement

Ah ok, donc pour appeler une autre macro dans un autre répertoire, ceci devrait marcher :

http://help.solidworks.com/2010/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISldWorks~RunMacro2.html

 

Ah mais je viens de relire, en fait il n'y a probablement pas besoin du SmartProperties.

Quelles sont les propriétés personnalisées mises à jour ?

 

Question subsidaire :

Comment être sûr que la personne lancera plus la macro que validera le smartproperties ?

J'avais trouvé la même chose sauf RunMacro au lieu de RunMAcro2, j'essais ça et je repasse ensuite dire le résultat.

Sinon comment être sur que la personne lance la macro en fesant une feature macro car elle se lance manuellement pour la 1ère fois si j'ai bien compris et ensuite elle se lance toute seule à chaque modification voir exemple macro centre de gravité ci-jointe (mais le code est vérouillé par l'auteur ->Axemble)

 

EDIT : pour les propriétés à mettre à jour elles sont multiples suivant le type de pièce

1-) Longueur et largeur d'une tôle pour ce qui est en tôlerie

2-) Longueur de bande calculé en fonction du type de la bande bande

   - PVC = Lgcourroie+4‰

   - Modulaire = Lgcourroie+100mm

   - .....

3-) Désignation qui reprend parfois certaine des propriété cité ci-dessus


macro_-_centredegravite_2012-12-01.swp
1 « J'aime »

Vu que tu as la maintenance MyCAD, demande leur directement, et donne nous la réposne ici après :)

Question posé à la maintenance merci @.PL

La macro en elle même fonctionne bien, elle se lance, insert la macro dans l'arborescence de la pièce, lance le smartproperties le valide. Ensuite si on fait la moindre modification de côte elle se lance bien par contre j'ai un soucis suivant la méthode employée cela plante.

Si je modifie une côte et valide dans la boite de dialogue puis fait Ctrl+Q ou reconstruire, pas de soucis.

Par contre si je modifie la côte et reconstruit dans la boite de dialogue avant de valider alors le smartproperties plante.

Si quelqu'un à une idée pour contourner cela le code de la macro est joint dans le fichier texte (impossibie de le mettre dans la réponse car réponse trop longue)

Pour le plantage la maintenance n'a pas d'idée c'est pourquoi je fait appel à la communauté!

Voici la réponse de la maintenance:

"Le problème doit venir qu'on essaie de lancer un AddIn et Solidworks ne doit pas aimer cela pendant le déroulement d'une macro feature."

 

Pour l'instant je regarde dans le smartproperties en essayant d'ajouter une propriété de type executer avec option attendre la fin de l'application ou avec remettre à jour les propriété.


smartproperties_auto.txt

Désolé si la maintenance n'a pas trouvé de solution, j'ai bien peur qu'il n'en existe pas !

Pas trouvé mieux, je cloture le sujet.

Pas trouvé mieux, je cloture le sujet.

Bonjour;
Je me permet de déterrer ce sujet (7ans quand même)…
il est possible de d’appeler le Smartproperties depuis une autre Macro (utilisable éventuellement avec l’outil Intégration.
Dans le Répertoire d’installation des outils Visiativ :
Recherchez et éditez (avec l’éditeur de Macro Solidworks) SmartProperties.swp
Cherchez le N° ToolbarID et le N° associé à « Set swDCAddIn = swApp.GetAddInObject »{…}")

Ensuite pour initialiser et lancer les Smartproperties:

Sub main()
    Dim swApp                   As Object
    Dim swModel                 As Object
    Dim swDCAddIn               As Object
    Dim strDllFileName          As String
    Dim strExecutablePath       As String
    Dim strRegFileName          As String
    Dim lStatus                 As Long
    Dim retval                  As Long
    Dim ToolbarId               As Long
    
    
    On Error Resume Next
    
    ToolbarId = ***Le N° du ToolBarID***        'Attention, il faut recuperer le numero de la toolbar SmartProperties depuis la macro "Smarproperties_Auto.swp" la plus recente
   
   'On récupére l'application SW
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    If swModel Is Nothing Then
        MsgBox ("Pas de document actif")
        End
    Else 
Dim stPathMacro As String
        stPathMacro = swApp.GetCurrentMacroPathName
        strRegFileName = Replace(stPathMacro, "-Auto.swp", ".dll")
        strDllFileName = strRegFileName
               
        'on initialise l'Add-ins
        lStatus = swApp.LoadAddIn(strDllFileName)
        
        'on récupére l'Add-ins (Attention, il faut recuperer le numero de l'app SmartProperties depuis la macro "Smarproperties_Auto.swp" la plus recente)
        Set swDCAddIn = swApp.GetAddInObject("{***XXXXX-XXX-XXXX***}")
        
....
            'on lance SmartProperties
             swDCAddIn.OpenAndValidateSmartProperties

End If 

End Sub

Attention: les Numéros ToolBarID et de AppSmarproperties changent à chaque nouvelles mises à jours des outils MyCad… (Et leur emplacement aussi).

Cordialement.