Aller au contenu

Selection et couleur bloc


Messages recommandés

Posté(e)

Bonjour tous le monde,

 

Je cherche un lisp pour sélectionner des blocs ayant le même nom ex. 00_MON_BLOC (bloc avec attributs) et mettre en vert ces blocs.

 

J'ai écrit le code suivant:

 

(defun c:sb (/ ss)

(setq ss
(ssget "_X" 
      (list
      '(0 . "INSERT")
      '(2 . "00_NUM_TUBE"))))

(command "_.change" ss "" "p" "CO" "4" "")

(princ)

)

 

Mais ça ne sélectionne pas mes blocs :( et la commande changer, bloque à 0,255,0

 

Bref rien ne marche :( (sauf la couleur :P )

  • 3 ans après...
Posté(e)

Salut,

avec la commande native "Filtre", mais je ne sais pas si elle est compatible avec le langage Lisp.

 

Erased

 

"Le risque de prendre une mauvaise décision n'est rien comparé à la terreur de l'indécision"

Maimonide.

Posté(e)

Hello

-- Pour selectionner UN Bloc classique particulier dans TOUT le DWG
(ssget "_X" '((0 . "INSERT") (2 . "Mon_Joli_Bloc")))

La Sante, Bye, lecrabe

 

Autodesk Expert Elite Team

Posté(e)

Coucou,

A savoir que cela ne fonctionne pas si le bloc est dynamique 😉
Autrement il faudrait plutôt quelque chose comme ceci :

(defun c:sb (/ str2lst bn co fl ss i nm en ce)
  (defun str2lst (str sep / pos)
    (if (setq pos (vl-string-search sep str))
      (cons
        (substr str 1 pos)
        (str2lst (substr str (+ (strlen sep) pos 1)) sep)
      )
      (list str)
    )
  )
  
;; DEFINITION OF THE COMMAND PARAMETERS
  (setq
    bn "00_NUM_TUBE" ;; EQUALS TO THE EFFECTIVENAME OF THE BLOCK (YOU CAN USE THE WILDCARD CHARACTERS FOR MORE USABILITY)
    co 4 ;; EQUALS TO THE NEW COLOR TO BE SET. USE AN INTEGER BETWEEN 0 TO 256 FOR ACI COLORS, A LIST OF 3 INTEGERS BETWEEN 0 AND 255 EACH FOR TRUE COLORS, A STRING WITH THE NAME OF COLOR BOOK
    fl nil ;; DETERMINES IF THE SEARCH FOR EFFECTIVENAME IS CASE SENSITIVE OR NOT (nil = CASE SENSITIVE, T = NOT CASE SENSITIVE)
  )
;; END OF PARAMETERS'S DEFINITION
  (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 (strcat "`*U*," bn)))))
  (repeat (setq i (sslength ss))
    (setq nm (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
    (if
      (not
        (and
          (vlax-property-available-p nm 'EffectiveName)
          (setq en (vlax-get nm 'EffectiveName))
          (if fl
            (mapcar '(lambda (x) (set (read (vl-princ-to-string x)) (strcase (vl-symbol-value x)))) '(bn en))
            '(bn en)
          )
          (wcmatch en bn)
        )
      )
      (ssdel (vlax-vla-object->ename nm) ss)
    )
  )
  (if (not (zerop (sslength ss)))
    (progn
      (setq ce (getvar "CMDECHO"))
      (setvar "CMDECHO" 0)
      (cond
        ( (listp co) (command "_.CHANGE" ss "" "_Properties" "_Color" "_TrueColor" (setq co (str2lst co ",")) ""))
        ( (= 'STR (type co)) (command "_.CHANGE" ss "" "_Properties" "_Color" "_ColorBook" co ""))
        ( (= 'INT (type co)) (command "_.CHANGE" ss "" "_Properties" "_Color" (setq co (itoa co)) ""))
      )
      (setvar "CMDECHO" ce)
      (princ
        (strcat
          "\n"
          (itoa (sslength ss))
          " blocks has been changed with the name \""
          bn
          "\" to the color "
          co
          "..."
        )
      )
    )
    (princ "\n0 blocks has been changed...")
  )
  (princ)
)

On peut modifier les paramètres de la commande si jamais le(s) nom(s) des blocs à rechercher ne correspond(ent) pas à "00_NUM_TUBE", si la couleur ne correspond pas à 4 et si l'on désire que le nom du bloc soit sensible à la casse ou pas

Bisous,
Luna

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é