Aller au contenu

Modfier un bloc sans le décomposer.


Messages recommandés

Posté(e)

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>

Posté(e)

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

Posté(e)

Coucou

 

la possibilité que Arcasdk nous parle de modifier des ATTRIBUTS

en parlant de : les textes d'un bloc

n'est pas écartée (toujours le vocabulaire)

 

si c'est le cas il faut parcourir le bloc avec ENTNEXT

puis filtrer avec l'étiquette puis SUBST puis ENTMOD et enfin ENTUPD.

 

si je me fourvoie, tant pis pour moi...

 

amicalement

Posté(e)

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>

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é