ludo07 Posté(e) le 17 octobre 2008 Posté(e) le 17 octobre 2008 Bonjour à tous, Sur un fichier que je récupére d'une société exterieur et que j'appel en XREF j'ai un soucis sur un bloc qui s'appel *U139.Car quand je le selectionne pour l'éditer son nom n'apparait pas dans l'éditeur de bloc??????????????????????????????????????????????????????????????? Quelqu'un à une idée? A+
bseb67 Posté(e) le 17 octobre 2008 Posté(e) le 17 octobre 2008 Salut ludo07! Les blocs *U sur 2008-2009 ou *A sur 2006-2007 sont des blocs dynamiques.Quand tu créer un bloc dynamique, celui-ci à son nom d'origine. Mais si tu le modifies(propriétés dynamiques) comme il a changé de forme, autocad lui donne un nouveau nom Exemple t'as un bloc porte, une propriété dynamique sur la taille, si tu insères deux blocs portes,et que tu leur donne la même "taille", tu aura deux nouveaux blocs *Uxxx et *Uyyy. [Edité le 17/10/2008 par bseb67] Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
ludo07 Posté(e) le 20 octobre 2008 Auteur Posté(e) le 20 octobre 2008 Bonjour à tous, http://cjoint.com/?kujINzLG7N ci-dessus le lien vers un extrait de plan dans lequel j'ai mis des blocs *U... Donc comment je fais pour que les 4 blocs *U soient tous renommé. A+
(gile) Posté(e) le 20 octobre 2008 Posté(e) le 20 octobre 2008 Salut, Tu peux créer une nouvelle définition avec NBL, puis remplacer les autres blocs avec RBLOC (Patrick_35) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ludo07 Posté(e) le 20 octobre 2008 Auteur Posté(e) le 20 octobre 2008 MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) MERCI (gile) Bon ca suffit les remerciement. A+
Patrick_35 Posté(e) le 20 octobre 2008 Posté(e) le 20 octobre 2008 Bonjour ludo07Un mixe de Nbl Et Rbloc.(à utiliser avec précaution, car des blocs dynamiques différents peuvent se retrouver avec le même graphisme) (defun c:rdyn(/ ent nom rep tot InputBox MsgBox) (defun InputBox (Titre Message Defaut / users1 valeur) (setq users1 (getvar "users1")) (acad-push-dbmod) (vla-eval (vlax-get-acad-object) (strcat "ThisDrawing.SetVariable \"USERS1\"," "InputBox (\"" Message "\", \"" Titre "\", \"" Defaut "\")")) (setq valeur (getvar "users1")) (setvar "users1" users1) (acad-pop-dbmod) valeur ) (vl-load-com) (if (/= (setq rep (inputbox "RDYN 1.00" "Veuillez donner le nom du nouveau bloc" "")) "") (if (ssget (list (cons 0 "insert"))) (progn (setq tot 0) (vlax-for ent (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (if (eq (vla-get-isdynamicblock ent) :vlax-true) (if (tblsearch "block" rep) (progn (or nom (setq nom (vla-get-effectivename ent))) (if (eq nom (vla-get-effectivename ent)) (progn (vla-put-name ent rep) (setq tot (1+ tot)) ) ) ) (progn (setq nom (vla-get-effectivename ent) tot (1+ tot) ) (vla-converttostaticblock ent rep) ) ) ) ) (vla-delete sel) (princ (strcat "\nModification de " (itoa tot) " bloc(s).")) ) ) ) (princ) ) (gile)Juste une remarque concernant ton lisp NBL.Tu as deux fonctions qui peuvent te simplifier la vie.ConvertToAnonymousBlock et ConvertToStaticBlock @+ [Edité le 21/10/2008 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 20 octobre 2008 Posté(e) le 20 octobre 2008 Merci Patrick, Je n'avais pas pensé à ces fonctions quand j'avais écris NBL, il n'était alors pas question de bloc dynamique, mais vla-ConvertToStaticBlock marche aussi avec des blocs "statiques", bon à savoir... ;) PS : tu utilises ver comme variable (setq ver "RDYN 1.00"), et ver est un "symbole protégé" (fonction LISP) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ludo07 Posté(e) le 20 octobre 2008 Auteur Posté(e) le 20 octobre 2008 merci Patrick_35, je regarderais demain. Merci à vous deux (COMME D'HAB) A+
Patrick_35 Posté(e) le 21 octobre 2008 Posté(e) le 21 octobre 2008 Ah oui, c'est exact.Je corrige. Merci (gile) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bruno_T Posté(e) le 21 octobre 2008 Posté(e) le 21 octobre 2008 bonjour,je propose ça mais je n'ai pas le moyen de le tester en dehors du fichier proposé par ludo07.(Donc si quelqu'un a un fichier avec des tonnes de blocs anonymes, merci à lui de le poster). le principe est de provoquer volontairement des erreurs dans la table des blocs pour les blocs ano, puis de les faire corriger par AutoCAD lui-même.C'est une étude de programmation et non une solution finale pour le problème initial évoqué. (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq i 0) (vlax-for obj (vla-get-blocks doc) (if (= (substr (strcase (vla-get-name obj)) 1 2) "*U") (progn (while (tblsearch "block" (itoa (setq i (1+ i))))) (vla-put-name obj (itoa i)) ) (setq blocks (cons (vla-get-name obj) blocks)) ) ) (vlax-invoke-method doc 'AuditInfo :vlax-true) (setq i 0) (vlax-for obj (vla-get-blocks doc) (if (not (member (vla-get-name obj) blocks)) (progn (while (tblsearch "block" (setq newName (strcat "U" (itoa (setq i (1+ i))))))) (vla-put-name obj newName) ) ) ) (vlax-release-object doc) donc si on souhaite seulement retirer le caractére anonyme des blocs on devrait pourvoir simplement faire : (setq i 0 doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for obj (vla-get-blocks doc) (if (= (substr (strcase (vla-get-name obj)) 1 2) "*U") (progn (while (tblsearch "block" (itoa (setq i (1+ i))))) (vla-put-name obj (itoa i)) ) ) ) (vlax-invoke-method doc 'AuditInfo :vlax-true) (vlax-release-object doc) Bruno Toniutti
Patrick_35 Posté(e) le 21 octobre 2008 Posté(e) le 21 octobre 2008 Bonjour C'est une solution, mais tu ne trouves pas plus simple d'utiliser directement ConvertToStaticBlock Pour reprendre ton premier exemple, on pourrait faire (setq doc (vla-get-activedocument (vlax-get-acad-object))) (ssget "x" (list (cons 0 "INSERT") (cons 2 "`*U*"))) (vlax-for obj (setq sel (vla-get-activeselectionset doc)) (if (tblsearch "block" (setq nom (substr (vla-get-name obj) 2))) (vla-put-name obj nom) (vla-converttostaticblock obj nom) ) ) (vla-delete sel) et sans utiliser l'audit @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bruno_T Posté(e) le 21 octobre 2008 Posté(e) le 21 octobre 2008 oui Patrick naturellement c'est mieux, mais quand on a converttostaticblock de dispo :P , converttostaticblock a du apparaître vers la 2006, aujourd'hui ça doit être effectivement ok pour la majorité des utilisateurs. Comme je l'ai écrit, j'ai posté cela juste en tant qu'étude de programmation, bref c'est une bête curieuse que de passer par un audit et il n'y a plus de raison de procéder ainsi. Bruno Toniutti
dxxx01 Posté(e) le 8 novembre 2023 Posté(e) le 8 novembre 2023 Bonjour passionnant sujet, ce pourrait il de finaliser ces routines dans un Lisp … j ai ouvert un projet dwg cette semaine d une entreprise en utilisant attout en nom de bck blockname il me dis plein de *u… pour les noms de blocs le travail fournit sur ce forum est magistral merci bcp
Steven Posté(e) le 9 novembre 2023 Posté(e) le 9 novembre 2023 Bonjour @dc01, Pour faire des ATTOUT avec les blocs dynamiques, il y a le lisp ATTIN / ATTOUT amélioré de @bryce. ATTIN_ATTOUT_DYN.zip Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
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