Aller au contenu

Messages recommandés

Posté(e)

bonjour,

j'ai besoin d'une aide pour élaborer une routine simple

(mais compliqué pour un débutant)

 

Le but est de supprimer les éléments dans une zone définie.

 

pour cela j'ai 3 pistes :

 

(defun c:TEST1 ()
(setq
pt1 '(0.0 0.0)
pt2 '(3000.0 3000.0)
(setq ss1 (ssget "X"))
(command "EFFACER" ssget)
(setq ss1 nil)
)

 

(defun c:TEST2 ()
(command "EFFACER" '(0.0 0.0)  '(3000.0 3000.0) "")
)

 

(defun c:TEST3 ()
(ssget "_W" '(0 0) '(3000 3000))
(ssdel ename jsel)
) 

Posté(e)

Salut,

 

Si tu veux faire une sélection par fenêtre (ou par capture) il faut spécifier la méthode de sélection du ssget : "_W" pour Window (ou "_C" pour Crossing).

Voir l'aide ou, en français la section 16.3 de Introduction à AutoLISP.

 

Sinon, il est toujours préférable de vérifier si le jeu de sélection n'est pas nil (aucun objet sélectionné) avant de l'utiliser.

 

(defun c:test (/ ss)
 (if (setq ss (ssget "_W" '(0. 0. 0.) '(3000. 3000. 3000.)))
   (command "_.erase" ss "")
 )
 (princ)
)

 

De plus, une sélection dans AutoCAD dépend de l'affichage (les objets hors écran ne sont pas sélectionnés) il est donc préférable de faire un zoom étendu ou correspondant à la fenêtre avant de faire la sélection.

 

(defun c:test (/ ss)
 (command "_.zoom" '(0. 0. 0.) '(3000. 3000. 3000.))
 (if (setq ss (ssget "_W" '(0. 0. 0.) '(3000. 3000. 3000.)))
   (command "_.erase" ss "")
 )
 (command "_.zoom" "_previous")
 (princ)
)

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é