Aller au contenu

Sélection avec un cercle


Messages recommandés

Posté(e)

Bonjour,

Je débute dans la programmation sous autolisp.

J'ai un fichier *.dxf dont un calque "alti_points" qui possèdes plusieurs points avec des coordonnées x y z.

Le but est de creer une fonction qui me permet :

 

1. Sélectionner un certains nombre de points grace à un cercle et de sortir une liste sous forme

((x1 y1 z1)(x2 y2 z2)(x3 y3 z3)(...)...)

 

2. Inverser la selection.

 

Merci d'avance pour les réponses que vous m'apporterez.

 

 

Posté(e)

Salut,

 

La routine SelByObj (dans le fichier Special_Selections, sur cette page), requiert 3 arguments :

- le nom d'entité (ename) de l'objet (cercle ellipse ou polyligne fermée) qui servira à la sélection.

- Un mode de sélection : CP ou WP, repectivement pour Capture ou Fenêtre.

- un filtre de selection comme pour la fonction ssget (liste).

 

Donc, pour sélectionner tous les objets points du calque "alti_points" strictement à l'intérieur du cercle (circ).

 

Récupérer le ename du cercle

(setq circ (car (entsel "\nSélectionnez le cercle: ")))

 

Créer le jeu de sélection

(setq ss (SelByObj circ "cp" '((0 . "POINT") (8 . "alti_points"))))

 

Faire une liste de toutes les coordonnées des points du jeu de sélection

(setq n 0)
(while (setq pt (ssname ss n))
 (setq	lst (cons (cdr (assoc 10 (entget pt))) lst)
n   (1+ n)
 )
)

 

Pour inverser la liste, il y a la fonction reverse, on peut aussi créer la liste ent parcourrant le jeu de sélection "à l'envers" :

(repeat	(setq n (sslength ss))
 (setq	lst (cons (cdr (assoc 10 (entget (ssname ss (setq n (1- n))))))
	  lst
    )
 )
) 

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

Posté(e)

A je suis désolé de relancer la discution. Mais concernant le 2eme point. Je me suis mal exprimé.

 

Je voulais dire inverser la sélection. Prendre ce qui est à l'extérieur du cercle par exemple. Car dans le fichier spécial_sélections.lsp il y a Inv_sel Inverse le jeu de sélection courant. Ôn doit pouvoir faire quelque chose avec. pour avoir à la fin pareil une liste du type ((x1 y1 z1)(x2 y2 z2)(...)...)

 

Merci

Posté(e)

Salut,

 

Je ne comprends pas ta demande, le LISP invSel inverse la sélection courante, c'est à dire, après avoir s&lectionné des objets, InvSel permet de désélectionner ces objets et sélectionne tout les autres objets du dessin.

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é