Aller au contenu

Region vers polyligne


Invité Sylvainhinard

Messages recommandés

Invité Sylvainhinard

Bonjour,

 

J'ai un fichier contenant des region que je voudrait tranformer en polyligne pour faire des metrés. Quelqu'un saurait t-il si il existe un LISP qui fait cela?

 

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu pourrais, dans un premier temps, essayer de décomposer simplement ta région.

Tu dois (peut être) obtenir par exemple des Lignes et des Arcs.

L'option "Pedit" "Multiple" "Joindre" te permettra de reconstituer facilement ta polyligne.

 

Bruno V.

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

Lien vers le commentaire
Partager sur d’autres sites

J'ai un fichier contenant des region que je voudrait tranformer en polyligne pour faire des metrés

 

Pour faire des métrés, la région, c'est tout aussi bien (essaie de faire une poly avec une région qui contiendrait un bout de spline, ca marche pas).

 

Donc il te faut un utilitaire pour lister les regions et leurs caractéristiques.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Invité Sylvainhinard

Bonjour,

 

J'ai bien lu vos réponse et je pense que j'ai oublié de préciser certaines chose. Pour faire mes métrés j'utilise Covadis. Quand j'utilise "Métrés de Surface", si je n'ai que des regions dans mon calque Covadis ne peut pas me faire mes metres de surfaces. D'autres part je veux transformer ces regions en polyligne par ce que je voudrait utiliser (sous Covadis toujours) la commande : Hachurage Contours par Calque. Et enfin ces regions me servirait de base pour construire mes platefome (toujour avec Covadis). D'où ma question du debut...

Lien vers le commentaire
Partager sur d’autres sites

Une autre méthode…

 

Voici une macro qui va exporter les objets sélectionnés vers un fichier DXF V12 : sur C:\region_r12…

 

^C^Cselect;\expert;5;_saveas;dxf;v;r12;o;p;;;c:/region_R12;expert;2;script;region_R12;

 

le fichier script est à copier dans un dossier connu d’AutoCAD

(Menu Outils : Options : Onglet Fichiers… Rubrique : Chemin de recherche de fichiers de support)

 

Bizarrement, dans un SCRIPT et une MACRO, la commande _EXPLODE ne fonctionne que sur un Objet à la fois (c’est précisé dans l’aide AutoCAD !) ! C’est complètement débile ce changement de comportement d’une commande… :mad: Mais bon ! on fait avec… c’est pourquoi il y a un peu de LISP dans ce sript…

 

Pour une version LT, pas de LISP donc, il faudrait créer un bouton pour décomposer qui ressemblerait à ça :

 

*^C^C_explode;tout;

on décompose en boucle, dès le dernier objet décomposé la commande se bloque à : « L'objet ne peut pas être décomposé. Rien trouvé. »

 

Et un bouton pour joindre les polylignes :

 

^C^Cpeditaccept;1;_pedit;m;tout;;j;0;;

 

 

fichier contenant les 3 MACROS (pour vos COPIER-COLLER)

 

Et pourquoi pas utiliser ces 3 Macros pour une version complète aussi. Avantage : les menus ( MACROS ) sont compatibles AutoCAD complet et LT. Dans ce cas, dans le scirpt on ne gardera que les 2 premères lignes.

 

ATTENTION, encore une autre bizarrerie, les ellipses et les splines (j’ai pas tout vérifié) sont transformées en polyligne 3D au lieu de polyligne 2D dans le DXF 12…. ???… Et ça ! ça fout la pagaille dans la 3e MACRO pour joindre les polylignes… :mad:

 

Je préfère toujours essayer de passer par des MACROS avant d’avoir recours à de la programmation en raison de la compatibilité entre toutes les versions récentes…. :casstet:

 

Christian

 

 

