x_all Posté(e) le 15 avril 2016 Partager Posté(e) le 15 avril 2016 bonjour ha les plans archicad...J'ai un nouvel archi qui à pour habitude (pas très propre) de forcer les couleurs des objets.Alors bien sur Edit bloc, RB et defducalque font des miracles, mais sur les blocs... quand ce petit malin s’amuse à forcer dans les cotes la couleur du texte, des lignes d'attaches, des flèches... c'est un peu pénible à la longue de fouiller dans les propriétés pour tout recaler en dubloc ou ducalque. Si quel qu'un à une routine qui traine je suis preneur.En lisp je crois pas m'en sortir car je rame grave avec le VB et je ne suis pas sur qu'on y arrive avec les DXF Merci quelques trucs sur autocad Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 15 avril 2016 Partager Posté(e) le 15 avril 2016 Salut, C'est faisable en pur AutoLISP (DXF) comme en Visual LISP.Je ne peux pas donner le code que j'ai écrit (privé) mais je peux t'indiquer la piste. Si le "forçage" des couleurs est défini dans le style de cote, c'est faisable sans programmation en modifiant le style de cote avec l'interface habituelle ou par programmation en mettant à 0 (couleur DuBloc) les groupes 176, 177 et 178 de la liste DXF du style de cote. Les information concernant les couleurs forcées dans les objets cote sont contenues dans les données étendues de la cote (xdata) sous l'application enregistrée "ACAD". Pour avoir la liste DXF complète, y compris les xdata:(entget (car (entsel "\nSélectionnez une cote: ")) '("*")) Pour n'avoir que les xdata qui t'interesse :(cdr (assoc "ACAD"( cdr (assoc -3 (entget (car (entsel "\nSélectionnez une cote: ")) '("ACAD")))))) Si des couleurs ont été forcées, tu devrais trouver des groupes :(1070 . 176) ; ligne de cote(1070 . 177) ; ligne d'attache(1070 . 178) ; texte de coteChacun de ces groupes est suivi d'un autre groupe 1070 avec l'index de la couleur forcée. Il "suffit" donc de substituer ces valeurs par 0 (DuBloc) pour revenir aux valeurs par défaut de la cote. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 15 avril 2016 Partager Posté(e) le 15 avril 2016 Coucou En natif :Commande : DEFDUCALQUE Et c'est fini...Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 15 avril 2016 Partager Posté(e) le 15 avril 2016 Coucou En natif :Commande : DEFDUCALQUE Et c'est fini...Amicalement Eh non, ça ne fonctionne pas quand la couleur des composants d'une cote a été forcée (via la fenêtre de propriété par exemple). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
x_all Posté(e) le 15 avril 2016 Auteur Partager Posté(e) le 15 avril 2016 ok merci pour la piste..si j'ai un peu de temps je chercherai ce week end. ça fait qqs temps que j'ai rien pondu, le lisp comme toutes les langues vivantes, si on pratique pas on perd tout... en attendant, j'ai trouvé le truc avec CORRESPROP et l'option P qui bien que non documenté donne le résultat attendu donc je récupère une cote déja modifiée dans un autre dessin dessin un coup de SSE et zou ! quelques trucs sur autocad Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 15 avril 2016 Partager Posté(e) le 15 avril 2016 J'ai voulu essayer un truc en supprimant dans les xdata concernées les groupes dont le cdr est 176, 177 et 178 ainsi que le groupe suivant, et ça fonctionne aussi. (defun c:RemoveDimColorOverrides (/ cleanup dimMod i ss) (defun cleanup (l) (cond ((null l) nil) ((member (cdar l) '(176 177 178)) (cleanup (cddr l))) (T (cons (car l) (cleanup (cdr l)))) ) ) (defun dimMod (dim / elst xdata) (and (setq elst (entget dim '("ACAD"))) (setq xdata (cdr (assoc -3 elst))) (entmod (subst (list -3 (cons "ACAD" (cleanup (cdar xdata)))) (assoc -3 elst) elst ) ) ) ) (if (setq ss (ssget "_X" '((0 . "DIMENSION")))) (repeat (setq i (sslength ss)) (dimMod (ssname ss (setq i (1- i)))) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
x_all Posté(e) le 15 avril 2016 Auteur Partager Posté(e) le 15 avril 2016 encore une fois super merci pou lala... fonction récursive, Xdata... j'ai besoin de réviser moi si je veux arriver à lire ton code... mais super merci pour la fonction et le cours de concision et d’élégance du code quelques trucs sur autocad Lien vers le commentaire Partager sur d’autres sites More sharing options...
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