Aller au contenu

faire une triangulation sur autocad 2007 avec pts 3d


Messages recommandés

Posté(e)

à la main comme en 2006 3DFACES par 3DFACES :P

 

 

à moins d'utiliser un applicatif qui pallie ce manque (triangulation Delaunay)

 

il me semble avoir vu trainé sur les téléchargements menbres un lisp de ce genre

 

http://www.cadxp.com/UpDownload+index-req-viewsdownload-sid-7.html [/url]

 

[Edité le 29/12/2006 par thierry.garré]

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

Bonjour

 

Autodesk Civil 3D est une extension d'AutoCAD qui permet entre autres de :

 

- créer rapidement des MNT à partir de points 2D ou 3D

-faire du nettoyage de dessin (fermeture de polygones, suppression de doublons)

-gérer les calques (par filtres et par type d'objets)

-de créer des profils en long de voirie et les cubatures

-de créer des maquettes 3D virtuelles dans le dwg ou dans le dwf.

 

Je te recommande d'utiliser cet autoCAD + qui te fera gagner du temps parce que dédié à ton métier, et simple pour la modélisation de MNT.

 

Autrement, pour un applicatif métier plus poussé en topo, Covadis est aussi adapté.

 

Chatondes

Posté(e)

Cette question revenant très souvent, je vous donne une solution GRATUITE et LEGALE, mais il va falloir s'accrocher pour la mettre en oeuvre.

(maitriser un tant soit peu l'anglais risque d'être indispensable)

 

Tout d'abords télécharger les sources d'un applicatif en licence libre qui est vraiment "de la balle", les possibilités sont vraiment énormes.

Voir ICI pour le téléchargement et les détails du logiciel.

 

Ceci fait, il va falloir compiler les sources de triangle afin d'obtenir un EXE

Je l'ai fait avec CYGWIN sans avoir aucune connaissance des compilateurs et j'y suis arrivé. Bien s'assurer d'obtenir les packages nécessaires pour la compilation : ggg++, make dans devel.

C'est un compilateur d'après ce que j'ai compris du monde Unix compatible avec windows (les pros vous en diront plus), il est très basique (console de terminal) mais à l'air très puissant.

 

Voici la syntaxe que j'ai employé pour la compilation:

gcc -c -mno-cygwin triangle.c

puis:

gcc -o triangle -mno-cygwin triangle.o

 

en ayant placé les sources dans le dossier home\profile de CygWin

 

NB: Ce compilateur n'apparaitra pas dans la liste ajout/suppression de windows, pour l'enlever il y a une procédure que je n'ai pas encore faite.

 

et après on peut utiliser un lisp.

 

Voici celui que j'utilise, mais une adaptation et amélioration peut être nécessaire.

Si Patrick_35 pouvait m'orienter pour éviter les appels à la commande "SH" d'autocad à l'aide des fonction vlax

 

(defun trinerr (ch / )
(cond
	((eq ch "Function cancelled") nil)
	((eq ch "quit / exit abort") nil)
	((eq ch "console break") nil)
	(T (princ ch))
)
(setvar "cmdecho" sv_cmd)
(setq *error* olderr)
(princ)
)
(defun espa (chn / )
(while (eq (substr chn 1 1) " ")
	(setq chn (substr chn 2))
)
(while (/= (substr chn 1 1) " ")
	(if (eq (substr chn 1 1) "")
		(setq chn '" ")
		(setq chn (substr chn 2))
	)
)
)
(defun triele (f1 f2 k / f11 f22 a b nbrpt nbrtr num dx dy alt pt numtr numpt1 numpt2 numpt3 lstpt p1 p2 p3 js_sel h_extr)
(setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384)))
(setq lstpt ())
(setq f11 (open f1 "r"))
(setq f22 (open f2 "r"))
(setq a (read-line f11))
(setq b (read-line f22))
(setq nbrpt (read a))
(setq nbrtr (read b))
(cond
	((eq k "PMaille") (command "_.pface"))
	((eq k "SOlid") (setq js_sel (ssadd)))
)
(prompt "\nLecture du fichier NOD en cours!\n")
(repeat nbrpt
	(setq a (read-line f11))
	(setq num (read a))
	(setq a (espa a))
	(setq dx (read a))
	(setq a (espa a))
	(setq dy (read a))
	(setq a (espa a))
	(setq alt (read a))
	(setq pt (cons num (cons dx (cons dy (list alt)))))
	(cond ((eq k "PMaille") (command (cdr pt))))
	(setq lstpt (cons pt lstpt))
	(prompt (strcat "\t" (itoa num) " Point(s) lu(s)\r"))
)
(cond ((eq k "PMaille") (command "")))
(close f11)
(prompt "\nDessin de la triangulation en cours!\n")
(repeat nbrtr
	(setq a (read-line f22))
	(setq numtr (read a))
	(setq a (espa a))
	(setq numpt1 (read a))
	(setq a (espa a))
	(setq numpt2 (read a))
	(setq a (espa a))
	(setq numpt3 (read a))
	(setq p1 (cdr (assoc numpt1 lstpt)))
	(setq p2 (cdr (assoc numpt2 lstpt)))
	(setq p3 (cdr (assoc numpt3 lstpt)))
	(cond
		((eq k "3Dface") (command "._3dface" p1 p2 p3 "" ""))
		((eq k "PMaille") (command numpt1 numpt2 numpt3 ""))
		((eq k "SOlid")
			(command "_.area" (list (car p1) (cadr p1) 0.0) (list (car p2) (cadr p2) 0.0) (list (car p3) (cadr p3) 0.0) "")
			(cond
				((not (equal (getvar "area") 0.0 0.00000001))
					(command "_.pline" (list (car p1) (cadr p1) 0.0) (list (car p2) (cadr p2) 0.0) (list (car p3) (cadr p3) 0.0) "_close")
					(setq h_extr (max (distance (list (car p1) (cadr p1) 0.0) p1) (distance (list (car p2) (cadr p2) 0.0) p2) (distance (list (car p3) (cadr p3) 0.0) p3)))
					(command "_.extrude" (entlast) "" h_extr 0.0)
					(command "_.slice" (entlast) "" "_3points" p1 p2 p3 (list (car p1) (cadr p1) 0.0))
					(ssadd (entlast) js_sel)
				)
			)
		)
	)
	(prompt (strcat "\t" (itoa numtr) " Nombre de triangle(s) dessiné(s)\r"))
)
(cond
	((eq k "PMaille") (command ""))
	((and js_sel (eq k "SOlid")) (command "_.union" js_sel ""))
)
(prompt "\n")
(close f22)
)
(defun c:trinod ( / sv_und sv_blp typent js jsseg cmvrtx nbr nbrp nbrseg sseg typpol memstr memvrtx namseg vrtx ent fc pt sv_cmd sv_zp cmpth memph k_mod folder)
(setq sv_cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (<= (setq sv_und (getvar "undoctl")) 3) (command "_.undo" "_control" "_all"))
(command "_.undo" "_group")
(setq olderr *error* *error* trinerr)
(setq sv_zp (getvar "dimzin"))
(setvar "dimzin" 0)
(setq sv_blp (getvar "blipmode"))
(setvar "blipmode" 0)
(prompt "\nChoix des points à traiter : ")
(setq js (ssget '((0 . "POINT"))))
(cond
	(js
		(setq nbr 0
		      znl 0
		      jsseg (ssadd)
		)
		(while (setq sseg (entsel "\nChoix de 3Dpoly ou  pour finir ou ignorer : "))
			(setq typpol (entget (car sseg)))
			(cond
				((and (= (cdr (assoc 0 typpol)) "POLYLINE") (eq (logand (cdr (assoc 70 typpol)) 8) 8))
					(setq jsseg (ssadd (car sseg) jsseg))
					(redraw (car sseg) 3)
				)
				(T (prompt "n'est pas une 3Dpoly!"))
			)
		)
		(setq fc (open (strcat (substr (findfile "triangle.exe") 1 (- (strlen (findfile "triangle.exe")) 12)) "bonus.poly") "w") memstr ())
		(while (setq namseg (ssname jsseg 0))
			(setq typpol (entget namseg))
			(while (setq vrtx (cdr (assoc 10 (setq typpol (entget (entnext (cdar typpol)))))))
				(cond 
					(vrtx
						(if (< nbr 2147483647)
							(setq nbr (1+ nbr))
							(setq nbr (+ 1.0 nbr))
						)
						(setq pt
							(strcat
								(rtos nbr 2 0) " "
								(rtos (car vrtx) 2 3) " "
								(rtos (cadr vrtx) 2 3) " "
								(rtos (caddr vrtx) 2 3)
							)
						)
						(setq memstr (append (list pt) memstr))
						(setq memvrtx (cons nbr memvrtx))
					)
				)
			)
			(if (> (sslength jsseg) 0) (setq jsseg (ssdel namseg jsseg)))
		)
		(write-line (strcat (rtos (+ nbr (sslength js)) 2 0) " 2 1 0") fc)
		(cond 
			(memstr
				(setq memstr (reverse memstr))
				(while memstr
					(write-line (car memstr) fc)
					(setq memstr (cdr memstr))
				)
			)
		)
		(setq nbrp 0)
		(repeat (sslength js)
			(setq ent (ssname js nbrp) pt (cdr (assoc 10 (entget ent))))
			(if (< nbrp 2147483647)
				(setq nbrp (1+ nbrp))
				(setq nbrp (+ 1.0 nbrp))
			)
			(setq pt
				(strcat
					(rtos (+ nbr nbrp) 2 0) " "
					(rtos (car pt) 2 3) " "
					(rtos (cadr pt) 2 3) " "
					(rtos (caddr pt) 2 3)
				)
			)
			(write-line pt fc)
		)
		(cond 
			(memvrtx
				(setq nbrseg (1- (length (setq memvrtx (reverse memvrtx)))) cmvrtx 0)
				(write-line (strcat (rtos nbrseg 2 0) " 0") fc)
				(while (not (eq cmvrtx nbrseg))
					(write-line
						(strcat
							(itoa (setq cmvrtx (1+ cmvrtx)))
							" "
							(rtos (car memvrtx) 2 0)
							" "
							(rtos (cadr memvrtx) 2 0)
						)
						fc
					)
					(setq memvrtx (cdr memvrtx))
				)
				(setq cmpth 1 memph ())
				(while (setq pt (getpoint "\nPoint à l'interieur du trou ou  pour finir ou ignorer : "))
					(setq memph (cons pt memph))
		
				)
				(write-line (itoa (length memph)) fc) 
				(while memph
					(write-line (strcat (itoa cmpth) " " (rtos (caar memph) 2 3) " " (rtos (cadar memph) 2 3)) fc)
					(setq memph (cdr memph) cmpth (1+ cmpth))
				)
			)
			(T
				(write-line "0 0" fc)
				(write-line "0" fc)
			)
		)
		(close fc)
		(print (+ nbr nbrp))
		(prompt " Point(s) seront traité par la commande(s).")
		(gc)
		(setq folder (substr (findfile "triangle.exe") 1 (- (strlen (findfile "triangle.exe")) 12)))
		(command "_shell" (strcat "triangle.exe -pcD " "\"" folder "bonus.poly" "\""))
		(prompt "\nAppuyer sur une touche pour continuer!")
		(grread)
		(initget "3Dface PMaille SOlid")
		(setq k_mod (getkword "\nDessiner des [3Dface/PMaille/SOlid] ? <3Dface>: "))
		(if (eq k_mod ()) (setq k_mod "3Dface"))
		(triele (findfile "bonus.1.node") (findfile "bonus.1.ele") k_mod)
		(command "_sh" (strcat "del " "\"" (findfile "bonus.1.poly") "\""))
		(command "_sh" (strcat "del " "\"" (findfile "bonus.1.node") "\""))
		(command "_sh" (strcat "del " "\"" (findfile "bonus.1.ele") "\""))
		(command "_sh" (strcat "del " "\"" (findfile "bonus.poly") "\""))
	)
	(t (prompt "\nSélection vide..!"))
)
(setvar "dimzin" sv_zp)
(setvar "blipmode" sv_blp)
(setq *error* olderr)
(command "_.undo" "_end")
(if (<= sv_und 3) (command "_.undo" "_control" "_one"))
(setvar "cmdecho" sv_cmd)
(prin1)
)

 

[Edité le 31/12/2006 par bonuscad]

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

Posté(e)

salut

pour les géomètres (pur et dur) une triangulation n'as rien à voir avec une modélisation du terrain naturel sous la forme d'un MNT d'ou ma réponse

tu vois les géomètres vont enfin servir à queque chose!!!

mais dit moi une triangulation de quoi pour faire quoi????

sinon méme réponse que thierry garré il me semble q'il y a dans le forum un lisp qui permet de faire des 3D FACES suivant la méthode de delaunay.

amicalement

Pitou66 :) :)