[Edité le 7/12/2004 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Bjr a tous,

 

J'aimerai faire la même chose (région --> polyligne) mais cette démarche ne fonctionne pas dans mon cas.

Pkoi ? Parceque mes régions ne se créeent que lorsque je joins des élipses. En passant par un .dxf j'obtients des polylignes 3D qui une fois décomposées me donnent une multitude de lignes.

 

Ma question est donc de savoir s'il est possible de convertir :

une elipse en polyligne ?

ou

une polyligne 3D en polyligne ? (pas forcement la bonne solution vu le nombre de points d'accroche)

 

 

[Edité le 10/12/2004 par Azerty]

Une seule chose à dire : MERCI CADxp !

Lien vers le commentaire
Partager sur d’autres sites

La conversion de polyligne ou l'applatissement de celle-ci, vaste programme :(

 

Je te propose plusieurs fonctions avec différentes approches. Il est possible de trouver mieux, ou encore d'autres approches ailleurs, faire des recherches sur d'autes forums ou sites.

 

Tu trouveras peut être ton bonheur dans l'une des 3. ;)

(defun c:spl3Dto2D ( / flag_erase old_osmd e l_dxf l_som 2d_lsom )
(setvar "cmdecho" 0)
(initget "Général Courant _Wolrd Current")
(if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]: ") "Wolrd")
	(command "_.ucs" "_world")
)
(initget "Oui Non _Yes No")
(if (eq (getkword "\nEffacer la spline3D [Oui/Non] ") "No")
	(progn (princ "\nBien Chef, on conserve") (setq flag_erase T))
	(setq flag_erase nil)
)
(setq old_osmd (getvar "osmode"))
(setq js (ssget "_X" '((0 . "SPLINE") (67 . 0) (410 . "Model"))))
(cond
	(js
		(command "_.undo" "_begin")
		(setvar "osmode" 0)
		(repeat (setq n (sslength js))
			(setq l_dxf (entget (setq e (ssname js (setq n (1- n))))))
			(setq l_som (mapcar '(lambda (x) (trans x e 0)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) l_dxf))))
			(setq 2d_lsom (mapcar '(lambda (x) (trans (list (car x) (cadr x) 0.0) 0 1)) l_som))
			(command "_.pline"
				(foreach n 2d_lsom (command n))
			)
			(command "_.pedit" (entlast) "_spline" "")
			(if (not flag_erase)
				(entdel e)
			)
		)
		(setvar "osmode" old_osmd)
		(command "_.undo" "_end")
	)
	(T
		(princ "\nAucune Spline trouvée")
	)
)
(setvar "cmdecho" 1)
(prin1)
)

 

(defun C:S-E2PL ( / ent typent dxf_ent obj_vlax param_start param_end perim_obj pt_start pt_end res_track flag_ucs last_e old_osmd old_pdmd l_pt)
(while (null (setq ent (entsel "\nChoix de la Spline ou Ellipse à convertir en polyligne: "))))
(setq typent (cdr (assoc 0 (setq dxf_ent (entget (car ent))))))
(cond
	((or (eq typent "SPLINE") (eq typent "ELLIPSE"))
		(vl-load-com)
		(setq
			obj_vlax (vlax-ename->vla-object (car ent))
			param_start (vlax-curve-getStartParam obj_vlax)
			param_end (vlax-curve-getEndParam obj_vlax)
			perim_obj (vlax-curve-getDistAtParam obj_vlax (+ param_start param_end))
			pt_start (vlax-curve-getStartPoint obj_vlax)
			pt_end (vlax-curve-getEndPoint obj_vlax)
		)
		(initget 6)
		(setq
			res_track (getdist (cadr ent) (strcat "\nDistance de résolution<" (rtos (/ perim_obj 100.0)) ">: "))
			last_e (entlast)
			old_osmd (getvar "osmode")
			old_pdmd (getvar "pdmode")
		)
		(if (not res_track) (setq res_track (/ perim_obj 100.0)))
		(initget "Oui Non _Yes No")
		(if (eq (getkword "\nVoulez vous faire une projection sur le SCU courant? [Oui/Non]: ") "Yes")
			(setq flag_ucs nil)
			(progn
				(command "_.ucs" "_entity" (car ent))
				(setq flag_ucs T)
			)
		)
		(cond
			((and (eq typent "SPLINE") (not (zerop (boole 1 1 (cdr (assoc 70 dxf_ent))))))
				(setq l_pt '("_close"))
			)
			((and (eq typent "ELLIPSE") (zerop (cdr (assoc 41 dxf_ent))) (eq (cdr (assoc 42 dxf_ent)) (* 2 pi)))
				(setq l_pt '("_close"))
			)
			(T
				(setq l_pt (cons (trans pt_end 0 1) '("")))
			)
		)
		(setvar "osmode" 0)
		(setvar "pdmode" 1)
		(setvar "cmdecho" 0)
		(command "_.measure" (car ent) res_track)
		(while
			(and
				(= (cdr (assoc 0 (setq dxf_ent (entget (entlast))))) "POINT")
				(not (equal (entlast) last_e))
			)
			(setq l_pt (cons (trans (cdr (assoc 10 dxf_ent)) 0 1) l_pt))
			(entdel (entlast))
		)
		(command "_.pline" (mapcar 'command (cons (trans pt_start 0 1) l_pt)))
		(if flag_ucs (command "_.ucs" "_previous"))
		(initget "Oui Non _Yes No")
		(if (not (eq (getkword "\nEffacer l'entité source [Oui/Non] : ") "No"))
			(entdel (car ent))
		)
		(setvar "osmode" old_osmd)
		(setvar "pdmode" old_pdmd)
		(setvar "cmdecho" 1)
	)
	(T (princ "\nN'est pas une Spline ou Ellipse!"))
)
(prin1)
)
(princ "\nS-E2PL.LSP chargé. Tapez S-E2PL pour convertir SPLINE ou ELLIPSE en POLYLIGNE.")
(prin1)

 

(defun c:PL3Dto2D ( / js flag_ps flag_ucs old_osmd lay_cur n ent l_dxf lay_nam s_dxf 2d_lsom flag_cl flag_sp nw_pt)
(setq js (ssget "_X" '((0 . "POLYLINE") (-4 . "&=") (70 . 8) (410 . "Model"))))
(cond
 (js
  (setvar "cmdecho" 0)
  (command "_.undo" "_begin")
  (if (zerop (getvar "tilemode"))
   (progn
    (setq flag_ps T)
    (setvar "tilemode" 1)
   )
   (setq flag_ps nil)
  )
  (if (zerop (getvar "worlducs"))
   (progn
    (setq flag_ucs T)
    (command "_.ucs" "_world")
   )
   (setq flag_ucs nil)
  )
  (setq old_osmd (getvar "osmode") lay_cur (getvar "clayer"))
  (repeat (setq n (sslength js))
   (setq l_dxf (entget (setq ent (ssname js (setq n (1- n)))))
         lay_nam (cdr (assoc 8 l_dxf))
         s_dxf (entget (entnext (cdar l_dxf)))
         2d_lsom nil
   )
   (if (zerop (boole 1 1 (cdr (assoc 70 l_dxf))))
    (setq flag_cl nil)
    (setq flag_cl T)
   )
   (if (zerop (boole 1 4 (cdr (assoc 70 l_dxf))))
    (setq flag_sp nil)
    (setq flag_sp T)
   )
   (while (/= (cdr (assoc 0 s_dxf)) "SEQEND")
    (if (zerop (boole 1 207 (cdr (assoc 70 s_dxf))))
     (setq nw_pt (cdr (assoc 10 s_dxf))
           2d_lsom (cons (list (car nw_pt) (cadr nw_pt) 0.0) 2d_lsom)
     )
    )
    (setq s_dxf (entget (entnext (cdar s_dxf))))
   )
   (setvar "clayer" lay_nam)
   (command "_.pline"
    (foreach n 2d_lsom (command n))
   )
   (cond
    ((and flag_cl flag_sp)
     (command "_.pedit" (entlast) "_close" "_spline" "")
    )
    (flag_cl
     (command "_.pedit" (entlast) "_close" "")
    )
    (flag_sp
     (command "_.pedit" (entlast) "_spline" "")
    )
   )
   (entdel ent)
   (setvar "osmode" old_osmd)
  )
  (if flag_ucs (command "_.ucs" "_previous"))
  (if flag_ps (setvar "tilemode" 0))
  (setvar "clayer" lay_cur)
  (command "_.undo" "_end")
  (princ (strcat "\n" (itoa (sslength js)) " 3Dpoly(s) ont leurs Z à zéro et sont converties en 2Dpoly ou LWPOLYLINE."))
 )
 (T
  (princ "\nAucune 3Dpoly trouvée")
 )
)
(setvar "cmdecho" 1)
(prin1)
)

 

 

A essayer ! résultats non garantis

 

Bruno V.

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

Lien vers le commentaire
Partager sur d’autres sites

J'aimerai faire la même chose (région --> polyligne) mais cette démarche ne fonctionne pas dans mon cas.

Pkoi ? ....

Si HPBOUND est sur le réglage poly, c'est normal que ca ne marche pas, il faut le mettre sur réglage region (1 ou 0).

Ma question est donc de savoir s'il est possible de convertir :

une elipse en polyligne ?

en passant par un vieux DXF

une polyligne 3D en polyligne ? (pas forcement la bonne solution vu le nombre de points d'accroche)

Impossible, la poly3D est 3D, la poly 2D est strictement 2D, on est d'accord ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é