mateo Posté(e) le 28 octobre 2016 Posté(e) le 28 octobre 2016 Bonjour à tous, jusqu'à présent j'ai toujours trouvé les réponses à mes questions sur ce forum sans avoir à les formuler...Aujourd'hui c'est un peu différent. Je vous explique, je travaille avec un logiciel qui me permet d'exporter un fichier en .dxf que je traite ensuite avec AutoCAD LT.Ce fichier contient plusieurs objets qui sont assignés chacun à un calque (exemple: le calque marche_1 contient la marche numéro 1 d'un escalier, le calque pot_dep contient le poteau de départ ...etc.)Ces calques sont tous superposés, si je les dégèle tous, j'obtiens une superposition de tous mes objets.A chaque export, je dois donc: 1 - dégeler un calque,2 - déplacer l'objet qu'il contient,3 - répéter l'opération avec tous les calques, un par un. J'ai essayé de créer une macro (qui résoudrait partiellement le problème): ^C^C-PL;L;*;_qselect;\_move;\Le problème est que la commande qselect arrête la macro, seule la commande select permettrait de poursuivre, mais je ne vois pas comment l'utiliser dans ce cas... De plus est-il possible d'automatiser entièrement le process en faisant en sorte que la commande se répète pour chaque calque jusqu'à qu'il n'y en ai plus et qu'elle déplace elle-même les objets? Merci pour votre aide.Mat
rebcao Posté(e) le 28 octobre 2016 Posté(e) le 28 octobre 2016 Bonjour, Avec la commande SELECT, la MACRO ressemblera à ça ( ^C^C-PL;L;*;_qselect;\_move;\) : ^C^C_-layer;L;*;;select;\_move;P;;évites d'utiliser des ALIAS de commande dans les MACROS... Il manquait aussi un ; après LAYER.Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mateo Posté(e) le 28 octobre 2016 Auteur Posté(e) le 28 octobre 2016 Ah merci merci pour ces précisions! Malheureusement, cette macro ne résout pas mon problème, car je ne peux pas différencier mes calques avec la commande select.... comme tu verras sur la pièce jointe j'ai littéralement un tas d'éléments. et je dois pouvoir les sortir un a un en les différenciant. Il me faut donc, soit dégeler les calques un par un, soit pouvoir sélectionner un objet en fonction du calque auquel il appartient... (d'où l'usage de selectrap) Merci pour ta réponse rapide, sache que depuis quelques années la plupart de mes problèmes sur Autocad ont été résolus par un de tes messages ou tutoriel... merci donc doublement :) Mathieu Bonjour, Avec la commande SELECT, la MACRO ressemblera à ça ( ^C^C-PL;L;*;_qselect;\_move;\) : ^C^C_-layer;L;*;;select;\_move;P;;évites d'utiliser des ALIAS de commande dans les MACROS... Il manquait aussi un ; après LAYER.Christian
bonuscad Posté(e) le 28 octobre 2016 Posté(e) le 28 octobre 2016 Bonjour, _QSELECT est effectivement un problème dans les macros car cette commande ne rend pas la main à la macro et celle ci ne peut se terminer. Il te faut peut être procéder différemment pour pouvoir profiter des filtres de qselect.En tout premier lieu il te faudrait utiliser "qselect" normalement.En deuxième étape lancer ta macro en l'ayant adaptée. (changer la pause de sélection par l'option "_previous")Ainsi tes objet filtrés précédemment seront sélectionnés. Ça oblige de scinder ta macro en 2 actions, mais c'est la seule façon qui pourra aboutir à ce que tu désire faire. Cette méthode va empêcher la répétition sur tout le dessin. Pour la répétition, peut être s'orienter encore sur une autre façon.Utiliser la propriété des Calques Verrouillés, ainsi tu pourrait faire une sélection sur "Tout" et malgré que tous les objets soient sélectionnés, seul ceux qui sont sur le calque "Déverrouillé" subiraient la modification désiré.Mais ici ce ne serait plus une macro, mais plutôt un script à utiliser pour automatiser sur le dessin complet. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
rebcao Posté(e) le 28 octobre 2016 Posté(e) le 28 octobre 2016 Re, Quelle pièce jointe ?! Si tu pouvais illustrer ce que tu veux faire, ce serait bien ? Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mateo Posté(e) le 28 octobre 2016 Auteur Posté(e) le 28 octobre 2016 Damned je pensais avoir chargé la pièce jointe... ça devrait être mieux. l'image du haut montre mes calques après le dégel global, l'image du bas montre le résultat obtenu manuellement. Bonuscad, merci pour ta réponse, j'ai donc scindé ma macro en deux: 1er bouton: ^C^C_-layer;L;*;;_qselect 2e bouton: ¨^C^C_move;_qselect dans le but de créer une boucle, mais le dernier bouton ne fonctionne pas...Désolé, je débute en macro... merci Re, Quelle pièce jointe ?! Si tu pouvais illustrer ce que tu veux faire, ce serait bien ? Christian
rebcao Posté(e) le 29 octobre 2016 Posté(e) le 29 octobre 2016 Bonjour, Très bien pour l'image, Matéo, mais je n'ai toujours pas cerné ton besoin ! Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
didier Posté(e) le 29 octobre 2016 Posté(e) le 29 octobre 2016 Coucou Et en travaillant directement dans le DXF ? Tu l'ouvres avec un éditeur de texte classique et tu remplaces les noms de calques par "remplacer"Ça devrait le faire, non ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
mateo Posté(e) le 2 novembre 2016 Auteur Posté(e) le 2 novembre 2016 Bonjour, Très bien pour l'image, Matéo, mais je n'ai toujours pas cerné ton besoin ! Christian Bonjour, en fait mon besoin est très simple: l'image du haut montre l'état du fichier une fois tous les calques dégelés, chaque objet appartient à un calque différent. Ces sont tous "empilés" les uns sur les autres. A partir de là, je dois arriver au résultat de l'image du bas, c'est à dire, disperser les objets.Pour ce faire, manuellement ça donne: 1 - dégeler tous les calques2 - QSELECT critère: calque3 - déplacer l'objet sélectionné à l'endroit voulu4 - répéter 2 et 3 jusqu'à ce que tous les objets soient "dépilés" Voilà,A part ça j'espère que vous avez passé un bon week-end. Merci!
mateo Posté(e) le 2 novembre 2016 Auteur Posté(e) le 2 novembre 2016 Coucou Et en travaillant directement dans le DXF ? Tu l'ouvres avec un éditeur de texte classique et tu remplaces les noms de calques par "remplacer"Ça devrait le faire, non ? Amicalement Salut! je suis pas sûr de comprendre ton idée, l'ouverture de DXF dans l'éditeur de texte est une terra incognita pour moi...
bonuscad Posté(e) le 2 novembre 2016 Posté(e) le 2 novembre 2016 Bonuscad, merci pour ta réponse, j'ai donc scindé ma macro en deux: 1er bouton: ^C^C_-layer;L;*;;_qselect 2e bouton: ¨^C^C_move;_qselectdans le but de créer une boucle, mais le dernier bouton ne fonctionne pas...Désolé, je débute en macro... Dans la deuxième macro, tu ne dois pas ré-utiliser qselect ?!?Sans pouvoir tester, se serait plutôt:^C^C_move;_previous;\\ Autrement pour pouvoir monter un script, un retour des commandes _.-LAYER ? ; Et de ce que retourne les variables EXTMIN EXTMAX Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
rebcao Posté(e) le 2 novembre 2016 Posté(e) le 2 novembre 2016 Bonjour, Pourrais-tu mettre un dessin DWG en exemple ? Tu peux enlever tout ce qui est d'ordre confidentiel ! Je te remercie Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
mateo Posté(e) le 3 novembre 2016 Auteur Posté(e) le 3 novembre 2016 Bonjour, Pourrais-tu mettre un dessin DWG en exemple ? Tu peux enlever tout ce qui est d'ordre confidentiel ! Je te remercie Christian Bonjour, oui pas de problème!Voici le lien Le .dxf est le fichier que j'obtiens après exportation d'un autre logicielLe .dwg montre le résultat final.
bonuscad Posté(e) le 3 novembre 2016 Posté(e) le 3 novembre 2016 Mateo, Voici un script à lancer DANS ton fichier DXF.Il va traiter tout ton dessin sans intervention. Bien sur ce script sera à adapter selon chaque dessin, ou alors calculer les coordonnées de déplacement en diesel à l'aide des variables EXTMIM et EXTMAX. Ici dans l'exemple je l'ai fais en dur (avec excel ça peut ce faire rapidement)mon_script.zip Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
mateo Posté(e) le 3 novembre 2016 Auteur Posté(e) le 3 novembre 2016 Mateo, Voici un script à lancer DANS ton fichier DXF.Il va traiter tout ton dessin sans intervention. Bien sur ce script sera à adapter selon chaque dessin, ou alors calculer les coordonnées de déplacement en diesel à l'aide des variables EXTMIM et EXTMAX. Ici dans l'exemple je l'ai fais en dur (avec excel ça peut ce faire rapidement) C'est magnifique merci, et donc du coup si je veux répéter ce script sur d'autres escaliers qui auront des calques en plus (marches par exemple) ou en moins (pas de garde corps d'étage) il faut que je m'oriente vers diesel et excel...J'y connais pas grand chose dans tout ça, mon utilisation d'excel est très basique (quelques formules) et j'ai une toute petite doc sur le diesel trouvé sur le site de Christian... mais voilà un challenge intéressant! (bon, ça risque de me prendre 4 ans tout seul donc je risque de revenir vers vous souvent...) merci!
didier Posté(e) le 3 novembre 2016 Posté(e) le 3 novembre 2016 Coucou Il ne m'a pas été possible de télécharger le fichier, le lien semble inactifJ'aurais aimé regarder dans le sens de ce que je proposaisIl est où le fichier ? Éternel débutant... Mon site perso : Programmer dans AutoCAD
mateo Posté(e) le 3 novembre 2016 Auteur Posté(e) le 3 novembre 2016 Coucou Il ne m'a pas été possible de télécharger le fichier, le lien semble inactifJ'aurais aimé regarder dans le sens de ce que je proposaisIl est où le fichier ? Problème réglé, on va y arriver... lien valide merci
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant