Aller au contenu

Macro


mateo

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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 @)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

post-65493-0-34635200-1477667813_thumb.jpg

Lien vers le commentaire
Partager sur d’autres sites

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 calques

2 - QSELECT critère: calque

3 - déplacer l'objet sélectionné à l'endroit voulu

4 - 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!

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

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

Lien vers le commentaire
Partager sur d’autres sites

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 @)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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!

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité