bbteddy Posté(e) le 29 avril 2010 Posté(e) le 29 avril 2010 Bonjour à tous, Je souhaite, en sélectionnant une une Xref, modifier : - la couleur et le type de ligne d'un calque de cette Xref dans le dessin courant. Voila ! En fait j'ai cette action a répéter sur 3-4 calques par xref et par dessin donc je souhaiterais automatiser la partie un peu pénible de la manip... Est-ce possible ?Si oui pourriez-vous me mettre sur la piste car je ne sais pas comment agir sur les calques d'une Xref sachant que le nom de la Xref change d'un dessin à l'autre, c'est pour cela qu'il faut la sélectionner ! Merci d'avance !!!
Patrick_35 Posté(e) le 29 avril 2010 Posté(e) le 29 avril 2010 Salut Regarde la fonction (nentsel) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bbteddy Posté(e) le 29 avril 2010 Auteur Posté(e) le 29 avril 2010 heu je vais avoir besoin d'un peu plus d'aide car je n'y connait pas grand chose à part quelles que petites bidouilles ...j'avais un collègue qui avais des livres sur le lisp mais il est partie !!!Maintenant je n'ai que vous ;) @+
Patrick_35 Posté(e) le 29 avril 2010 Posté(e) le 29 avril 2010 Regarde dans Aide --> AutoLISP, Visual LISP et DXF --> AutoLISP Reference. --> Lettre N --> nentsel @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bbteddy Posté(e) le 29 avril 2010 Auteur Posté(e) le 29 avril 2010 Désolé d'être un boulet !Mais je ne maitrise pas l'anglais donc j'ai traduit le texte (avec un traducteur de la toile )Et rien a y faire je n'ai pas avancé !!!
Carboleum Posté(e) le 30 avril 2010 Posté(e) le 30 avril 2010 Un truc genre: (command "_.-layer" "_co" "253" (cdr (assoc 8 (entget (car (nentsel))))) "") tu fais un copier/coller dans la zone de commande, tu tapes sur t tu clickques un objet qui se trouve dans le layer de l'xref que tu veux modifier (Giles) a écrit un petit tutorial pour créer des raccourcis en lisp mais je ne sais pas où il l'a mis... Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
bbteddy Posté(e) le 6 mai 2010 Auteur Posté(e) le 6 mai 2010 bonjour,désolé de ne pas avoir pris le temps avant pour regarder plus en détails vos réponses. La piste que tu me propose Carboleum est dans le gout sauf que : - je souhaite sélectionner une Xref et agir sur plusieurs calques dont je connais le nomet ton code agit sur le calque de l'objet sélectionné.Et la je ne sais pas comment faire :( merci @+
Carboleum Posté(e) le 6 mai 2010 Posté(e) le 6 mai 2010 (defun c:color-xref () (setq liste-de-layers-à-éteindre '("layer1" "layer2")) (setq nom-de-l'xref (cdr (assoc 2 (entget (car (entsel)))))) (mapcar '(lambda (x) (command "_.-layer" "_co" "253" (strcat nom-de-xref "|" x) "")) liste-de-layers-à-éteindre) ) non testé ;-) Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
bbteddy Posté(e) le 6 mai 2010 Auteur Posté(e) le 6 mai 2010 Merci beaucoupSurtout que je ne comprend pas la moitié du code ;) mais j'ai pu me débrouillé une personnalisation de dessous les fagots <acronym class=dict title=. Voici le code qui fait exactement ce que je veux : (defun c:xtr () (setq nom-de-xref (cdr (assoc 2 [surligneur](entget (car (entsel)[/surligneur]))))) (setq liste-de-calques1 '("*")) [surligneur](mapcar '(lambda (x)[/surligneur] (command "_.-layer" "in" [surligneur](strcat nom-de-xref "|" x) ""))[/surligneur] liste-de-calques1) (mapcar '(lambda (x) (command "_.-layer" "ra" (strcat nom-de-xref "|" x) "")) liste-de-calques1) (setq liste-de-calques2 '("ST_N_Murs BA" "ST_N_Murs BA Hach" "ST_N_Murs Agglo")) (mapcar '(lambda (x) (command "_.-layer" "ac" (strcat nom-de-xref "|" x) "")) liste-de-calques2) (setq liste-de-calques3 '("ST_N_Murs BA" "ST_N_Murs Agglo")) (mapcar '(lambda (x) (command "_.-layer" "co" "4" (strcat nom-de-xref "|" x) "")) liste-de-calques3) (mapcar '(lambda (x) (command "_.-layer" "tl" "tiret" (strcat nom-de-xref "|" x) "")) liste-de-calques3) (setq liste-de-calques4 '("ST_N_Murs BA Hach")) (mapcar '(lambda (x) (command "_.-layer" "co" "3" (strcat nom-de-xref "|" x) "")) liste-de-calques4) (mapcar '(lambda (x) (command "_.-layer" "t" "" (strcat nom-de-xref "|" x) "")) liste-de-calques4) ) Pourriez vous m'expliquer en détail ce qui ce passe dans les zone en jaune ?Est-ce possible de simplifier le code dans les cas ou je n'est pas de liste de calque ?Pourquoi as tu mis un "_." devant -layeur ou "_" devant co dans ton code ? MERCI @+
Carboleum Posté(e) le 6 mai 2010 Posté(e) le 6 mai 2010 (entget (car (entsel))) renvoie la liste des caractéristiques de l'objet cliqué. Cette liste est la façon dont AutoCAD garde les objets en mémoire et les traite (en quelques sortes)Tu peux faire des tests sur une ligne, un texte, etc.En modifiant cette liste, tu peux modifier l'objet en question. mapcar applique une fonction à tous les membres d'une liste. Demandes à Google, il te trouvera certainement quelques tutoriels intéressant. Attention: Le lisp utilisé sous AutoCAD est un dialecte, ce qui veux dire qu'il ne comprend pas tout à fait d'autres dialectes lisp. Mais mapcar est une fonction commune à la plupart des lisps. strcat est très bien expliqué dans le help d'autocad. Ici, elle permets d'ajouter le nom de l'xref au début du nom du layer; car c'est comme celà que AutoCAD traite les layers des xrefs. Le _ permet de se libérer de la contrainte de la langue/ En effet, AutoDesk a traduit ses commandes dans d'autres langues que l'anglais initial. Mettre un _ devant la commande anglaise permet au versions localisées (dans une autre langue) de la comprendre. Si tu as d'autres question, n'hésites pas! Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
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