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...
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
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
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
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é.
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).