PreForm: Separate disjoint geometry


#1

I would find it extremely useful if, in PreForm, the context menu when clicking on a model had a new option “Separate” (or “Split”, etc.), that would take all the nonoverlapping geometries in the selected model and split them off into their own new models.

This would make my workflow a lot more convenient; because then e.g. I could export all my parts as a single STL instead of one STL per part, avoid mesh splitting steps in third-party tools, etc.

Example of what I’m envisioning (I generated supports and rafts just for clarity in these illustrations):

And then, upon selecting “separate”:

Possibly with a dialog asking if you’d like to delete or keep the original model (edit: although, in thinking about it, I don’t know why you’d ever want to keep the original here, and you can always duplicate it first if you do).

Note: I think, to remain intuitive and have the most use, it should separate non-overlapping/touching regions; not simply isolated vertex/edge graphs. That is, if I had this model (2 overlapping meshes), it shouldn’t be separated into two parts:

image

This (two cylinders - each its own mesh - touching), also should remain a single part:

image

Edit: The above note is replaced with some discussion below, and I’ve changed my mind to:

a dialog box with a toggle if you have well formed geometry (i.e. each distinct part is a single mesh) and want to separate parts that touch [or overlap], too.

Thanks,
Jason


#2

This would make my workflow a lot more convenient; because then e.g. I could export all my parts as a single STL instead of one STL per part, avoid mesh splitting steps in third-party tools, etc.

Why are you exporting your geometry with the parts overlapped like that? Wouldn’t it be easier to simply separate them in the original source file so when you import them in to Preform they’re already spaced apart? You don’t need mesh-splitting tools if the meshes are separate entities, even if they overlap, just move 'em.

Maybe there’s something fundamental I’m not understanding, but I’m not seeing the problem you’re asking to have fixed.

This (two cylinders - each its own mesh - touching), also should remain a single part:

Two cylinders, each its own mesh, touching, is not a single part. It is two separate parts that are touching. This is treated differently by the slicer than if the parts are actually a union of the two sets of geometry.

If you want your geometry to be joined, it can be done in your CAD software, no?


#3

Why are you exporting your geometry with the parts overlapped like that?

I’m not. I believe you misunderstood, or I wasn’t clear. In the example model, with the 4 shapes, none of them overlap:

com-gif-maker

shapes.stl (657.2 KB)

Two cylinders, each its own mesh, touching, is not a single part. It is two separate parts that are touching. This is treated differently by the slicer than if the parts are actually a union of the two sets of geometry.

That never has appeared, and currently does not appear, to be the case (and wouldn’t be the intent of such a model anyways once it’s brought into PreForm); the slicer effectively unions everything regardless of connectivity:

cylinders_touching.stl (44.2 KB)

If you want your geometry to be joined, it can be done in your CAD software, no?

Yes, that’s where I always join geometry.

… I’m not seeing the problem you’re asking to have fixed.

There’s no problem; this is a feature request, not a bug report. :slight_smile:


Maybe phrasing my request differently will clear things up:

I’d like a “Separate” feature that splits a model into its isolated objects. By “isolated” I mean that if you were to print the model as-is, then remove all of the supports, an “isolated” object would be just a physically separate piece.

The note at the end was to clarify that I wouldn’t want the “Separate” behavior to apply to stuff that wouldn’t be printed as physically distinct objects, even if the model is sloppy and overlapped.

It’s a pretty straightforward request, I think. I might have just overspecified.


#4

I’m still not understanding. If I have multiple separate pieces of geometry in the same STL, and I import it to Preform, I can’t move the pieces individually, but if I print them and remove the supports, each piece will be separate from the others.

If I want to arrange the pieces individually, I don’t export them all as a single object. I keep them all in the same source file, but I select and export each component separately so I can import in to Preform separately, and orient them optimally for whatever shape they have…

Is that what you mean? A feature that allows you to manipulate the discrete pieces of geometry that exist in a single common file?


#5

Yes that’s what I mean. Just like in the example. :slight_smile:

Just a thing to let you eliminate the “select and export each component separately” step (if you’ve got the source CAD files) or the third party tools if you’ve got somebody else’s model. My current workflow sounds about the same as yours.

Btw it’s not unusual for me to have non unioned overlaps that are actually single parts, either, particularly when dealing with procedurally generated parts from hacky external tools. I have a pretty wide range of applications with models from a wide variety of sources.

But there could always be a dialog box with a toggle if you have well formed geometry and want to separate parts that touch, too. Makes everybody happy, it sounds like, and it’s probably better as an option anyways, next to “delete original model”.


#6

I have a friend who’s only recently started to learn to 3D print (FDM). He refuses to learn CSG, and constructs all his models out of overlapping primitives. Mostly, his slicer handles it OK. But there have been times he’s had intractable printing issues with a design that I easily fixed by unioning the overlapping components.


#8

Thinking about it more, this dialog probably is just noisy and unnecessary. It seems strange to want to keep the original, and you can always duplicate the model first if you want.