Aller au contenu

(résolu) RB v2.0 et blocs dynamiques


x_all

Messages recommandés

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

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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é