Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
techniques for inlaid text for 3d printing
I have been trying to figure out a good technique for handling 'inlaid' text for exporting to 3d printing slicing software. I am saying inlaid as opposed to embossed or raised because I don't just want the text to be an adjustment to the surface but to be a separate entity that i have full form control over and will be printed using a different filament. I have made an example where I was exploring. I don't know the details of sharing a version but the intent was to look at V1.
This works. I have full control over all the parts, the depth of the text, any modifications like drafts, etc. The hassle is that every disjoint piece of the text is a separate part. This means that I have to relatively manually select them and update that selection anytime I modify the text etc. So, in a sense, the issue comes down to one of selection techniques, though I have been thinking about it in terms of the lack of multi-body/disjoint/non-contiguous parts. I started with Pro/E around 25 years ago so I am very used to parts being able to have disjoint volumes. :]
Is there a better path forward than what I've done above? Perhaps I need to learn featurescript and it will provide an opportunity to create some selection logic for 'all parts created by extrude X' or such?
Thanks for any techniques you can offer.
Cheers,
-kyle
Answers
What edits are you trying/wanting to do that the separate pieces cause heart ache? Just trying to grasp context.
@kyle_altendorf
If I understand what you are trying to do, you should try this feature by @jnewth_onshape.
It should do everything you are looking for.
I think what you are looking for is the composite part…
To avoid having to select each part of the text manually (and update if you change the text), you could use the "Composite selected" FS
The two concrete points in this contrived example of a nameplate are the boolean subtract of the text from the plate and then the export of all the parts to a .step for printing. This also propagates the multi-part aspect to the slicer software. Though, that may or may not be an independent aspect. I'll acknowledge that in this particular case it's not a huge deal. But, when I stick a few 'labels' in a few places on a 'real' part, the manual work and likelihood of error will grow rapidly.
Thank you for the fs suggestions. I'll take a look at those when I get a few minutes and see how they work.
Unfortunately I still don't fully comprehend what you are asking for. Forgive me for being dense. Perhaps the native composite part tool is enough for you? You can combine all the text parts into one object for exporting. Also if needed you can apply a single fillet feature to all of the text and not have to do each letter as a new fillet feature if that's what your asking for… in that way if you need to change the fillet size you just change that one feature. if the text is changing characters that may present downstream challenges that might require the use of a feature script to help automate.
I also made two additional responses yesterday that aren't showing…
:|
Maybe as a new user I'm being moderated.Anyways, the biggest problem I've noticed so far with composite parts is that the boolean operations can't use them. But, looking at the linked featurescripts was enough to get me to finally bother getting started with scripts myself. I made a simple inlay feature at https://cad.onshape.com/documents/27a4db84118b371f72db9738/v/a7d9eb4bf20054deca7bc730/e/a36b92571ba5d79ce6f641a6 as my first learning experiment. Note the 'exploded view' in the assembly. It does end up creating a composite part and before that applies the boolean to a query for all parts created by the selected features (or parts themselves). I'm sure I'll find some way in which this isn't a great or general solution, but it seems useful for the moment and also got me started coding with featurescript.
Don't think you're being dense.
:]
I've been known to explain my desires poorly and to be envisioning issues that may or may not come up. Just in case, I'll try one more example. Let's say I am designing a control panel face. Imagine it housing some knobs and buttons etc. Each one ought to be labeled. This would result in possibly hundreds of parts that would need to be kept track of. The suggested featurescripts are useful for condensing the part count. They don't work with using the text to 'cut away' from the base part since composite parts don't work with the boolean op.@kyle_altendorf
I do not follow what you are saying about Boolean operations not being able to use composite parts. Could you share a bit more?
when you go to create the file for printing the text just marquee select all of them in the graphics area or do a shift select in the part tree and export as needed being sure to turn off export as separate files. This will give you one file for all the text as modeled. Which you can print in a different filament from the part that has the text cut out of it. I think that’s ultimately what you’re trying to do. You don’t need to make all the text one object to get it to export as one object.
Hmm, I do now see that I can indeed click in the rendered area and select individual parts from the composite part. This is even worse than selecting them all in the part list on the left without a composite part. If I try to click on the left on the
Composite part 1
to select it as a tool, nothing happens.https://cad.onshape.com/documents/001d337cbd5640e047bfb094/w/828cc1e53be7f3fa5aa40629/e/ad113db06ac34bb0ca248583
@GregBrown made a version of Boolean called Auto Boolean that takes features as inputs, which means you can choose whatever feature made the text as an input and it will get all of the letters even if they change. Does that do what you're after? Here's an example.
I am now seeing your dilemma….hmmm. This is surprising that I cannot select/deselect in a way that I thought would have been natural based on most other selections method by nearly every other software I've ever used. My thought an prayers are with your dead clicker finger. lol. Now I need to articulate this conundrum into text somehow or learn something new that I don't yet know about it.
Found this unanswered post that explains it a little… I will expand on that thread since it went unanswered when I get a chance and have searched for an existing improvement request
It depends. If I'm going to print the text separately and glue it in then yes, separate would be ok. Sometimes I'll probably want that. In this case I was thinking about printing in place so I would want it to be with the part it is inlaid into.
That brings up another difficulty I intend to look into today. Dealing with, for example, an assembly of various 'parts' with 'multiple colors' and exporting it to print where the multiple color pieces of a 'part' stay 'together' in the slicer but the separate parts can easily be moved and auto arranged. I think there are limits in both OnShape and the slicers and maybe even the formats between so I need to do some research. Separate topic though, the next layer.
Ah so your are printing multicolor in place. Beyond my experience there for now.
@kyle_altendorf did the Auto-Boolean workflow help?
As for having separate assemblies in your slicer, I expect that's best handled by grouping parts on the slicer side. All you may want to do in Onshape would be to export each "assembly" as its own stl so you can process them in your slicer. I tested this out with the Bambu slicer and there's a way to do it.
@kyle_altendorf
There is an issue with composite parts and Boolean. Now that I think about it, I don't believe this is my first time bumping into it. In my test document, I used@jnewth_onshapefs, which allows for creating a composite right in the tool. This composite body works with boolean operations.It makes me think there is a bug in the composite tool. Do you have any thoughts on why this would be?@jnewth_onshapeEdit;
I just realized that I believe I used window select in the first boolean and didn't even think about what I did.
That does indeed sound a lot like what I did. Thanks for pointing that out. I do need to go figure out where to search for existing FS and maybe even how to see how popular they are.
Yes, the assemblies are useful for this for sure. It would be nice to be able to have one action in OnShape to export everything I want, for example an assembly of various parts of which some may be 'compound' like having inlaid text and thus multiple bodies. Then on the slicer side to similarly be able to select everything and 'reload from disk' to get the updated geometry for all items. OnShape does provide an assembly export but by the time it gets to the slicer it doesn't have nested assemblies, at least not via
.step
. There's also the.zip
export with 'unique parts as individual files'. That both loses the quantities on repeated parts and doesn't keep the 'inlays' together.Thanks for the pointers. While I can certainly make something useful and get my stuff done, I'm trying to also figure out how to make this configurable tooling easily used by other people as well.
You can right click a Composite Part and export that, so if you have multiple bodies with text you can use that to group them for easy exporting. On a test it does seem to update alright in Bambu Studio (not sure what slicer you're using). If there are fewer letters with the update it will leave one of the old ones to delete, and if there are more then they won't have the right material assigned, but the position of the over all part group stays put. I think you'd have to export/reload each Composite Part individually, which may not be too bad depending on how often you're doing this.