CADxp: Macro - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Macro tentative d'automatisation d'un processus très répétitif

#1 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 28 octobre 2016 - 09:50

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
0

#2 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6874
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

  Posté 28 octobre 2016 - 10:21

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#3 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 28 octobre 2016 - 13:59

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



Voir le messagerebcao, le 28 octobre 2016 - 10:21 , dit :

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

0

#4 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4504
  • Inscrit(e) : 20-juin 03

Posté 28 octobre 2016 - 14:41

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
0

#5 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6874
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 28 octobre 2016 - 16:15

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#6 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 28 octobre 2016 - 16:22

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


Voir le messagerebcao, le 28 octobre 2016 - 16:15 , dit :

Re,

Quelle pièce jointe ?!

Si tu pouvais illustrer ce que tu veux faire, ce serait bien ?

Christian

Fichier(s) joint(s)

  • Fichier joint  Model.jpg (83,38 Ko)
    Nombre de téléchargements : 23

0

#7 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6874
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 29 octobre 2016 - 09:23

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#8 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7836
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 29 octobre 2016 - 20:20

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 ...
Les bases AutoLisp
0

#9 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 02 novembre 2016 - 08:23

Voir le messagerebcao, le 29 octobre 2016 - 09:23 , dit :

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

#10 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 02 novembre 2016 - 09:15

Voir le messagedidier, le 29 octobre 2016 - 20:20 , dit :

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

#11 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4504
  • Inscrit(e) : 20-juin 03

Posté 02 novembre 2016 - 10:42

Citation

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
0

#12 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6874
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 02 novembre 2016 - 17:42

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#13 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 03 novembre 2016 - 09:07

Voir le messagerebcao, le 02 novembre 2016 - 17:42 , dit :

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 logiciel
Le .dwg montre le résultat final.
0

#14 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4504
  • Inscrit(e) : 20-juin 03

Posté 03 novembre 2016 - 10:18

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)

Fichier(s) joint(s)


Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
0

#15 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 03 novembre 2016 - 11:16

Voir le messagebonuscad, le 03 novembre 2016 - 10:18 , dit :

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

#16 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7836
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 03 novembre 2016 - 11:29

Coucou

Il ne m'a pas été possible de télécharger le fichier, le lien semble inactif
J'aurais aimé regarder dans le sens de ce que je proposais
Il est où le fichier ?

Éternel débutant ...
Les bases AutoLisp
0

#17 L'utilisateur est hors-ligne   mateo 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-octobre 16

Posté 03 novembre 2016 - 13:24

Voir le messagedidier, le 03 novembre 2016 - 11:29 , dit :

Coucou

Il ne m'a pas été possible de télécharger le fichier, le lien semble inactif
J'aurais aimé regarder dans le sens de ce que je proposais
Il est où le fichier ?



Problème réglé, on va y arriver... lien valide

merci
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)