Aller au contenu

selection par nom de motif de hachurage


Messages recommandés

Posté(e)

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...

Posté(e)

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)
)

 

Olivier

EDIT : Correction car mal debuggé.

Posté(e)

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")))

Posté(e)

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

Posté(e)

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

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité