Aller au contenu

faces 3d en polylignes3d


Messages recommandés

Posté(e)

Ca devrait le faire!

 

(defun C:3dfto3dpo ( / js ind e_name ent dxf_10 dxf_11 dxf_12 dxf_13)
(setvar "cmdecho" 0)
(princ "\nChoix des 3Dfaces.")
(setq js (ssget '((0 . "3DFACE"))) ind 0)
(cond
	(js
		(setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384)))
		(while (setq e_name (ssname js ind))
			(setq
				ind (1+ ind)
				ent (entget e_name)
				dxf_10 (trans (cdr (assoc 10 ent)) 0 1)
				dxf_11 (trans (cdr (assoc 11 ent)) 0 1)
				dxf_12 (trans (cdr (assoc 12 ent)) 0 1)
				dxf_13 (trans (cdr (assoc 13 ent)) 0 1)
			)
			(if (not (equal dxf_12 dxf_13 1E-012))
				(command "_.3dpoly" dxf_10 dxf_11 dxf_12 dxf_13 "_close")
				(command "_.3dpoly" dxf_10 dxf_11 dxf_12 "_close")
			)
		)
		(princ (strcat "\n" (itoa ind) " 3Dpoly crées à partir de 3Dface."))
		(setvar "osmode" (rem (getvar "osmode") 16384))
	)
	(T (prompt "\nAucune sélection valide."))
)
(setvar "cmdecho" 1)
(prin1)
)

 

[Edité le 16/9/2010 par bonuscad]

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

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

Bonjour,

 

Juste pour ma culture personnelle. Je n'arrive pas à voir l'intérêt de cette transformation ?

 

Merci d'éclairer ma lanterne.

 

(c'est curieux il y a la même demande d'un autre utilisateur de le Forum Autocad 2011

 

 

cordialement

Thierry Garré

 

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

Posté(e)
Bonjour,

 

Juste pour ma culture personnelle. Je n'arrive pas à voir l'intérêt de cette transformation ?

 

Merci d'éclairer ma lanterne.

 

(c'est curieux il y a la même demande d'un autre utilisateur de le Forum Autocad 2011

 

 

cordialement

 

peut etre que certains souhaitent rebalancer leur projet en polyligne 3D sur des logiciels comme Google Sketchup... sinon pareil que vous Thierry, ne vois pas trop l'intérêt

Nicolas

Posté(e)

 

Hello

 

Eh bien j'aurais besoin de la routine inverse !

 

Soit une selection classique de N Polylignes 3D :

- Si 3D Polyligne avec 3 vertex, on dessine (sur le calque courant) UNE 3DFace "triangle"

- Si 3D Polyligne avec 4 vertex on dessine UNE 3Dface si les 4 vertex sont coplanaires

sinon on dessine DEUX 3Dfaces "triangle"

- Si 3D Polyligne avec plus de 4 vertex on force en ROUGE (ou autre couleur) les "mauvaises" 3D Polylignes

 

A la sortie, on donne le total de chaque d'objet traite et genere ...

 

Merci d'avance pour cette routine INVERSE !

 

Car par exemple la notion de 3D Face n'existe pas vraiment dans Oracle mais les 3D Polylignes : OUI - Donc avec les deux routines, je peux transformer mes 3D Faces en 3D Polylignes, les stocker dans Oracle, puis les re-afficher plus tard et lancer la routine INVERSE pour retrouver des 3D Faces !

 

Le Decapode "Oraclant"

 

 

Autodesk Expert Elite Team

Posté(e)

Salut,

Pas bête lecrabe...

Et si on prend le lisp et qu'on le retourne sa marche pas ????

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

 

Hello

 

SVP je refais appel a votre bon coeur "tres chers" developpeurs car franchement j'aimerais bien la petite routine "3DPolto3DFace" evoquee dans mon message precedent !? :)

 

Pour Rhymone, sympa ta reponse ! Ah si c'etait aussi simple !! :P

 

Le Decapode

Autodesk Expert Elite Team

Posté(e)

Ah si c'etait aussi simple !!

 

Guère plus compliqué...

 

Donc dans la même philosophie, pas testé en profondeur.

 

(vl-load-com)
(defun l-coor2l-pt (lst flag / )
 (if lst
   (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0))
     (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)
   )
 )
)
(defun C:3dpolTO3dface ( / js ind count e_name lst_pt)
 (setvar "cmdecho" 0)
 (princ "\nChoix des 3DPolylignes.")
 (setq js (ssget '((0 . "POLYLINE") (-4 . "&") (70 . 9))) ind 0 count 0)
 (cond
   (js
     (setvar "CMDECHO" 0)
     (command "_.UNDO" "_Begin")
     (while (setq e_name (ssname js ind))
       (setq
         ind (1+ ind)
         lst_pt (l-coor2l-pt (vlax-get (vlax-ename->vla-object e_name) 'Coordinates) T)
       )
       (cond
         ((eq (length lst_pt) 3)
           (command "_.3DFACE"
             "_none" (trans (car lst_pt) 0 1)
             "_none" (trans (cadr lst_pt) 0 1)
             "_none" (trans (caddr lst_pt) 0 1)
             "" ""
           )
           (setq count (1+ count))
         )
         ((eq (length lst_pt) 4)
           (command "_.3DFACE"
             "_none" (trans (car lst_pt) 0 1)
             "_none" (trans (cadr lst_pt) 0 1)
             "_none" (trans (caddr lst_pt) 0 1)
             "_none" (trans (cadddr lst_pt) 0 1)
             "_none" (trans (car lst_pt) 0 1)
             "" ""
           )
           (setq count (1+ count))
         )
       )
     )
     (command "_.UNDO" "_End")
     (setvar "CMDECHO" 1)
     (princ (strcat "\n" (itoa count) " 3DFaces crées à partir de 3Dpolylignes."))
   )
   (T (prompt "\nAucune sélection valide."))
 )
 (prin1)
)

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

Posté(e)

 

Hello Ardechois Coeur Fidele :)

 

J'ai teste en vitesse dans le SCG sur un MAP 3D 2006 et ta routine semble bien fonctionner

 

Merci beaucoup, Le Decapode

 

Autodesk Expert Elite Team

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é