![]() |
#1 |
Senior Member
Professional user
Join Date: Dec 2003
Location: UK
Posts: 369
|
![]()
I have a new request, which may be easier then the last one.
I'd like to be able to extrude/create a single object with multiple surfaces, regardless of x,y,x position, with the resulting surfaces being parallel to the original, with the normals aligned and all edges attached. So if you have a surface and what to thicken it, then input the thicknes into a dialog and go. Use for creating windows, windscreens on any vehicle or plane. Terms used to call this vary from shell objects to parallel objects. Something like this image, to roof section.
__________________
Regards, Gerry "Mossie" Mos -------------------------------------------------------------------------- WW1 Aircraft Library http://ww1-aircraft.info/ Mossie 3D CAD, "Prompt and Precise" http://mossie3dcad.com/ |
![]() |
![]() |
![]() |
#2 |
Senior Member
Professional user
Join Date: Dec 2003
Location: UK
Posts: 369
|
![]()
Doh.... this feature is already there, extrude by normal.
Learn something new every day. However, what it doesn't do it maintain a parallel surface. Try it on a half pipe and see what you get, the edges get misaligned. So is this a "bug" ?
__________________
Regards, Gerry "Mossie" Mos -------------------------------------------------------------------------- WW1 Aircraft Library http://ww1-aircraft.info/ Mossie 3D CAD, "Prompt and Precise" http://mossie3dcad.com/ Last edited by Mossie; 27th February 2009 at 06:38 AM. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Professional user
Join Date: Jul 2005
Location: France
Posts: 737
|
![]()
"No" this is not a bug, this is the way it works in AC3D when you extrude several "non-aligned" faces at once.
What we need is something usually called "extrude region" (by normal). I hope it will be implemented in the future. So I'm with you with that request.
__________________
OL. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Professional user
Join Date: Nov 2007
Posts: 139
|
![]()
Do we have this yet? With the development of 3D printing this sounds like a useful tool to give surfaces a specified depth... If it doesn't exist yet I may have to try creating it...
Ron |
![]() |
![]() |
![]() |
#5 |
Senior Member
Professional user
Join Date: Dec 2003
Location: UK
Posts: 369
|
![]()
I'm not aware at it exists, but would be happy to be proven wrong.
__________________
Regards, Gerry "Mossie" Mos -------------------------------------------------------------------------- WW1 Aircraft Library http://ww1-aircraft.info/ Mossie 3D CAD, "Prompt and Precise" http://mossie3dcad.com/ |
![]() |
![]() |
![]() |
#6 |
Junior Member
Member
Join Date: Aug 2013
Location: London UK
Posts: 22
|
![]()
Surely the normal extrude does this - use the 'extrude by distance' and decide in which direction you want the faces extruded (eg 0,0,0.2 to extrude along the Z axis, 0.2,.2,.2 for a diagonal extrusion).
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Professional user
Join Date: Nov 2007
Posts: 139
|
![]()
Geoffm,
Thanks for pointing the Extrude tool out. It does exactly what I was thinking about implementing, which is duplicating each face, swapping its normal, and moving the vertexes $(width) along the line which bisects all the surface normals. I see now the problem Mossie was talking about earlier. The new plane only ends up parallel to the original plane if all the surrounding faces are the same angle, further $(width) is not the distance between the two faces unless the whole region is flat. This will require further contemplation to come up with an algorithm... Ron |
![]() |
![]() |
![]() |
#8 |
Senior Member
Professional user
Join Date: Nov 2007
Posts: 139
|
![]()
I think the math below will do the extrusion we're after, I just need to figure out how to write an Ac3d plug-in to do the work, after looking at the tcl commands available I don't think its sufficient to do much of anything.
Code:
d = distance to extrude, scalar N[] //surface (plane) normal, vector M[] // vertex normal vector, average (bisector) of adjoining plane normals V0 // original vertex location, point Vs // transformed vertex location, point // Should replace V0 with average of all surface points? Ps = V0+dN[] //transform point on surface vector math, point // Helper variables // k can live for the whole surface k = N[x]Ps[x]+N[y]Ps[y]+N[z]Ps[z] // t must be calculated per vertex t=(k-N[x]V0[x]-N[y]V0[y]-N[z]V0[z])/(N[x]M[x]+N[y]M[y]+N[z]M[z]) // Vs new vertex location Vs[x] = V0[x] + tM[x] Vs[y] = V0[y] + tM[y] Vs[z] = V0[z] + tM[z] |
![]() |
![]() |
![]() |
Thread Tools | |
Display Modes | |
|
|