lerom88 Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Bonjour à tous, utilisateur autoCAD depuis une paire d'années, je commence seulement à gouter aux joies des lisp et des macro-commandes.. Et je trouve cela super! Néanmoins, je suis a la recherche d'un lisp qui me permettrai de sélectionner dans un dessin un type de ligne spécifique. Pourriez vous m'aidez ?? Merci
-Olivier- Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Bonjour lerom88 et bienvenu sur le forum, Un petit truc vite fait.(defun c:seltligne (/ ss) (if (setq ss (ssget "_I" '((6 . "nom_du_type_de_ligne")))) (sssetfirst nil ss) (sssetfirst nil (ssget "_X" (list (cons 6 "nom_du_type_de_ligne") (cons 410 (getvar "ctab"))))) ) (princ) ) Il te reste à mettre le nom de ton type de ligne entre guillemets aux lignes 2 et 4. Olivier 1
lerom88 Posté(e) le 13 avril 2016 Auteur Posté(e) le 13 avril 2016 C'est exactement ce que je recherchais merci beaucoup !! Juste une petite question: est il possible d'ajouter des micro-commandes dans un lisp ? J'aimerai faire une succession de commande, puis utiliser ce lisp, puis de nouveaux des commandes, etc..
x_all Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 ou sinon, c'est intégré au spécial sélection de (gile) appel par sstl quelques trucs sur autocad
Demixav Posté(e) le 13 avril 2016 Posté(e) le 13 avril 2016 Salut... Heu... pourquoi ne pas utiliser les commandes natives d'AutoCad par le filtrage de sélection?... AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
x_all Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 compte les clics avec sstl; 1 clic et 4 lettres...2 secondes maxi si tu as pas eu ton café du matin... et franchement ne pas mettre spécial sélection dans les lisp au démarage c'est se privé de ssc, ssl, sse qui me servent plusieurs fois par jour 1 quelques trucs sur autocad
lerom88 Posté(e) le 14 avril 2016 Auteur Posté(e) le 14 avril 2016 Je ne peux pas passer par les sélections de gile car il faut cliquer sur une ligne et je cherche à ne pas utiliser la souris. Ce lisp me sert dans une "nouvelle commande" ou j'ai déja une succession de commande.
-Olivier- Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 Bonjour lerom88, Dans ce cas, ceci suffit. (if (sssetfirst nil (ssget "_I" '((6 . "nom_du_type_de_ligne")))) nil (sssetfirst nil (ssget "_X" (list (cons 6 "nom_du_type_de_ligne") (cons 410 (getvar "ctab"))))) ) Olivier
lerom88 Posté(e) le 14 avril 2016 Auteur Posté(e) le 14 avril 2016 Bonjour Olivier, merci Beaucoup ! :) Je cherche également le même style de lisp, mais cette fois ci pour sélectionner les objets d'un calque. Merci encore lerom88
-Olivier- Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 (if (sssetfirst nil (ssget "_I" '((8 . "nom_du_calque")))) nil (sssetfirst nil (ssget "_X" (list (cons 8 "nom_du_calque") (cons 410 (getvar "ctab"))))) ) Voilà !
-Olivier- Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 Si tu fait un lisp, tu peux simplifier en te contentant de créé une variable avec ton jeu de sélection, pour t'en servir plus tard. Selon la façon que tu veux sélectionner tes objet, regarde la fonction ssget. (if (setq ss (ssget "_I" '((8 . "nom_du_calque")))) nil (setq ss (ssget "_X" (list (cons 8 "nom_du_calque") (cons 410 (getvar "ctab"))))) ) Olivier
lerom88 Posté(e) le 14 avril 2016 Auteur Posté(e) le 14 avril 2016 Mais les jeux de sélection je suis obligé de les recréer dans chaque dessin non ? je vais faire le test pour les calques. Vous m'avez été d'une grande aide, je vous en remercie. lerom88
lerom88 Posté(e) le 14 avril 2016 Auteur Posté(e) le 14 avril 2016 Ca ne fonctionne pas est ce que je mis prends bien ? (defun c:selcalque (/ ss) (if (sssetfirst nil (ssget "_I" '((8 . "cotation")))) nil (sssetfirst nil (ssget "_X" (list (cons 8 "cotation") (cons 410 (getvar "ctab"))))) ) (princ) )
bonuscad Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 Je pense que la condition du if déclaré en (sssetfirst) bloque l'évalution.En effet en cas de succés (sssetfirst) ne renvoit pas True mais une liste contenant toujour en 1er élément un nil! (if (setq ss (ssget "_I" '((8 . "cotation")))) (sssetfirst nil ss) (sssetfirst nil (setq ss (ssget "_X" (list (cons 8 "cotation") (cons 410 (getvar "ctab")))))) ) Sous cette forme, ce sera mieux, comme l'avait écrit -Olivier- dans sa réponse #2 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lerom88 Posté(e) le 14 avril 2016 Auteur Posté(e) le 14 avril 2016 Désolé mais je n'arrive pas à le faire fonctionner non plus... :(
-Olivier- Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 Je n'ai pas retesté, et je me suis fait avoir.@bonuscadEn faites, il se passe l'inverse. Lorsque la condition n'est pas rempli on obtient (nil nil) et non nil tout cours. La condition est donc considérée comme remplie. Si l'on veux vraiment supprimer la variable, cela donne :(defun c:selcalque () (if (cadr (sssetfirst nil (ssget "_I" '((8 . "cotation"))))) nil (sssetfirst nil (ssget "_X" (list (cons 8 "cotation") (cons 410 (getvar "ctab"))))) ) (princ) ) Olivier 1
lerom88 Posté(e) le 14 avril 2016 Auteur Posté(e) le 14 avril 2016 Nickel ça fonctionne !! merci beaucoup :)
bonuscad Posté(e) le 14 avril 2016 Posté(e) le 14 avril 2016 @bonuscadEn faites, il se passe l'inverse. Lorsque la condition n'est pas rempli on obtient (nil nil) et non nil tout cours. La condition est donc considérée comme remplie. Oui je me suis mal exprimé, en fait tout simplement, on considère qu'une liste, même constituée que d'élément vide est toujours VRAIE. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Bilbeau Posté(e) le 2 mai 2016 Posté(e) le 2 mai 2016 Salut... Heu... pourquoi ne pas utiliser les commandes natives d'AutoCad par le filtrage de sélection?...Exact et 'Filter permet de sauver des configurations de sélection même très compliquées... et c'est présent aussi sur Autocad LT depuis n versions.
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