Aller au contenu

comment creer fichier point xyz des sommets polylignes 3d


Messages recommandés

Posté(e)

bonjour,

je cherche un programme lisp ou vba autocad qui permet de créer un fichier coordonnées xyz des sommets des polylignes 3d ,

la commande liste de autocad semble trop fastidiieuse à l'utliser comme j'ai bcp bcp de polylignes(pour mon cas ,mes polylignes sont des courbes de niveau )

 

j'en serais tres reconnaisante si vous pourriez m'aider

Posté(e)

Salut,

 

Un truc vite fait, comme je ne sais quel type de fichier tu veux, j'ai essayé quelque chose de polyvalent : tu peux l'enregistrer en txt et l'ouvrir avec excel (séparateur = virgule), en .csv si Windows est paramétré pour le séparateur de données = virgule et en .scr si tu veux l'utiliser comme script pour recopier les polylignes dans d'autres dessins.

La précision des points dépend de la valeur de la variable LUPREC.

 

(defun c:3dpoly2file (/ path ss file lst)
 (vl-load-com)
 (if (and
(setq path (getfiled "Créer un fichier" (getvar "DWGPREFIX") "" 1))
(ssget '((0 . "POLYLINE") (-4 . "&") (70 . 8)))
     )
   (progn
     (setq file (open path "w"))
     (vlax-for	pl (setq ss (vla-get-ActiveSelectionSet
		      (vla-get-ActiveDocument
			(vlax-get-acad-object)
		      )
		    )
	   )
(write-line "_3dpoly" file)
(setq lst (vlax-get pl 'Coordinates))
(while lst
  (write-line
    (strcat (rtos (car lst))
	    ","
	    (rtos (cadr lst))
	    ","
	    (rtos (caddr lst))
    )
    file
  )
  (setq lst (cdddr lst))
)
(write-line "" file)
     )
     (close file)
   )
 )
 (princ)
) 

 

PS : comme tu peux le voir, il n'était pas nécessaire de poster 3 fois le même message pour avoir une réponse.

Aussi, pourrait-tu effacer tes messages dans les autres forums (Editer > ! Effacer ce message !

 

[Edité le 16/4/2008 par (gile)]

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

Posté(e)
merci de m'avoir repondu

mais avant d'effacer ces messages ,il faut d'abord essayer ta solution :) et voir s'il ya autres réponses

 

Si tu dois avoir d'autres réponses, tu les auras aussi bien dans ce fil, et si d'autres répondent sur les autres fils, il n'y aura plus moyen de les effacer.

Au delà d'alourdir le site (qui n'en a pas besoin), multiplier des sujet similaires rend plus difficiles les recherches futures.

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

Posté(e)

bonsoir;

merci ca a marché pour les polylignes en 3D :)

cependant qd j'ai voullu tester le routine sur les courbes de niveau qui sont des polylignes en 2D dont les sommets sont définis en XY ET Z,ca n'a pas marché ,j'arrive pas à sélectionner les courbes de niveau , alors que je veux récuperer plutot les coordonnées de ces sommets sur un fichier txt,

j'ai abusé un peu mais j'ai besoin de ton aide ,parceque vraiment je suis coincée.

 

eh j'ai effacé les messages sur les autres forum comme tu as dit :)

Posté(e)

Voilà une version qui devrait fonctionner avec les polylignes 3d, les polylignes 2d et les polylignes optimisées (mais il ne pourra être utilisé comme script qu'à condition de remplacer tous les types de polylignes par : _3dpoly)

 

(defun c:poly2file (/ path ss file lst pt nor elv)
 (vl-load-com)
 (if (and
(setq path (getfiled "Créer un fichier" (getvar "DWGPREFIX") "" 1))
(ssget '((-4 . "[b]		 (-4 . "[b]		 (0 . "POLYLINE")
	 (-4 . "[b]		 (-4 . "&")
	 (70 . 112)
	 (-4 . "NOT>")
	 (-4 . "AND>")
	 (0 . "LWPOLYLINE")
	 (-4 . "OR>")
	)
)
     )
   (progn
     (setq file (open path "w"))
     (vlax-for	pl (setq ss (vla-get-ActiveSelectionSet
		      (vla-get-ActiveDocument
			(vlax-get-acad-object)
		      )
		    )
	   )
(setq lst (vlax-get pl 'Coordinates))
(cond
  ((= (vla-get-ObjectName pl) "AcDb3dPolyline")
   (write-line "Polyligne 3d" file)
   (while lst
     (write-line
       (strcat (rtos (car lst))
	       ","
	       (rtos (cadr lst))
	       ","
	       (rtos (caddr lst))
       )
       file
     )
     (setq lst (cdddr lst))
   )
   (write-line "" file)
  )
  ((= (vla-get-ObjectName pl) "AcDb2dPolyline")
   (write-line "Polyligne 3d" file)
   (setq nor (vlax-get pl 'Normal))
   (while lst
     (setq pt (trans (list (car lst) (cadr lst) (caddr lst)) nor 0))
     (write-line
       (strcat (rtos (car pt))
	       ","
	       (rtos (cadr pt))
	       ","
	       (rtos (caddr pt))
       )
       file
     )
     (setq lst (cdddr lst))
   )
   (write-line "" file)
  )
  ((= (vla-get-ObjectName pl) "AcDbPolyline")
   (write-line "Polyligne optimisée" file)
   (setq nor (vlax-get pl 'Normal)
	 elv (vla-get-Elevation pl)
   )
   (while lst
     (setq pt (trans (list (car lst) (cadr lst) elv) nor 0))
     (write-line
       (strcat (rtos (car pt))
	       ","
	       (rtos (cadr pt))
	       ","
	       (rtos (caddr pt))
       )
       file
     )
     (setq lst (cddr lst))
   )
   (write-line "" file)
  )
)
     )
     (close file)
   )
 )
 (princ)
) 

 

[Edité le 17/4/2008 par (gile)]

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

Posté(e)

voila,j'ai essayé de charger le programme mais il m'affiche l'erreur suivante

Commande: _appload 2DPoly.lsp correctement chargé(s)

2DPoly.lsp a été ajouté à la liste des applications lancées au démarrage.

Commande: ; erreur: cdrs supplémentaire dans la paire pointée en entrée

Posté(e)

ouf, je peux enfin modéliser mon terrain tranquillement

merci mille merci gile ,t'es génial

 

j'ai essayé d'effacer les message mais je vois qui'ils sont encore la :)

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é