nen Posté(e) le 15 juillet 2018 Posté(e) le 15 juillet 2018 Bonjour le forum ,J’ai trouvé ci-dessous ce lisp de Gile qui a pour but de forcer les couleurs des Xref, très pratique quand on importe un plan archi.Par contre, il ne change pas les blocs qui se trouvent dans l’Xref en effet si on applique une couleur 253 à l’Xref les blocs qui sont forcés eux ne change pas.Est-ce possible en améliorant se lisp qui est déjà super, de faire cette opération ? Merci d’avanceMeilleures salutations (defun c:xref-color-set (/ acdoc xrf col lst) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq xrf (car (entsel "\nSelectionnez la reference externe: "))) (setq xrf (vlax-ename->vla-object xrf)) (= (vla-get-ObjectName xrf) "AcDbBlockReference") (setq col (acad_colordlg 8 nil)) ) (progn (vla-StartUndoMark acdoc) (vlax-for l (vla-get-Layers acdoc) (and (wcmatch (vla-get-Name l) (strcat (vla-get-Name xrf) "|*")) (setq lst (cons (cons (vla-get-Name l) (vla-get-color l)) lst)) (vla-put-color l col) ) ) (or (vlax-ldata-get xrf "laycol") (vlax-ldata-put xrf "laycol" lst) ) (vla-EndUndoMark acdoc) ) ) (princ) ) (defun c:xref-color-restore (/ acdoc xrf lst) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq xrf (car (entsel "\nSelectionnez la reference externe: "))) (setq xrf (vlax-ename->vla-object xrf)) (= (vla-get-ObjectName xrf) "AcDbBlockReference") (setq lst (vlax-ldata-get xrf "laycol")) ) (progn (vla-StartUndoMark acdoc) (vlax-for l (vla-get-Layers acdoc) (if (setq pair (assoc (vla-get-Name l) lst)) (vla-put-color l (cdr pair)) ) ) (vlax-ldata-delete xrf "laycol") (vla-EndUndoMark acdoc) ) ) (princ) )
lecrabe Posté(e) le 15 juillet 2018 Posté(e) le 15 juillet 2018 Hello Si AutoCAD 2016 ou + , as tu essaye avec XREFOVERRIDE = 1 ?? Et tu forces en GRIS tous les calques des XREFs ?! Sinon je crois qu'il faudra envisager la méthode STB de Christian REB ! Ou bien modifier en conséquence les XREFs (en fait les Blocs) ! En principe un bon petit coup de DEFDUCALQUE (qui existe depuis la version 2008) sur les Blocs et c OK !? Bye, lecrabe Autodesk Expert Elite Team
rebcao Posté(e) le 16 juillet 2018 Posté(e) le 16 juillet 2018 Hello Le Crabe, Je te remercie de penser à moi ! La solution des STB est des plus simple... A condition de travailler en STB bien sur ! Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lecrabe Posté(e) le 16 juillet 2018 Posté(e) le 16 juillet 2018 Hello PERSO: XREFOVERRIDE = 1 est suffisant pour moi !? RAPPEL : il faut une version 2016 ou + ... MAIS BON je n'ai jamais teste avec des Blocs imbriques (ayant des proprietes FORCEES) !? Bye, lecrabe Autodesk Expert Elite Team
nen Posté(e) le 16 juillet 2018 Auteur Posté(e) le 16 juillet 2018 Bonjour, Je te remercie pour ton message .Oui en effet je veux forcer tous les calques en gris des Xref. J’ai essayé la commande XREFOVERRIDE=1 avec le lisp de Gile cela fonctionne impeccable.Est-il possible d’intégrer dans le Lisp de Gile la commande XREFOVERRIDE pour “xref-color-set” et “xref-color-restore” ? ;) En ce qui concerne le STB cela demande plus de manipulation, convertir le fichier en STB, sélectionner tous calques, changer la couleur, etc. et ensuite ne pas oublier de revenir en CTB pour les collègues ne soit pas embêter et il faut en plus avoir un fichier plume STB configuré :huh: . Merci d’avance, Meilleures salutations
x_all Posté(e) le 16 juillet 2018 Posté(e) le 16 juillet 2018 Chez nous, on garde les plans archi en archive et on en fait une copie dans un répertoire "Xref" ce qui explique ce lisp un peu sauvage dont on se sert parfois. Reste à traiter les textes ou attributs avec une couleur forcée dans un bloc (c'est une plaie car même avec stripmtext ça reste en couleur).Mais généralement, je fais un coup de Defducalque sur tout (option le changer que la couleur) et puis dans mon dessin, je force la couleur des calques de la ref en gris (couleur 8 voir de modifier le lisp si tu veux une autre couleur)Les STB, c'est super, mais je suis le seul à maitriser, et comme nos plan sont souvent réutilisés par des entreprises qui en on rien à fiche de le lisibilité, ça devient n'imp. Autant figer le plan archi en dur. ça évite que celui qui ouvre le dwg sans déplier le zip de l'Etransfert se retrouve avec un visu et ou une impression non conforme. (Xref liées à l'Etransfert) (vl-load-com) (defun c:toutgris (/ acdoc) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-StartUndoMark acdoc) (vlax-for l (vla-get-Layers acdoc) (vla-put-color l 8) ) (vlax-for b (vla-get-Blocks acdoc) (vlax-for o b (vla-put-color o acByLayer) ) ) (vla-EndUndoMark acdoc) (princ) ) quelques trucs sur autocad
zza427 Posté(e) le 16 juillet 2018 Posté(e) le 16 juillet 2018 Et en intégrant le lisp RB qui passe tous les objets des blocs en dubloc et calque 0, combiné avec le reste il ne devrait plus y avoir de problèmes...
nen Posté(e) le 17 juillet 2018 Auteur Posté(e) le 17 juillet 2018 Bonjour :D ,Je vous remercie merci pour votre aide ;) . Je pense qu’à utiliser au quotidien le lisp de gile est le plus confortable.Il suffirait de rajouter (je fais le malin mais je sais pas comment faire :D ) XREFOVERRIDE=1 pour la commande “xref-color-set” et XREFOVERRIDE=0 pour la commande “xref-color-restore”. Le lisp de X_all est bien aussi ;) , c’est dommage qu’on ne puisse pas faire un restore comme “xref-color-restore”. S’il y a d’autre proposition je suis preneur :) Merci à tous Meilleures salutations
lecrabe Posté(e) le 18 juillet 2018 Posté(e) le 18 juillet 2018 Hello Je suis au niveau 0.1 en Lisp/VLisp mais (A priori) il te suffit de rajouter les deux Lignes suivantes dans le Lisp de Gillesjuste avant la ligne : (vla-EndUndoMark acdoc) ---- Pour c:Xref-Color-Set (setvar "XREFOVERRIDE" 1) (command "_regenall") ---- Pour Xref-Color-Restore (setvar "XREFOVERRIDE" 0) (command "_regenall") Bye, lecrabe 1 Autodesk Expert Elite Team
nen Posté(e) le 18 juillet 2018 Auteur Posté(e) le 18 juillet 2018 Salut lecrabe, Je te remercie pour ton aide Super cela fonctionne impeccable ;) Ci-dessous le code de Gilles avec le tiens. (defun c:xref-color-set (/ acdoc xrf col lst) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq xrf (car (entsel "\nSelectionnez la reference externe: "))) (setq xrf (vlax-ename->vla-object xrf)) (= (vla-get-ObjectName xrf) "AcDbBlockReference") (setq col (acad_colordlg 8 nil)) ) (progn (vla-StartUndoMark acdoc) (vlax-for l (vla-get-Layers acdoc) (and (wcmatch (vla-get-Name l) (strcat (vla-get-Name xrf) "|*")) (setq lst (cons (cons (vla-get-Name l) (vla-get-color l)) lst)) (vla-put-color l col) ) ) (or (vlax-ldata-get xrf "laycol") (vlax-ldata-put xrf "laycol" lst) ) (setvar "XREFOVERRIDE" 1) (command "_regenall") (vla-EndUndoMark acdoc) ) ) (princ) ) (defun c:xref-color-restore (/ acdoc xrf lst) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq xrf (car (entsel "\nSelectionnez la reference externe: "))) (setq xrf (vlax-ename->vla-object xrf)) (= (vla-get-ObjectName xrf) "AcDbBlockReference") (setq lst (vlax-ldata-get xrf "laycol")) ) (progn (vla-StartUndoMark acdoc) (vlax-for l (vla-get-Layers acdoc) (if (setq pair (assoc (vla-get-Name l) lst)) (vla-put-color l (cdr pair)) ) ) (vlax-ldata-delete xrf "laycol") (setvar "XREFOVERRIDE" 0) (command "_regenall") (vla-EndUndoMark acdoc) ) ) (princ) ) Merci à tous pour votre aide Meilleures salutations
lecrabe Posté(e) le 18 juillet 2018 Posté(e) le 18 juillet 2018 Hello DONC tu nous dois un Apero (Surtout a Gilles) !? Bye, lecrabe Autodesk Expert Elite Team
nen Posté(e) le 18 juillet 2018 Auteur Posté(e) le 18 juillet 2018 Salut, C'est claire :D http://media.igurmet.cz/yummy/b6/49/b649a5e834d08eee0b9ac0f0795333bc.jpg
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