Aller au contenu

Messages recommandés

Posté(e)

Bonjour...

 

Sur une série de plan géomètre, j'ai des entités de type "POLYLIGNE 2D", le problème c'est que je ne peu pas faire de raccord ou de les joindre à des polylignes...

 

d'ou viennent ces entités, quel est leur avantage par rapport aux polilignes? (ça c'est pour ma culture)

 

et peut on les convertir facilement en masse? (ça c'est pour le pratique :) )

Posté(e)

Les polylignes 2D sont les polylignes crées par une TRES ancienne version d'AutoCAD (avant la version 12, je crois). Elles ont été remplacées depuis par les LWPOLYLIGNES ou polylignes.

Je ne connais pas de fonction globale permettant de les transformer en polylignes.

Par contre, il est tout a fait possible d'utiliser les commandes RACCORD ou JOINDRE sur ces objets. Il suffit de vérifier (comme pour les polylignes) qu'elles soient bien à la même élévation !

Posté(e)

Salut,

 

Les polylignes 2d sont les ancêtres des polylignes "optimisées" (LWPOLYLINE).

Ce sont des "entités complexes" comme les polylignes 3d ou les maillages (tous du type POLYLINE), c'est à dire des entités constituées de sous entités (VERTEX).

 

Les options Lissage et sPline sur les polylignes optimisées génèrent des polylignes 2d.

Suivant la valeur de la variable PLINETYPE, la commande POLYLIGN crée des polylignes "optimisées" ou des polylignes 2d.

 

La commande CONVERT permet de transformer les polylignes 2d en polylignes optimisées, mais elle ne fonctionne pas avec les polylignes lissées ou splinées.

 

Le LISP ci-dessous convertit toutes les polylignes 2d en polylignes "optimisées" y compris les polylignes lissées ou splinées, mais pour ces dernières on perdra l'option Retrouver de PEDIT.

 

;; LWCONVERT (gile)
;; Convertit les polylignes 2d (splinées ou lissées) en polylignes optimisées
(defun c:lwconvert (/ ss fltr n)
 (princ
   "\nSélectionnez les polylignes 2d <toutes>"
 )
 (setq	fltr '((0 . "POLYLINE")
       (-4 . "<NOT")
       (-4 . "&")
       (70 . 120)
       (-4 . "NOT>")
      )
 )
 (if
   (or	(setq ss (ssget fltr))
(setq ss (ssget "_X" fltr))
   )
    (progn
      (setq n -1)
      (while (setq pl (ssname ss (setq n (1+ n))))
 (OldStyle2LwPolyline pl)
      )
    )
 )
 (princ)
)

;; OldStyle2LwPolyline
;; Remplace une polyligne 2d par une polyligne optimisée
;;
;; Argument : polyligne 2d (ename)
;; Retour : polyligne optimisée (ename)
(defun OldStyle2LwPolyline (pl / plst xdata vtx vlst elst)
 (setq	plst  (entget pl '("*"))
xdata (assoc -3 plst)
vtx   (entnext pl)
 )
 (while (= (cdr (assoc 0 (setq vlst (entget vtx)))) "VERTEX")
   (if	(zerop (logand (cdr (assoc 70 vlst)) 16))
     (setq elst (cons (vl-remove-if-not
		 '(lambda (x) (member (car x) '(10 40 41 42)))
		 vlst
	       )
	       elst
	 )
     )
   )
   (setq vtx (entnext vtx))
 )
 (if (setq new
     (entmakex
       (append
	 (list
	   '(0 . "LWPOLYLINE")
	   '(100 . "AcDbEntity")
	   (assoc 410 plst)
	   (assoc 8 plst)
	   (cond
	     ((assoc 39 plst))
	     (T '(39 . 0))
	   )
	   '(100 . "AcDbPolyline")
	   (cons 90 (length elst))
	   (cons 70 (logand 129 (cdr (assoc 70 plst))))
	   (cons 38 (last (caar elst)))
	   (assoc 210 plst)
	 )
	 (apply 'append (reverse elst))
	 (if xdata
	   (list xdata)
	 )
       )
     )
     )
   (entdel pl)
 )
 new
)

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

  • 4 ans après...
Posté(e)

j'en suis du déterrage de sujet cette semaine..

 

je n'avais pas sauver ce lisp dans ma bibliothèque, il m'avait pourtant sauver les miche une fois. Jj'ai a nouveau recu un plan plein de polyligne2d qui ne plaisent pas à covadis...

 

mais le

 

 new

)</not")>

 

de la fin me parait louche... et du coup, ça marche pas...

 

Si (gile) ou un un autre codeur fou comprend ce qui bloque je vous en remercie d'avance

 

Posté(e)

Salut,

 

Le code avait effectivement été altéré en plusieurs endroits (très certanement à cause des différentes migrations/mises à jours de CADxp survenues depuis le message original).

 

J'ai recollé le code original dans le message ci-dessus.

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é