okoo Posté(e) le 20 janvier 2008 Posté(e) le 20 janvier 2008 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.
(gile) Posté(e) le 20 janvier 2008 Posté(e) le 20 janvier 2008 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
okoo Posté(e) le 20 janvier 2008 Auteur Posté(e) le 20 janvier 2008 Merci beaucoup Gile pour ta précieuse aide !
okoo Posté(e) le 21 janvier 2008 Auteur Posté(e) le 21 janvier 2008 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
(gile) Posté(e) le 23 janvier 2008 Posté(e) le 23 janvier 2008 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant