x_all Posté(e) le 9 octobre 2017 Posté(e) le 9 octobre 2017 Bonjour J'avais un poil retouché RB.lsp pour qu'il ne change plus le type de ligne et fasse un régen à la fin. Mais je me rend compte que le lisp n'a pas d'effet sur le blocs dynamique.Peut être est ce due à autocad 2018 car je n'avais pas remarqué cette lacune avant. quand je traite un bloc avec RB dont la couleur à été changée, les entité passent bien en couleur "dubloc", mais rien ne change...il faut que je ré ouvre le bloc, et sélectionne aussi les actions et paramètres, les passe en "dubloc" pour que le changement soit effectif. Y a t il moyen de faire ça dans le lisp?mais j'aurai besoin d'aide car on sort de mon domaine de compétence. je remet le lisp au cas ou... merci ;;;================================================================= ;;; ;;; RB.LSP V2.00 ;;; ;;; Refait les blocs de la couleur dubloc et sur le calque 0 ;;; ;;; Copyright (C) Patrick_35 ;;;modifié par joch04 pour ne pas changer la couleur et faire un régen à la fin ;;;================================================================= (defun c:rb( / *errrb* bl ent js lst nombl doc s sel) (defun *errrb* (msg) (or (member (strcase msg) '("FUNCTION CANCELLED" ""QUIT / EXIT ABORT"" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) (vla-endundomark doc) (setq *error* s) (princ) ) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq s *error* *error* *errrb* ) (princ "\nSélectionnez les blocs <Tout les blocs> : ") (if (setq sel (ssget (list (cons 0 "insert")))) (progn (vlax-for bl (setq sel (vla-get-activeselectionset doc)) (or (member (setq nom (nombl bl)) lst) (setq lst (cons nom lst)) ) ) (foreach nom lst (if js (setq js (strcat js "," nom)) (setq js nom) ) ) (vla-delete sel) ) (setq js "*") ) ; ---------------------------------------------------------------- ; Modifications dans la table des blocs ; ---------------------------------------------------------------- (vlax-for bl (vla-get-blocks doc) (and (eq (vla-get-islayout bl) :vlax-false) (or (eq js "*") (member (vla-get-name bl) lst) ) (vlax-for ent bl ; Forcer sur calque 0 (vla-put-layer ent "0") ; Forcer la couleur sur Dubloc (vla-put-color ent 0) ; Forcer le type de ligne sur Dubloc ;(vla-put-linetype ent "ByBlock") ; Forcer l'épaisseur de ligne sur Dubloc (vla-put-lineweight ent -2) ) ) ) ; ---------------------------------------------------------------- ; Modifications dans la table des mlines ; ---------------------------------------------------------------- (and (dictsearch (namedobjdict) "ACAD_MLINESTYLE") (vlax-for bl (vla-item (vla-get-dictionaries doc) "ACAD_MLINESTYLE") ; Forcer la couleur des mlines en dubloc (vl-catch-all-apply 'vla-put-color (list bl 0)) ) ) ; ---------------------------------------------------------------- ; Modifications dans le dessin (pour les attributs) ; ---------------------------------------------------------------- (and (ssget "x" (list (cons 0 "insert") (cons 66 1))) (progn (vlax-for bl (setq sel (vla-get-activeselectionset doc)) (and (or (eq js "*") (member (vla-get-name bl) lst) ) ; Forcer la couleur des attributs sur Dubloc (mapcar '(lambda(x)(vla-put-color x 0)) (vlax-invoke bl 'getattributes)) ) ) (vla-delete sel) ) ) (vla-endundomark doc) (setq *error* s) (princ) (command "regen") ) (setq nom_lisp "RB") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " chargé.")) (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter."))) (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter."))) (setq nom_lisp nil) (princ) (command "regen") 1 quelques trucs sur autocad
Patrick_35 Posté(e) le 10 octobre 2017 Posté(e) le 10 octobre 2017 Salut Tu remplaces(member (vla-get-name bl) lst)par(member (nombl bl) lst) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 10 octobre 2017 Auteur Posté(e) le 10 octobre 2017 Oki merci, je teste ça cet aprèm...mais je mais résolu car je te fait confiance et que sinon je vais me faire reprendre :) quelques trucs sur autocad
x_all Posté(e) le 10 octobre 2017 Auteur Posté(e) le 10 octobre 2017 harf... je dérésolve (!o! les orthographistes vont vriller) le post... Le changement de ligne ne change rien...Comme pour les bloc imbriqués et les attributs... bien essayer, mais non... je me doute que c'est moins simple que de faire un ctrl A dans l'éditeur... quelques trucs sur autocad
Patrick_35 Posté(e) le 12 octobre 2017 Posté(e) le 12 octobre 2017 Salut Tu as deux modifs à faire. Ensuite, pour les blocs imbriqués, c'est normal car le nom du bloc imbriqué n'est pas le même que celui qui est inséré. Donc pas de changement car la sélection se fait par nom. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 12 octobre 2017 Auteur Posté(e) le 12 octobre 2017 méa culpa... du coup, ça marche bien pour les attributsMais pour les blocs dyn pas de changements... quelques trucs sur autocad
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