Open Polysurface => Silhouette, Make2D, Closed Surface or Solid


#1

Hi,

is it possible to for an open Polysurface to:
a)
create a silhouette with just generating the outer line? I always get a lot of inner triangles and lines, too.

b)
Make2D also generates inner triangles.

c)
embedding the polysurface into a solid, doing a boolean operation and get out solids with surfaces that looks like the polysurfaces?

Bye, MillingGuy


#2

Hi,

Not sure about b, and c, but you could use this modest button to extract the outer silhouette of polysurface/surface (with left mouse click) and interior edges (right mouse click).
There’s also an option whether you want to join curves of these two types or not.
edges.rui (6.7 KB)


(Brian James) #3

Hi,

a) I think you want just a border curve for an object as seen in the viewport and are getting interior surface edges. If what you see in the technical display mode is what you’re after, then no you can’t get that with Silhouette on a polysrf because the edges of all the surfaces will be taken into account. You might get what you want with DupBorder but I’m guessing. Please send a sample file to explain more as I might be misunderstanding and going down the wrong path here.

b) Do you have a sample file where you can point out the objects you don’t want?

c) I’m not sure I understand this one fully. Can you send a sample file to explain?


#4

Silhouette may get interior curves as well, just call CurveBoolean on the result and click somewhere outside the entire figure (delete=all) to get a closed outer border (assuming the object silhouette is closed).

Idem forMake2D

You can do Boolean operations between open objects and closed, as long as Rhino can find a complete intersection. See here

–Mitch


(Brian James) #5

Do you have an example of what you mean Mitch? I don’t see this working here on a polysurface and would love to learn something new today :wink:


#6

I’m sure I can’t teach you anything Brian, but… I assume that MillingGuy wanted a FLAT outline of the object in some view (in this case Top), if a 3D “parting line” type curve is desired, this won’t work as CurveBoolean will project all 3D curves to the active CPlane.

In the case where a flattened silhouette is desired, then in the view desired, just run Silhouette, then CurveBoolean on the result (Delete=All) and click somewhere outside the whole bunch of curves. If there is a complete outline to be found (if the polysurface has no gaps) it will get created. After that I also recommend you use SimplifyCrv on the result.

–Mitch

Silhouette.3dm (882.3 KB)


(Brian James) #7

Very cool Mitch… I was trying to get the perspective view of the silhouette with this technique but CurveBoolean projects to the Cplane. This works great for an Ortho though. Thanks!!


#8

You can always set CPlane to view… But since it’s a perspective projection, the result will be unpredictable… Better in that case to do a Make2D…

–Mitch


(Brian James) #9

Yep… tried that first. It appears to still be the same result as ProjectToCplane and the perspective is lost. Love it for Orthos though.


#10

Dale gave me this a while back:

Hi Jørgen,
Ok, I’ve added a new ViewProjectionXform method to RhinoScript for next week’s build that returns a view-based, 2-D projection transformation that will allow you To project geometry To the world x-y plane To make a 2-D drawing.The transformation matrix returned Is similar the one used by Rhino’s Make2D command.

Care must be taken when using transformation matrix returned by this function as input to either the TransformObject or TransformObjects methods, as Not all 3-D geometry can be projected To 2 - D without creating bad geometry. It Is suggested that only point, point cloud And curve objects be used.
For example:

It is not hooked up in Python yet.

	Dim arrObjects, strView, arrXform
	arrObjects = Rhino.GetObjects("Select curves to draw", 4, True, True)
	If IsArray(arrObjects) Then
		strView = Rhino.CurrentView
		If Rhino.IsViewPerspective(strView) Then
			arrXform = Rhino.ViewProjectionXform(strView)
			Call Rhino.TransformObjects(arrObjects, arrXform, True)
		End If
	End If

#11

Hi,

Helvetosuar: thanks. Your Silhouette.3dm example was exactly the thing I needed.

Luckily there is a MeshToNurb command :wink: because often I get just mesh objects and silhouette is not working on meshes.

Bye, MillingGuy


#12

MeshOutline will get you the view-oriented projected mesh silhouette… But it will not give you a 3D result like Silhouette if that’s what you need.

I know that Make2D will handle meshes for V6, I don’t know if Silhouette will though.

–Mitch