MacroFeature : SaveAs dans la fonction Rebuild

Bonjour, 

Je suis entrain de créer une macro feature qui ajoute un numéro de plan à mes dessins et qui enregistre une version .pdf et .slddrw à un endroit précis.

Le code dans ma fonction Rebuild et Edit appelées par ma macro feature est identique, mais lorsque je reconstruit mon dessin, mon plan n'est pas enregistré (la fonction SaveAs retourne False), alors que quand je clique sur ma macro feature et que je clique sur "Editer la définition", ça marche. J'ai vérifié, ma fonction Rebuild est bien appelée, mais ça ne sauvegarde pas, alors que pour Edit ça fonctionne, en étant exactement le même code. Est ce qu'il y a un sortilège obscur que je ne connais pas?

Est ce que vous arrivez a sauvegarder dans la fonction Rebuild de vos macros feature?

(Je suis sous Solidworks Pro 2017 Sp3.0)

En vous remerciant d'avance,

Gauthik

A noter que j'utilise cette méthode : http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldocextension~saveas.html

Et que la valeur des paramètres "Errors" et "Warnings" est 0 dans la fonction rebuild et edit. La seule différence est que d'un coté ça retourne False (Rebuild) et de l'autre True (Edit).

Bonjour,

Je n'ai jamais fait de macros feature mais à ce que je lis ICI, il y a manifestement des limitations à ce qu'il est possible de faire dans la fonction Rebuild, la fonction SaveAs en fait probablement parti.

Cordialement,

1 « J'aime »

Bonjour, merci de votre réponse.

En effet j'ai lu également qu'il y avait des limitations sur cette fonction (lien), en revanche il n'y est pas vraiment écrit qu'il est impossible d'enregistrer. J'ai essayé de feinter le truc en lançant une macro qui enregistre dans la fonction rebuild (Méthode RunMacro2), mais ça ne fonctionne pas non plus. Une des dernières pistes qu'il me reste c'est de vérifier si le document actif ne change pas durant la fonction rebuild, et essayer avec la méthode GetSelections3, (comme j'ai pu le lire sur ce forum).

Pour le moment j'ai un bouton macro a cliquer et ça fonctionne parfaitement, mais mon coté perfectionniste me pousse à n'avoir aucun bouton macro a cliquer :), mais au pire si je trouve pas ça ne sera pas bien grave.

Bonjour,

Je n'ai pas essayé, mais il est probablement possible de coupler votre macro feature avec un événement. Resterait à mettre le code d'enregistrement sur l'event.

Ou créer une macro d'abonnement aux événements qui est lancée à l'exécution de SW.

1 « J'aime »

Bonjour, en effet j'avais lu quelque part qu'on pouvait utiliser les events. A première vue, cela n'est plus une simple macro, cela nécessite de créer un add-in solidworks. Quand j'aurais du temps libre je me renseignerais là dessus. Merci de votre réponse.

Bonjour,

Pas besoin de créer un addin pour gérer les évents. Vous pouvez les gérer par une simple macro en VBA qui est exécutée à l'ouverture de SW. Regardez sur le net, on trouve pas mal de tutos.

Les FeatureMacro sont plus utilisées pour de la mise à jour de données dans un modèle.

Dans votre cas, je passerai par les évents sachant qu'un numéro de pièce n'as pas besoin d'être mis à jour à chaque reconstruction.

1 « J'aime »

Super, je ne connaissais pas cette technique. En effet j'ai trouvé des exemples de codes où ils utilisent les events. ça correspond à ce que je voulais faire. Je vais pouvoir créer des macros encore plus efficaces avec ces nouveaux outils. Merci pour votre aide !