Aller au contenu

Lissage d\'objet 3D


Messages recommandés

Posté(e)

Bonjour,

J'ai crée une reduction excentrique avec un maillage polygonal

puis je l'ai transformé en un solide mais cela me crée une multitude de petite surface qui pose deux problemes:

_ un fichier enorme

_ une impression pas terrible

Est- ce que quelqu'un aurait une methode pour lisser l'objet.

 

De plus j'ai pas encore compris comment mettre une image pour illustrer ma requete

 

Merci

Virgile

Dessinateur Projeteur en tuyauterie frigorifique.

Posté(e)

Re- bonjour

J'ai trouvé bordel c'etait simple.

voila le probleme en image:

 

http://img108.exs.cx/img108/3924/RED-200150.jpg

 

Virgile

Dessinateur Projeteur en tuyauterie frigorifique.

Posté(e)

Ah oui

 

Mais la t'arrives quand même dans les limites d'AutoCAD

 

Parce que pour réaliser cette forme simplement tu dois utiliser le maillage comme tu la fais en non les solides

 

Petit rappel AutoCAD gère les surfaces comme mailles c'est à dire que les petites faces de ta forme son composés de plan

 

AutoCAD ne gère pas ce que l'on appelle les NURBS qui sont des forme plus complexe.

 

C'est pourquoi tu te retrouve avec tout un tas de petite mailles

 

Et pour avoir un lissage propre il faut augmenter le nombre de mailles.

 

