Arcasdk Posté(e) le 5 juillet 2011 Posté(e) le 5 juillet 2011 Bonjour, Est ce que "tblsearch" est la commande à utiliser pour modifier les textes d'un bloc sans le décomposer. mon "ssget" ne fonctionne que si mon bloc est décomposé. Mais je préférerai le laisser tel qu'il est. Merci <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
(gile) Posté(e) le 5 juillet 2011 Posté(e) le 5 juillet 2011 Salut, Pour modifier un bloc sans le décomposer, il faut modifier la définition du bloc qui se trouve effectivement dans la table des blocs.tblsearch retourne une liste d'association des principales propriétés de la définition du bloc, pour la liste complète, il faut faire : (entget (tblobjname ...)).Dans la liste retournée par l'une ou l'autre méthode se trouve un groupe -2 qui contient le ename de la première entité dans la définition du bloc. On peut donc parcourir toutes les entités composant le bloc avec entnext et les modifier avec entmod.Un entupd sur la définition du bloc est peut être nécessaire, une régénération mettra les références à jour plus attsync si des définitions d'attributs ont été modifiées. PS : c'est faisable en vlisp aussi (peut-être plus simple) où on parcourt une définition de bloc, qui est considérée comme une collection d'objets, avec vlax-for. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 5 juillet 2011 Posté(e) le 5 juillet 2011 Coucou la possibilité que Arcasdk nous parle de modifier des ATTRIBUTSen parlant de : les textes d'un blocn'est pas écartée (toujours le vocabulaire) si c'est le cas il faut parcourir le bloc avec ENTNEXTpuis filtrer avec l'étiquette puis SUBST puis ENTMOD et enfin ENTUPD. si je me fourvoie, tant pis pour moi... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Arcasdk Posté(e) le 5 juillet 2011 Auteur Posté(e) le 5 juillet 2011 Non non, mon vocabulaire a été judicieusement choisi. Il ne s'agit pas là d'attributs mais bel et bien de texte. de "MTEXT" pour être exact. Voici ce que j'essayer de faire (defun c:test (/ blk js paire) (setq blk (tblobjname "BLOCK" "Liste de pièces")) (while (setq blk (entnext blk)) (setq js (entget blk)) (if (and (= (cdr (assoc 0 js)) "MTEXT")(= (cdr (assoc 1 js)) "S235JR")) (progn (setq paire (cons 1 "S275JR")) (setq js (subst paire (assoc 1 js) js)) (entmod js)) ) ) (command "regen") ) En revanche j'ai essayé de lancer cette commande dans un script et il ne la trouve pas. (write-line "(command \"test\")" fscr) Ma commande test est pourtant bien chargé à l'ouverture du plan.... Une idée [Edité le 5/7/2011 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
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