1
$\begingroup$

Some weeks ago I downloaded a couple of 3d models from Thingieverse in STL format and I wanted to make some minor modifications before printing. The modification were:

  • I wanted to split a multi part STL files into separate models (I had trouble with printing all of them together)
  • I wanted to move a few millimeters a feature to improve (IMHO) the load carrying capacity of the model.

However, upon importing in in Solidworks I realized that I was unable to edit by applying new features based on the existing STL. (From what I recall I was not even able to remove some of the parts with a cut extrude feature). I did a little search and realised that generally STL files are not editable. (In the end, I used blender to edit the part, and I made the other part from scratch).

So my (main) question is:

Is there a procedure I can follow so that I can convert an STL file to a native sldprt file (FeatureWorks has a similar functionality but I couldn't apply it)

Additionally, I have the following bonus questions ( I can create separate post if you feel the question needs more focus) :

  1. Is the non editability of the STL a feature meant to protect intellectual property (similar to a PDF)?
  2. What is the concept of STL in layman's terms? Does it store, vertices/edges/faces/volumes? (I got the impression that the STL build the model by creating basic tetrahedra)
$\endgroup$
2
$\begingroup$

Let's look at your bonus questions first:

  1. No. Intellectual property isn't relevant, and STLs are definitely "editable" - I use Meshmixer to edit them directly. It is meant to make a file safe to open on pretty much any device with predictable results, similar to a PDF.

  2. STL's store the vertices.

SOLIDWORKS creates models using what's known as "Boundary Representation" or BREP, and creates a 'mathematically perfect' shape (to within floating point calculation tolerances). You will notice that a cylinder created in SOLIDWORKS is a single smooth surface, where a cylinder saved as an STL is made up of numerous flat polygons, which bridge the gaps between the vertices. The size of these facets (and so the tradeoff between STL complexity and accuracy to the ideal geometry) is determined during export from BREP to Mesh.

Mesh support is pretty new in SOLIDWORKS, it's improved hugely over the more recent software versions, but still has a way to go. The information below is based on SW2020.

When you drag/drop an STL into SOLIDWORKS, by default, it imports as a graphic body. Your first step should be: INSERT -> FEATURES -> CONVERT TO MESH BODY. Select everything, hit OK, and then delete all graphic bodies from the feature tree, leaving only "Imported" bodies.

  • Splitting multi-part STLs is usually handled directly in the slicing software. You can simply delete the "Imported" bodies that you don't want, or use a "Delete/Keep Bodies" feature to do so non-destructively if you prefer.
  • Moving a feature is a little trickier, and may be best handled, again, with mesh-specific software such as Meshmixer or Blender, depending on your specific model. That said, it is possible to edit Mesh bodies with SOLIDWORKS. There are two main ways you can interact with Mesh bodies. These are with surfaces (e.g. Surface Cut, Split, etc.), or with another mesh body, using the "Combine" tool.

So, to Add a feature to your mesh, you can model said lump as normal, use "Convert to Mesh Body" to create a mesh, with whatever resolution you require, and then use "Combine" and "Add" to join these together.

To Cut a feature from your mesh, it's best to use the same process with the "Subtract" option, as this gives you control over the resolution. Alternatively, if the cutting tool sticks out of the original mesh, you can delete one face of the solid to make a surface, and use surface cut.

To move a feature, therefore, your would need use a surface or plane with the "split" tool to separate the feature from the main body, use "move/copy bodies" to place it in your desired location, and then use "combine" to reattach it when you are done.

With a native SOLIDWORKS file, you can use features like "move face", and the other faces around the feature being moved are able to 'grow' to fill in any gaps. STL files simply do not contain the data of where their faces are in the same way, and cannot afford this functionality.

In a Mesh editing specific software, you would be able to select the STL faces/vertices directly and move these around, but this would likely leave deformed polygons either side of the moving feature - which requires additional steps to fix anyway!

EDIT: I never answered your actual main question - can you convert an .STL to a native .SLDPRT, allowing you to interact using all tools? Yes and no.

You can convert the mesh to a solid BREP made of lots of flat surfaces. This takes a very long time, and is not recommended except on the simplest of models.

You can also use the Scan-To-3D Add in to assist on re-modelling a mesh part. You still need to model the part 'from scratch', but sketch generation is considerably sped up. This is a whole 'nother can of worms, and not really intended for 'Thingiverse modifications" http://help.solidworks.com/2020/english/SolidWorks/scanto3d/c_Scanto3d_overview.htm

$\endgroup$
2
  • $\begingroup$ Wow that was an essay and a half... $\endgroup$ – Jonathan R Swift May 6 at 9:07
  • $\begingroup$ Again to the rescue! $\endgroup$ – NMech May 6 at 9:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.