Si tu as souvent à réaliser ce genre de forme il faudrait penser à migrer vers un logiciel comme Inventor ou Solidworks ou Solidedge ou Pro/E ou Topsolid (comme ca on ne m'accusera pas de faire du favoritisme :D )

 

A plus

 

Eric

Posté(e)

Re bonjour,

C'est bien un solide car le maillage a été transormé en solide par projection puis avec quelque transformation.

Donc, Eric, la seule solution est d'augmenter la valeur de SURFAB1 et SURFTAB2.

 

 

 

 

Si quelq'un a une methode pour dessiner des reductions excentrique en 3D j'aimerais bien de l'aide aussi la dessus.

 

Merci.

Virgile

Dessinateur Projeteur en tuyauterie frigorifique.

Posté(e)

C'est un lisp pris sur internet je ne sais plus ou.

Il etait destiné à faire des rond->carré

D'abord il faut créer une surface gauche du demi volume de la piece voulue:

http://img90.exs.cx/img90/1381/RondCarre.jpg

puis lancer la commande M2S du lisp ci-dessous:

 

 

;; M2S (Mesh-to-Solid)

;; Creates an ACIS solid from an open 3d polygon mesh.

;;

;; Take 2 - Updated 7/7/1998

;; - Works with REVSURF'd meshes that touch or cross axis of revolution.

;; - Works even if solid being constructed is not fully visible on screen.

;; - Works with all open meshes created with REVSURF, RULESURF,

;; EDGESURF, TABSURF, AI_MESH, and 3DMESH. Most of the stock 3D

;; surfaces will work if you use DDMODIFY to open them in the M

;; and N directions.

;; - Does not work with polyface entities.

;;

;; © Copyright 1998 Bill Gilliss.

;; All rights reserved... such as they are.

;;

;; bill.gilliss@aya.yale.edu gilliss@iglou.com

;;

;; I wrote this to create sculptable ACIS terrain models

;; for architectural site renderings. It could also be used

;; to create thin shells from meshes, by subtracting a moved

;; copy of the solid from the original solid. Let me know of

;; other uses you find for it, or problems you encounter.

;;

;; The solid is created by projecting each mesh facet "down"

;; the current z-axis to a plane a user-specified distance below

;; the lowest vertex. To assure that all parts of the mesh are

;; generated as solids, this distance can not be zero, but the

;; solid can be SLICEd later if need be.

;;

;; The solid will match the displayed mesh: if the mesh has

;; been smoothed and SPLFRAME is set to 0, the solid will be

;; smoothed. Otherwise, it will not be. The mesh itself is not

;; changed at all.

;;

 

 

(defun c:m2s (/ ent ename entlst M N MN SN SM ST smooth oldecho vtx d1

low vtxcnt vtxmax bot bottom p1 p2 p3 p4 c1 c2 c3 c4

b1 b2 b3 b4 soldepth ssall ssrow)

 

(setq oldecho (getvar "cmdecho"))

(setq oldsnap (getvar "osmode"))

(setq oldblip (getvar "blipmode"))

(setvar "cmdecho" 0)

(setvar "osmode" 0)

(setvar "blipmode" 0)

(command "_undo" "_begin")

 

;;select the mesh

(setq ent (entsel "Select a polygon mesh to solidify: "))

(setq ename (car ent))

(setq entlst (entget ename))

 

(if (not (= (cdr (assoc 0 entlst)) "POLYLINE"))

(progn

(alert "That is not a polygon mesh.")

(exit)

(princ)

);progn

);endif

 

(if

(not

(or

(= (cdr (assoc 70 entlst)) 16) ;open 3d polygon mesh

(= (cdr (assoc 70 entlst)) 20) ;open mesh w/ spline-fit vertices

);or

);not

(progn

(alert "That is not an *open* polygon mesh.")

(exit)

(princ)

);progn

);endif

 

;; decide whether to use smoothed or unsmoothed vertices

(setq M (cdr (assoc 71 entlst))) ;M vertices

(setq N (cdr (assoc 72 entlst))) ;N vertices

(setq SM (cdr (assoc 73 entlst))) ;smoothed M vertices

(setq SN (cdr (assoc 74 entlst))) ;smoothed N vertices

(setq ST (cdr (assoc 75 entlst))) ;surface type

(if

(or

(= (getvar "splframe") 1) ;use MxN vertices when splframe = 1

(= ST 0) ;or mesh has not been smoothed

)

(setq smooth 0

MN (* M N))

(setq smooth 1 ;use SMxSN vertices when mesh is smoothed

MN (* SM SN) ;and SPLFRAME = 0

M SM

N SN)

);if

 

;; determine lowest vertex

(grtext -2 "Checking out the mesh...")

(setq vtx ename)

(setq vtx (entnext vtx))

(setq d1 (entget vtx))

(setq bottom (caddr (trans (cdr (assoc 10 d1)) 0 1)))

 

(repeat (1- MN) ;compare with each vertex's z coord

(setq vtx (entnext vtx))

(setq d1 (entget vtx))

(setq low (caddr (trans (cdr (assoc 10 d1)) 0 1)))

(setq bottom (min bottom low))

);repeat

 

;; get desired thickness of solid

(setq soldepth 0)

(while

(zerop soldepth)

(progn

(setq soldepth

(getdist "\nEnter desired thickness of solid below lowest vertex <1>: "))

(if (not soldepth) (setq soldepth 1.0))

(if (zerop soldepth)

(princ "\nThickness can be small, but not zero. (Slice it later, if need be.)"))

);progn

);while

(setq bot (- bottom (abs soldepth)))

 

(setq p1 ename)

(if (= smooth 1)

(setq p1 (entnext p1))) ;skip 1st vtx of smoothed mesh - not true vtx

(setq ssrow (ssadd)) ;initialize set of extruded segments to be unioned as a row

(setq ssall (ssadd)) ;initialize set of rows to be unioned into the whole

(grtext -2 "Creating row...")

(setq vtxmax (- MN N))

(setq vtxcnt 1)

 

;;create row of solid segments

(while (< vtxcnt vtxmax)

 

(if (= 0 (rem vtxcnt N)) ;at end of each row...

(progn

(setq rowmsg (strcat "Unioning row "

(itoa (/ vtxcnt N)) " of "

(itoa (1- M)) "... "))

(grtext -2 rowmsg)

(command "union" ssrow "")

(setq row (entlast))

(ssadd row ssall)

(setq ssrow (ssadd))

(setq p1 (entnext p1) ;skip to the next vertex

vtxcnt (1+ vtxcnt))

);progn

);if

 

(grtext -2 "Creating row...")

(setq p1 (entnext p1) ;first vertex of mesh square

p2 (entnext p1) ;second vertex

p3 p2)

(repeat (1- n) (setq p3 (entnext p3))) ;walk along to 3rd (p1 + N) vertex

(setq p4 (entnext p3)) ;4th vertex of mesh square

 

(setq c1 (trans (cdr (assoc 10 (entget p1))) 0 1) ;top coordinates

c2 (trans (cdr (assoc 10 (entget p2))) 0 1)

c3 (trans (cdr (assoc 10 (entget p3))) 0 1)

c4 (trans (cdr (assoc 10 (entget p4))) 0 1)

b1 (list (car c1) (cadr c1) bot) ;bottom coordinates

b2 (list (car c2) (cadr c2) bot)

b3 (list (car c3) (cadr c3) bot)

b4 (list (car c4) (cadr c4) bot))

(LOFT c1 c2 c3 b1 b2 b3)

(LOFT c2 c3 c4 b2 b3 b4)

 

(setq vtxcnt (1+ vtxcnt))

);while

 

(grtext -2 "Unioning last row...")

(command "_union" ssrow "")

(setq row (entlast))

(ssadd row ssall)

(if (> M 2) ;bypass final union for N x 1 meshes (i.e., RULESURF)

(progn

(grtext -2 "Unioning all rows...")

(command "_union" ssall "")

);progn

);if

 

;;cleanup

(command "_undo" "_end")

(setvar "cmdecho" oldecho)

(setvar "osmode" oldsnap)

(setvar "blipmode" oldblip)

(setq ssall nil ssrow nil)

(princ)

 

);defun

 

;;============== SUBROUTINES ====================

;(defun *error* (msg)

; (command)

; (command "_undo" "_end")

; (setvar "cmdecho" oldecho)

; (setvar "osmode" oldsnap)

; (setvar "blipmode" oldblip)

; (princ (strcat "\nError: " msg))

; );defun

 

(defun LOFT (r1 r2 r3 s1 s2 s3 / e1 extr highest)

(command "_area" s1 s2 s3 "")

(if (not (equal (getvar "area") 0.0 0.00000001))

(progn

(command "_pline" s1 s2 s3 "c")

(setq highest (max (caddr r1) (caddr r2) (caddr r3)))

(setq extr (- highest bot))

(command "_extrude" (entlast) "" extr 0.0)

(command "_slice" (entlast) "" "3points" r1 r2 r3 s1)

(setq e1 (entlast))

(ssadd e1 ssrow)

);progn

);if

);defun

 

(princ "M2S loaded.")

 

 

 

Dessinateur Projeteur en tuyauterie frigorifique.

Posté(e)

Tu peux lancer PEDIT->Lisser sur ta surface maillée, une seule fois.

 

"Retrouver" te premet le retour arrière.

 

A faire avant le M2S (si ca marche, pas sur, sur une surf lissée)

 

Au fait, tu peux redimensionner tes images...mais, à l'aide webmestre, je ne sais plus le BBCode pour redimensionner une image.

 

Attends, j'essaie

 

300x300http://img90.exs.cx/img90/1381/RondCarre.jpg[/img]

 

C'est bon, si tu veux bien éditer tes messages avec 300x300 au lieu de ("x" comme xylophone)

 

[Edité le 24/11/2004 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é