MAC Posté(e) le 25 mars 2005 Posté(e) le 25 mars 2005 Jour à tous!(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car (entsel)))))renvoie les sommets d'une sommets polyligne 2d.Mais comment récupérer les coordonnées des sommets d'une polyligne 3d??.merci!bon week!
Tramber Posté(e) le 25 mars 2005 Posté(e) le 25 mars 2005 (setq ent (car(entsel)));selectionne une entité (cdr(assoc 10(entget ent)))(cdr(assoc 10(entget(entnext ent))))(cdr(assoc 10(entget(entnext(entnext ent))))) renvoient les points suivant, comme tu peux voir, il faut boucler avec un while.genre : (while ent........(setq ent (entnext ent))) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
MAC Posté(e) le 29 mars 2005 Auteur Posté(e) le 29 mars 2005 merci pour tes lumieres ça fonctionne comme je voulais.Ceci amène une nouvelle question: comment dans une boucle avec whileje peux stocker la valeur de chaque boucle pour obtenir au final une liste de la forme: ((x y z) (x y z) (x y z) ...etc)?j'ai essayé avec CONS,mais cela ne semble pas etre la bonne solution.
Tramber Posté(e) le 29 mars 2005 Posté(e) le 29 mars 2005 (setq listsortie nil) (while ent .... (setq poincalcul(....)) (setq listsortie (append listsortie (list poincalcul))) (setq ent (entnext ent)) ) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
MAC Posté(e) le 29 mars 2005 Auteur Posté(e) le 29 mars 2005 Merci encore,Tramber!Sans ce cite et le dévouement des personnes ici qui prennent le temps de répondre àd'illustres inconnus comme moi je m'arracherais les cheveux à essayer de comprendre le lisp et autres subtilités d'autocad et je n'ai jamais autant progressé et eu envie de progresser depuis que je fréquente les "lieux".A charge de revanche!
valamar Posté(e) le 5 avril 2005 Posté(e) le 5 avril 2005 c'est classique mais tout de même plus confortable avec la paire (0 . "SEQEND") (defun c:list3D ()(setq listesortie nil)(setq ent (entnext (car(entsel))));selectionne une entité / poistionnement au début (while (not (equal (assoc 0 (entget ent)) (cons 0 "SEQEND"))); tant que le dernier point signalé par "seqend" n'est pas rencontré.... (setq pointcalcul (cdr (assoc 10 (entget ent)))); renvoi le premier point de la liste (setq listesortie (append listesortie (list pointcalcul)));Calcule la liste des coordonnées des points de la polyligne (setq ent (entnext ent));passe à l'entité suivante)(textscr)(list listesortie);affiche la liste)
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