x_all Posté(e) le 2 décembre 2013 Posté(e) le 2 décembre 2013 bonjour je voudrai ajouter à la super routine de (gile) spécial-selection ( http://gilecad.azurewebsites.net/LISP/Special_selections.lsp ) une fonction pour faciliter les sélection par nom de hachure... par quel bout prendre le problème... (SSTH par exemple) je partais sur une modification de SSTL, mais je m'en sort pas... j'ai un paysagiste fou qui m'a mis 12 motifs pour ses différents parterre de fleurs à comptabiliser dans un seul calque... et c'est la 3ene version du plan... je craque un peu... merci pour vos idées... quelques trucs sur autocad
-Olivier- Posté(e) le 2 décembre 2013 Posté(e) le 2 décembre 2013 Bonjour x_all,En bricolant à partir de SSTL ;; Sélection par type de hachure (defun c:ssth (/ ent th) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) (= (cdr (assoc 0 (entget ent))) "HATCH") ) (and (sssetfirst nil nil) (setq ent (car (entsel))) (= (cdr (assoc 0 (entget ent))) "HATCH") ) ) (or (setq th (list '(0 . "HATCH") (assoc 2 (entget ent)))) (setq th (list '(0 . "HATCH") (cons 2 "SOLID"))) ) (sssetfirst nil (ssget "_X" th)) ) (princ) ) OlivierEDIT : Correction car mal debuggé.
x_all Posté(e) le 2 décembre 2013 Auteur Posté(e) le 2 décembre 2013 merci tout plein... :) ça me facilite la vie... enfin ça me la facilitera pour le prochaine mise à jour... ya des subtilités que je comprend pas. Pourquoi le nom SOLID est il traiter à part... (du reste c'est ça fait partie des trucs qui me bloquait) (setq th (list '(0 . "HATCH") (cons 2 "SOLID"))) quelques trucs sur autocad
-Olivier- Posté(e) le 2 décembre 2013 Posté(e) le 2 décembre 2013 Comme déjà dit, c'est du bricolage à partir de la routine d'origine.Cette ligne permet en gros, si je n'ai pas mal interprété le lisp de (gile), de donner une valeur pas défaut pour éviter un bug en cas de mauvaise manip.Si pas de valeur th, le ssget saute.J'ai pas eu le temps de tout tester, donc pour une vrai explication de texte, il va falloir attendre plus qualifié que moi. :D Olivier
VDH-Bruno Posté(e) le 3 décembre 2013 Posté(e) le 3 décembre 2013 Salut, Cette ligne permet en gros, si je n'ai pas mal interprété le lisp de (gile), de donner une valeur pas défaut pour éviter un bug en cas de mauvaise manip.Si pas de valeur th, le ssget saute. Cela est vrai dans la routine d’origine SSTL (sélection par type de ligne), car le filtre s’effectue sur le code DXF 6, code facultatif dans la liste DXF de l’entité si celui-ci n’est pas forcé… Mais dans le cas d’une sélection par type de hachure le filtre de la fonction de sélection s’effectue sur le code DXF 2 (nom de la hachure), code toujours présent dans la définition d’une entité de type hachure, donc la ligne suivante :(setq th (list '(0 . "HATCH") (cons 2 "SOLID"))) Ne se justifie pas, et le code doit en toute logique pouvoir ce simplifier comme suit :(defun c:ssth (/ ss ent) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) (= (cdr (assoc 0 (entget ent))) "HATCH") ) (and (sssetfirst nil nil) (setq ent (car (entsel))) (= (cdr (assoc 0 (entget ent))) "HATCH")) ) (sssetfirst nil (ssget "_X" (list '(0 . "HATCH") (assoc 2 (entget ent))))) ) (princ) ) A+ Apprendre => Prendre => Rendre
-Olivier- Posté(e) le 3 décembre 2013 Posté(e) le 3 décembre 2013 Hello,Comme d'habitude... Impeccable. N'ayant pas eu trop le temps hier de me pencher sur la question, j'avais préféré la laisser bien que je ne comprenais pas exactement son utilité, car elle ne semblais pas poser de problème particulier.Merci pour l'éclaircissement.Habituellement je démarre mais code de zéro ou à partir des miens. Ainsi je comprend le pourquoi du comment de la moindre parenthèse. Olivier
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