Aller au contenu

commande if pour script


Messages recommandés

Posté(e)

Bonjour,

 

je souhaiterais améliorer mon script de "nettoyage de plans reçus" et je bloque sur les lignes suivantes a savoir

selection des textes avec valeur "*;2??.??" sur certain type de calque je les sélectionne puis les effaces,les lignes ci-dessous fonctionnent que si il existe des textes "*;2??.??" si il n'y en a pas le script plante

 

(setq TOPO(ssget "_A" '( (0 . "TEXT,MTEXT") (100 . "AcDbMText") (1 . "*;2??.??}*,*;???}*,*;9???}*,*;????}*") (8 . "*xxx*COTATION*1_*,*LEVE*bbb*TALUS*,*leve*ccc*pt**Val*,*leve*dddd*MNT*Courb*") ) ) )
(command "_.ERASE" TOPO "")

 

je voudrais donc faire une "ligne de commande" avec une condition, si des textes avec telle valeur existe alors "effacer" sinon "continuer",

j'ai cherché un peu partout sur le net (autodesk,cadtutor,LM etc...) et j'ai trouvé des brides de code que j'ai "essayé" d'adapter mais rien à faire ça ne veut pas (je suis pas débutant mais surtout élite) donc

est ce qu'un spécialiste pourrait m'aider svp ?? Dans la foulée je souhaiterais aussi sélectionner d'autres objets style cercle/ligne ou autres avec le même but a savoir les effacer si ils/elles sont dans le plan, d'avance merci et bonne continuation a CADXP.

AHG

 

 

(setq TOPO(ssget "_A" '( (0 . "TEXT,MTEXT") (100 . "AcDbMText") (1 . "*;2??.??}*,*;???}*,*;9???}*,*;????}*") (8 . "*xxx*COTATION*1_*,*LEVE*bbb*TALUS*,*leve*ccc*pt**Val*,*leve*dddd*MNT*Courb*") ) ) )
(if (= "TEXT,MTEXT" "*;2??.??}*,*;???}*,*;9???}*,*;????}*"))
(progn
(princ  (command "_.ERASE" TOPO "")
) ; fin de progn
) ; fin de if
)

Posté(e)

Bonjour

 

(if (setq TOPO (ssget "_A" '( (0 . "TEXT,MTEXT") (100 . "AcDbMText") (1 . "*;2??.??}*,*;???}*,*;9???}*,*;????}*") (8 . "*xxx*COTATION*1_*,*LEVE*bbb*TALUS*,*leve*ccc*pt**Val*,*leve*dddd*MNT*Courb*") ) ) )
 (command "_.ERASE" TOPO "")
)

 

 

Olivier

Posté(e)

Merci Olivier pour la réponse rapide et fonctionnel !!!

 

juste une autre info, la "variable" TOPO ne doit elle pas etre remise a zero "nil" a un moment dans le programme ?

Cordialement AHG

 

Bonjour

 

(if (setq TOPO (ssget "_A" '( (0 . "TEXT,MTEXT") (100 . "AcDbMText") (1 . "*;2??.??}*,*;???}*,*;9???}*,*;????}*") (8 . "*xxx*COTATION*1_*,*LEVE*bbb*TALUS*,*leve*ccc*pt**Val*,*leve*dddd*MNT*Courb*") ) ) )
 (command "_.ERASE" TOPO "")
)

 

 

Olivier

Posté(e)

Merci Olivier pour la réponse rapide et fonctionnel !!!

 

juste une autre info, la "variable" TOPO ne doit elle pas etre remise a zero "nil" a un moment dans le programme ?

Cordialement AHG

 

Il suffit de la déclarer comme variable locale.

 

(defun c:toto (/ topo)
 ...
)

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

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é