Bonjour à tous,
J'importe régulièrement des fichiers (types assemblages et pièces) de fournisseurs et avant de travailler avec ceux-ci, j'effectue au préalable un diagnostic d'import et parfois des reconnaissances des fonctions. Néanmoins, je trouve ça fastidieux de le faire pour chaque "fichier" d'un assemblag (voir fichier joints). Y'a t'il moyen de faire ça plus rapidement et ainsi effectuer cette tache pour une batch de fichier ?
Merci pour votre aide
diagnostic_reconnaissance_fonctions_batch_fichiers.png
Si vous avez une version Premium, peut-être avec le planificateur de tâche.
Sinon, vous pouvez enregistrer l'asm en tant que prt puis lancer le diag (si vous n'avez pas absolument besoin de conserver l'asm).
Bonjour StefBeno,
Je crois avoir la bonne licence pour faire ce genre de chose. Une idée de la procédure/marche à suivre pour faire cela ?
Merci
Malheureusement non, je n'ai pas de license premium...
Bonjour ,
d'abors insérer la tâche d'import , (le fichier va s'enregistrer ou le fichier d'origine est.
et à mon avis pour le diagnotisc d'import , sa doit être dans les taches personnalisée , il faut faire une macro pour ça , mais je ne connais pas la commande.
Cordialement
capture.jpg
Bonjour,
Si en plus du planificateur de tâche il faut faire une macro alors ce n'est peut-être pas la peine de s'enquiquiner avec celui-ci ... Ton besoin est tout à fait réalisable par macro, bien sûr cela dépend de ton degré de connaissance sur le sujet. Voici une liste des fonctions à utiliser permettant d'analyser un assemblage et d'effectuer un diagnostic d'import et une reconnaissance de fonctions pour chaque élément fils :
Ouverture de l'asm puis :
- ActiveDoc (ISldworks)
- GetRootComponent3 (IConfiguration)
- GetChildren (IComponent)
- GetModelDoc2 (IComponent)
- OpenDoc6 (ISldworks)
- ImportDiagnosis (IPartDoc)
- CallBack("fworks@FWPlaybackManager", 0, "......") (ISldworks)
- SaveAs (IModelDocExtension)
- CloseDoc (ISldworks)
Puis on boucle sur l'élément suivant jusqu'au dernier fils.
On n'oublie pas de sauvegarder l'asm à la fin du traitement.
Ca peut faire une macro assez sympathique et qui serait sûrement bien utile à bon nombre d'utilisateurs ...
Cordialement,
Bonjour d.roger,
Je relance le sujet. J'ai la même problématique que charleslr.
Je trouve l'étape de reconnaissance de fonction longue et fastidieuse lorsqu'il s'agit d'un assemblage complexe. Le fait de passer par une macro me semble la meilleure solution.
Ne connaissant pas vraiment le langage VBA, serait il possible d'avoir une macro susceptible d'éxécuter cette fonction?
J'ai tenté d'enregistrer la macro avec les fonctions ci-dessus mais j'ai ni le temps, ni les compétences pour le faire.
Je suis sous SW 2019 STD.
Merci,
Cordialement, Thomas
Bonjour,
Si j'ai du temps prochainement, je peux éventuellement me lancer sur le sujet. J'ajouterai quelques fonctions suplémentaires, nottament le choix de l'export de l'assemblage (personnellement j'exporte les assemblages en .sldprt afin d'alléger mes conceptions).
Charles
Bonjour charleslr,
Merci beaucoup pour ces éléments de réponse.
Personnellement, je n'ai pas besoin d'enregistrer mes assemblages en .sldprt car j'ai justement besoin de cette conception pour la réalisation des pièces en atelier.
Dans la macro de Ulf, je bloque au niveau de :
longstatus = Part.ImportDiagnosis(True, False, False, 0) : ( propriété ou méthode non géré par cet objet).
Une piste?
Thomas.
Bonjour,
Oui pour une piste : la fonction "ImportDiagnosis" ne fonctionne que sur des pièces, pas sur les assemblages.
Cordialement,
Désolé je ne vais pas avoir le temps de regarder ça pour le moment. Je vais essayer de m'y plonger en Février.
Cdtl
Bonjour d.roger,
Merci pour la réponse,
Dans ce cas, comment lui dire de faire la reconnaissance pour chaque pièce d'un assemblage et reboucler sur la suivante?
Peut-être devrais tu dans un premier temps essayer d'avoir un code qui fonctionne sur une pièce puis on verra pour la suite pour un assemblage ?
Il faudra ensuite faire attention dans le cas ou ton assemblage est composé plusieurs fois de la même pièce. Moi je lirai l'architecture de l'assemblage, lorsque je vois un nouveau nom de fichier je mets le nom du fichier dans une liste, puis une fois terminée j'effectue le diagnostic d'import sur les fichiers de la liste. Il y a peut-être plus simple, mais je suis mécanicien, pas informaticien :-).
1 « J'aime »
Toutes les fonctions nécessaires sont déjà données dans un message précédent, pour rappel :
Voici une liste des fonctions à utiliser permettant d'analyser un assemblage et d'effectuer un diagnostic d'import et une reconnaissance de fonctions pour chaque élément fils :
Ouverture de l'asm puis :
- ActiveDoc (ISldworks)
- GetRootComponent3 (IConfiguration)
- GetChildren (IComponent)
- GetModelDoc2 (IComponent)
- OpenDoc6 (ISldworks)
- ImportDiagnosis (IPartDoc)
- CallBack("fworks@FWPlaybackManager", 0, "......") (ISldworks)
- SaveAs (IModelDocExtension)
- CloseDoc (ISldworks)
Puis on boucle sur l'élément suivant jusqu'au dernier fils.
On n'oublie pas de sauvegarder l'asm à la fin du traitement.
Cordialement,
1 « J'aime »
Merci d.roger pour le rappel du message précedent.J'ai, malgré tout, cherché une piste en lisant ce post avant de me poser ses questions.
@charleslr, ok pour février, tiens moi au courant si tu as des nouveaux élements, je vais aussi manquer de temps jusqu'à fin mars.
Merci messieurs pour vos contributions.
Cordialement,
Bonjour,
Vieux sujet mais sur lequel j'ai avancé durant les dernières semaines.
Le principe de ma macro est le suivant:
Regarde l'extension du fichier d'entrée (SLDASM, SLDPRT, STP, X_T, ...) et par divers moyens va le sauvegarder en .SLDPRT et fermer le fichier modèle. Ensuite il va effectuer un diagnostic d'import sur la pièce sauvegardée, réparer les faces défectueuses, bloquer la pièce et sauvegarder cette nouvelle pièce.
En pièce jointe la macro en VBA.
Je vous laisse la modifier à votre guise et ou l'améliorer au besoin. N'hésitez pas à poster vos révisions futurs !
import_diag_12-07-2021_1.swp
1 « J'aime »