Posté(e)

Bonjour,

 

Je préconise Civil 3D 2007 pour l'avoir utilisé, une simple capture des points est suffisante pour générer instantanément le MNT (je rapelle à partir de points 2D ou 3D).

 

Mais l'avantage indéniable, c'est que l'on peut faire par la suite des modifs de cette triangulation (suppression des lignes, échange des bords) et surtout réaliser des analyses d'altitudes,de flèches de pente, représenter des courbes de niveau, rajouter des lignes de rupture de pentes (bien souvent les points ne suffisent pas pour représenter fidèlement l'existant)

 

Dernière chose, les lignes de rupture de pente sont des polylignes que l'on rajoute à la triangulation par une capture et elles sont dynamiques.

C'est-à-dire que si je modifie une polyligne, la triangulation se reconstruit automatiquement, si je change le semis de points, la triangulation se reconstruit automatiquement aussi.

 

Je pense que cette technologie d'Autodesk peut changer le quotidient d'un utilisateur autoCAD (qui reste dans son environnement AutoCAD 2007) et qui apporte des outils supplémentaires simples et efficaces adapté au métier. Ceci évite de passer par des routines et de les maintenir par conséquent.(Je pense que le travail d'un géomètre ou d'un projeteur n'est pas de programmer ou de "lisper" mais de rendre ses plans et calculs à son client en étudiant des variantes)

 

Il me semble que cela fait sens, mais peut-être que je me trompe.

 

Chatondes

 

 

 

Posté(e)

Salut

je ne suis pas d'accord avec toi

Ceci évite de passer par des routines et de les maintenir par conséquent.(Je pense que le travail d'un géomètre ou d'un projeteur n'est pas de programmer ou de "lisper" mais de rendre ses plans et calculs à son client en étudiant des variantes)

si le géomètre ou le projeteur peut s'aider de routines lisp ou de programme fait par lui mémé ou par d'autres et que cela lui fait gagner un temps considérable pourquoi pas.

Amicalement

Pitou 66 .

Posté(e)

Bonjour,

 

Je suis d'accord avec toi, tout ce qui peut aider est à prendre.

Mais ce que je veux dire, c'est qu'il existe des applicatifs sur AutoCAD (Civil 3D ou Covadis par exemple) qui sont dédiés au métier du projeteur et qui contiennent déjà tout ce dont il a besoin.

 

De plus, dans Civil, il peut être programmé si je me souviens des routines sur des MNT, profils en long directement.(boîte à outils). C'est juste une couche supplémentaire apportée à AutoCAD.

 

 

Chatondes

Posté(e)

Tout à fait du même avis...

L'acquisition d'un Soft pour une utilisation professionnelle et quotidienne est indispensable pour un gain de temps et de fiabilité des résultats.

 

Mais lorsque le besoin est ponctuel, il est impensable d'acquérir ces logiciels qui ne sont pas donnés. Le jeu n'en vaut plus la chandelle.

 

La question au départ était pour "le fun" et avec "AutoCad 2007" La solution que je donne n'est qu'un palliatif et n'a pas la prétention de remplacer un logiciel dédié à ce genre de tâche.

 

Je souligne quand même que Triangle tient compte des lignes de rupture de pentes (si elles sont fournies) pour faire une triangulation. Pour un logiciel libre, il est tout à fait honorable, et rend bien service pour des cas occasionnels.

 

Voilà, il faut juste faire la part des choses, et bien cerner ses besoins.

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

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é