Invité Sylvainhinard Posté(e) le 9 décembre 2004 Posté(e) le 9 décembre 2004 Bonjour, Je cherche à programmer en LISP, pour commencer je souhaiterais savoir comment faire pour changer le calque d'une entité : par exemple je choisi un objet quelquonque, (ligne, polyligne,cercle...) et je souhaite qui passe du calque TOTO au calque TOTO1? Comment faire la même chose que précedemment mais en filtrant les entité : par exemple passer du calque TOTO a TOTO1 tout les cercle rouge? Bon je sais certain vont trouver cela facile mais il faut bien commencer non?
Krynn Posté(e) le 9 décembre 2004 Posté(e) le 9 décembre 2004 avec les menu express de la version complet, il y a la commande "ssx" qui selectionne les objet souhaité. Par exemple:^C^C(load "ssx");ssx;;e;hatch;;_draworder;p;;ar; - appelle "ssx" - cheche toutes les hachures - les affiche en arrière. ^C^C(load "ssx");ssx;;c;1;e;circle;;changer;p;;pr;ca;toto1;; selectionne les entités "cercle" "rouge" et les mets dans le calques toto1apres dans un lisp il faut mettre cette commande COMMAND c'est une solution facile a mettre en place.
bonuscad Posté(e) le 9 décembre 2004 Posté(e) le 9 décembre 2004 Voici un exemple pas trop long, qui fonctionne un peu à la façon des Express (par pointage) Tu peux améliorer le filtre pour y rajouter d'autres options (couleur, type de ligne, etc..)Cela peut être fait dans une boucle avec (getkword) et construire ainsi la liste de filtre pour affiner ta sélection. Mais déjà pour débuter simplement ;) je te laisse décortiquer (defun c:typ2calq ( / model_ent js vers_calqu ent n) (while (null (setq model_ent (entsel "\nChoix d'une entité type: ")))) (setq model_ent (entget (car model_ent))) (setq js (ssget "_X" (list (assoc 0 model_ent)))) (cond (js (while (null (setq vers_calqu (entsel "\nChoix de l'entité pour calque de destination: ")))) (setq vers_calqu (assoc 8 (entget (car vers_calqu))) n 0) (repeat (sslength js) (setq ent (entget (ssname js n))) (entmod (subst vers_calqu (assoc 8 ent) ent)) (setq n (1+ n)) ) (princ (strcat "\n" (itoa n) " entité(s) " (cdr (assoc 0 model_ent)) " sont sur le calque " (cdr vers_calqu))) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 9 décembre 2004 Posté(e) le 9 décembre 2004 Salut Bon, bah c'est mon tout d'apporter ma petite pierre Pour répondre à ta première question, il faut changer dans l'entité sélectionnée le code dxf 8 exemple pour une sélection unique(setq ent (entget (car (entsel)))) (setq ent (entmod (subst (cons 8 "TOTO1") (assoc 8 ent) ent))) (entupd (cdr (assoc -1 ent))) Maintenant, pour faire un filtre sur une selection multiple que sur des cercles de couleurs rouge(setq sel (ssget (list (cons 0 "circle") (cons 62 1)))) Le code dxf 0 correspond au type d'entité et le code 62 à la couleur @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
rebcao Posté(e) le 10 décembre 2004 Posté(e) le 10 décembre 2004 on pourrait simplifier avec : (command "chprop" ENT "CA" "TOTO1" "") 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 @)
Invité Sylvainhinard Posté(e) le 10 décembre 2004 Posté(e) le 10 décembre 2004 Merci beaucoup pour vos précieux renseignement, je retourne au travail... J'ai eu les renseignement qu'il me fallait. La prochaine fois j'aurais besoin d'une leçon sur les boucles... "I'll be back"...Vive CADxp!!!
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