Aller au contenu

Sommets d\'une LWpolyligne


Messages recommandés

Invité Patrick
Posté(e)

La fonction Vlisp suivante renvoie une liste de tous les sommets d'une

LWpolyligne:

 

(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget

lwpolyline)))

 

lwpolyline est le nom de l'entité LWpolyligne à fournir à la fonction.

Peut-on faire plus court? Là est la question... le débat est ouvert.

  • 1 an après...
  • 1 mois après...
Posté(e)

Serge,

 

Est ce que la solution de transformé ta fameuse ligne en:

(mapcar '(lambda (x) (trans x e 0)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (setq e (car (entsel)))))))

 

Ne serait t'elle pas plus sûr (tenir compte du dxf 210?) pour ramener les points dans le SCG?

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bruno,

 

Les codes dxf sont toujours exprimés en terme du référentiel absolu (WCS ou SCG).

 

Par contre, ta suggestion est bonne si tu veux convertir les points en termes de SCU, dans le contexte où tu dessinerais via (command "lacommande" pt1 pt2 pt3 etc)

 

Incidemment, j'avais publiée une routine plus générale qui traite les polylignes anciennes et optimisées

 

;;; getVertices

;;; Retourne une liste de sommets

;;; Usage (getVertices ename), où le ename s'obtient par un entsel, un ssget, etc.

(defun getVertices (

ename

/ plineGet return vertex vertexGet

)

(setq return nil)

(cond

((or (/= (type ename) 'ENAME) (not (setq plineGet (entget ename)))) (setq return nil))

((= "POLYLINE" (cdr (assoc 0 plineGet)))

(setq vertex (entnext ename))

(while (= "VERTEX" (cdr (assoc 0 (setq vertexGet (entget vertex)))))

(setq return (cons (cdr (assoc 10 vertexGet)) return))

(setq vertex (entnext vertex))

)

(setq return (reverse return))

)

((= "LWPOLYLINE" (cdr (assoc 0 plineGet)))

(setq return (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) plineGet)))

)

(t (setq return nil))

)

return

)

 

Serge

 

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é