Aller au contenu

Lisp pour supprimer les cotations à l\'intérieur de plusieurs blocs


autospeed

Messages recommandés

Existe-t-il un lisp permettant d'éffacer les cotations se trouvant à l'intérieur de différents blocs ?

J'ai souvent des plans composés d'XREF qui ont été ajoutés comme blocs par etransmit et j'aimerais pouvoir virer les cotations sans avoir à éditer les blocs !

 

Auteur du logiciel Autospeed

Auteur de la théorie du site www.kheops.biz

Auteur de nombreux livres

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

(vlax-for b (vla-get-Blocks
      (vla-get-ActiveDocument
	(vlax-get-acad-object)
      )
    )
 (or
   (= (vla-get-IsLayout b) :vlax-true)
   (= (vla-get-IsXref b) :vlax-true)
   (vlax-for o	b
     (if (wcmatch (vla-get-ObjectName o) "AcDb*Dimension")
(vla-delete o)
     )
   )
 )
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

c'est pas super pratique , ça serait mieux avec une commande khb comme kill hachures blocs.

J'ai testé en collant le lisp dans la ligne de commande .. a part marquer nil ou des signes comme (> et faire planter la ligne de commande , ça n'éfface aucune cotation dans les blocs .

J'ai du merder quelque part... ca marche sur la 2006 ? [Edité le 14/3/2011 par autospeed]

 

voila ce que ça donne quand on colle le lisp dans la ligne de commande :

 

Commande: (vlax-for b (vla-get-Blocks

((_> (vla-get-ActiveDocument

(((_> (vlax-get-acad-object)

(((_> )

((_> )

(_> (or

((_> (= (vla-get-IsLayout b) :vlax-true)

((_> (= (vla-get-IsXref b) :vlax-true)

((_> (vlax-for o b

(((_> (if (wcmatch (vla-get-ObjectName o) "AcDb*Dimension")

((((_> (vla-delete o)

((((_> )

(((_> )

((_> )

(_> )

nil

 

A part moi qui ne comprend rien au lisp , il est ou le problème :-)[Edité le 15/3/2011 par autospeed]

la réponnse au dessus était celle d'Autocad 2006 .. voici celle de la 2010

Commande: (vlax-for b (vla-get-Blocks

((_> ((_> (vla-get-ActiveDocument

(((((_> (((_> (vlax-get-acad-object)

((((((((_> (((_> )

((((((((((_> ((_> )

(((((((((((_> (_> (or

(((((((((((((_> ((_> (= (vla-get-IsLayout b) :vlax-true)

(((((((((((((((_> ((_> (= (vla-get-IsXref b) :vlax-true)

(((((((((((((((((_> ((_> (vlax-for o b

((((((((((((((((((((_> (((_> (if (wcmatch (vla-get-ObjectName o)

"AcDb*Dimension")

((((((((((((((((((((((((_> ((((_> (vla-delete o)

((((((((((((((((((((((((((((_> ((((_> )

(((((((((((((((((((((((((((((((_> (((_> )

(((((((((((((((((((((((((((((((((_> ((_> )

((((((((((((((((((((((((((((((((((_> (_> )

((((((((((((((((((((((((((((((((((_> nil

((((((((((((((((((((((((((((((((((_> *Annuler*

((((((((((((((((((((((((((((((((((_> *Annuler*

 

pourquoi cela fait plus de ( sur la 2010 ?

 

[Edité le 15/3/2011 par autospeed]

Auteur du logiciel Autospeed

Auteur de la théorie du site www.kheops.biz

Auteur de nombreux livres

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

 

Il suffit de definir le nom de la commande avec un defun

 

va voir dans le forum Débutant, il y a des explications de Gile

 

(defun c:khb (/ b o)

(vl-load-com)

(vlax-for b (vla-get-Blocks

      (vla-get-ActiveDocument

	(vlax-get-acad-object)

      )

    )

 (or

   (= (vla-get-IsLayout b) :vlax-true)

   (= (vla-get-IsXref b) :vlax-true)

   (vlax-for o	b

     (if (wcmatch (vla-get-ObjectName o) "AcDb*Dimension")

(vla-delete o)

     )

   )

 )

)

)

 

 

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é