lecrabe Posté(e) le 5 octobre 2018 Posté(e) le 5 octobre 2018 Hello 1) Voir le titre ... Je n'ai pas trouve sur Internet !? Mais je suis un peu moyen mou en ce moment ! 2) Soit un Bloc classique (ou Bloc dynamique) avec N attributs 3) On pose 2 questions : - Nom de l'Etiquette de Attribut 1- Nom de l'Etiquette de Attribut 2 4) On fait une selection AutoCAD "normale/classique" ... 5) On ne retient dans la selection que les N Blocs (le Nom du Bloc peut etre different)ayant les DEUX attributs (utilises ou pas, vides ou pas) 6) On demarre la boucle de traitement ... 5) On inverse le contenu des DEUX attributs ...On met a jour le bloc concerne 6) On boucle sur les N blocs concernes donc GOTO Point No 6 Merci d'avance, Bye, lecrabe Autodesk Expert Elite Team
(gile) Posté(e) le 5 octobre 2018 Posté(e) le 5 octobre 2018 Salut, Vite fait. (defun c:swapatt (/ getAtts tag1 tag2 ss i br) (defun getAtts (ent / elst atts) (while (= (cdr (assoc 0 (setq elst (entget (setq ent (entnext ent)))))) "ATTRIB") (setq atts (cons (cons (cdr (assoc 2 elst)) elst) atts)) ) ) (if (and (setq tag1 (strcase (getstring "\nEtiquette du premier attribut: "))) (setq tag2 (strcase (getstring "\nEtiquette du second attribut: "))) (setq ss (ssget '((0 . "INSERT") (66 . 1)))) ) (repeat (setq i (sslength ss)) (setq atts (getAtts (ssname ss (setq i (1- i))))) (if (and (setq att1 (cdr (assoc tag1 atts))) (setq att2 (cdr (assoc tag2 atts))) ) (progn (entmod (subst (assoc 1 att1) (assoc 1 att2) att2)) (entmod (subst (assoc 1 att2) (assoc 1 att1) att1)) ) ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
mattoti Posté(e) le 5 octobre 2018 Posté(e) le 5 octobre 2018 Trop rapide pour moi (gile)... J'avais vu un truc avec les fonctions "setpropertyvalue" (defun C:invAtt ( / valAtt1 valAtt2 cpteur nb sselect sel att1 att2) (setq valAtt1 (strcase (getstring "\nEtiquette de l'attribut 1 : "))) (setq valAtt2 (strcase (getstring "\nEtiquette de l'attribut 2 : "))) (setq cpteur 0 nb 0) (if (setq sselect (ssget '((0 . "INSERT")))) (while (setq sel (ssname sselect cpteur)) (if (and (not (vl-catch-all-error-p (vl-catch-all-apply 'getpropertyvalue (list sel valAtt1)))) (not (vl-catch-all-error-p (vl-catch-all-apply 'getpropertyvalue (list sel valAtt2)))) ) (progn (setq att1 (getpropertyvalue sel valAtt1) att2 (getpropertyvalue sel valAtt2)) (setpropertyvalue sel valAtt1 att2) (setpropertyvalue sel valAtt2 att1) (setq nb (1+ nb)) ) ) (setq cpteur (1+ cpteur)) ) ) (princ (strcat "\n " (itoa nb) " bloc(s) traité(s).")) (princ) ) Je crois que ça marche.
lecrabe Posté(e) le 5 octobre 2018 Auteur Posté(e) le 5 octobre 2018 Hello Les Jeunes Padawans C Top ! MERCI !! Bon WE, Bye, lecrabe PS: votre devoue Decapode est "tres moyen mou" aujourd'hui car il a OSE supposer qu'une autre routine de notre grand Maitre Gillesne fonctionnait pas ! Quelle Honte !! En fait il ne savait pas l'utiliser ou plutot il avait OUBLIE !! Autodesk Expert Elite Team
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