Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. 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.

Designing laser cut finger joints by hand is tedious. Here's how to automate it! (tutorial)

alnisalnis Member, Developers Posts: 446 EDU
It's no fun spending hours manually making tabs for laser cut (or CNC router cut) finger joints, only to have them break when a model parameter changes. Fortunately, with Onshape, we have some awesome FeatureScript-based solutions, so I made a tutorial to demo/show how to use them! I'm using @lemon1324's "Laser joint" and "Auto layout" FeatureScripts. Huge thanks for making such awesome automations!

Link to the tutorial:

If you have any questions, feedback, or video/tutorial ideas, please let me know! Also, I'm planning on trying to make Onshape tutorials Monday/Wednesday/Friday. What would be an appropriate frequency/amount to post them to this forum? I really don't want to spam/clog things up/annoy anyone! I'm happy posting none at all, one a week, a "weekly digest," or each one as it comes out, or something else, just let me know.

Link to the final public document: https://cad.onshape.com/documents/911c7d4c83c10390d2f023d5/v/ef952579db9528bbe57e12be/e/aa4fee8b5651082d4d436e1c
Student at University of Washington | Get in touch: [email protected] | My personal site: https://alnis.dev | Currently an Onshape intern: [email protected]


  • Domenico_DDomenico_D Member, Onshape Employees Posts: 59 PRO
    Wow that's an awesome video! You reminded me of all the keyboard shortcuts I should be using.

    I hadn't seen the auto layout FeautureScript before either. Definitely is going to come in handy for me. 

    Thank you for making these videos, please keep them coming!
  • alnisalnis Member, Developers Posts: 446 EDU
    Thanks for the kind words!

    One thing I really love about the auto layout feature is that it will automatically make countersunk holes face downward (avoiding accidentally cutting out the countersink diameter along with the hole diameter). Saves a lot of time and material!
    Student at University of Washington | Get in touch: [email protected] | My personal site: https://alnis.dev | Currently an Onshape intern: [email protected]
  • bruce_williamsbruce_williams Member, Developers Posts: 842 PRO
    OK @alnis_smidchens !!  now besides our routers getting more use, I want a laser!  Great job of showing a ton of efficient methods, tips, & tricks.  Thank you!
  • alnisalnis Member, Developers Posts: 446 EDU
    @bruce_williams thanks for watching and for the kind words! I also really want a laser... can't wait until the university's maker spaces/fab labs open and I can fabricate some stuff!
    Student at University of Washington | Get in touch: [email protected] | My personal site: https://alnis.dev | Currently an Onshape intern: [email protected]
  • tony_459tony_459 Member Posts: 206 ✭✭✭
    edited August 2020
    @alnis_smidchens: Do you have a maker space in your area? Those are cropping up in lots of places and are usually very affordable for all the machines you can use ($50/mo where I am).
    Because they're not governed by universities, they might be open even when your school is closed. I know the one closest to me is, and I'm in one of the most aggressive states to tackle the pandemic...
    Not my local maker zone, but the best example of one, and one the Onshape staff might be familiar with, since they are local to them: https://artisansasylum.com. Those places are awesome :D

  • tony_459tony_459 Member Posts: 206 ✭✭✭
    @alnis_smidchens : You should do a video on prepping a model for 3D-printing ;-)
  • alnisalnis Member, Developers Posts: 446 EDU
    @tony_soares459 I do have a few in the area, but I figure if my university says it's not safe to go to maker spaces, I should probably stay home (plus the university ones are minimal to no cost with access to lots of equipment). My priority right now is staying safe and healthy, and I do have a 3D printer as well as a variety of hand tools at home, so I have plenty to do :)

    That's a good video idea! I'll add it to my production queue/schedule. Onshape is definitely the easiest CAD program for 3D printing I've used so far.
    Student at University of Washington | Get in touch: [email protected] | My personal site: https://alnis.dev | Currently an Onshape intern: [email protected]
  • tony_459tony_459 Member Posts: 206 ✭✭✭
    edited August 2020
    Just to be clear, I'm not suggesting we pretend there isn't a pandemic spreading at full steam and start congregating in mass like it's normal times again. Far from it. I wanted only to say that if you're really really dying to make stuff, and you do your social distancing and keep your mask on and wash your hands regularly and visit the maker space in the off-peak hours, then it's an option. It doesn't seem you need it, but now I have to qualify my answer to make clear I'm not suggesting we ignore the facts---you're smart for being cautious :)
  • tk_mtk_m Member Posts: 1
    Thank you for making this! 
  • dirk_van_der_vaartdirk_van_der_vaart Member Posts: 428 ✭✭✭
    edited December 2020
    Great video, thanks

    One remark, isn't it faster-easier to make a final sketch and use the Use command, then you don't need to worry about scaling the drawing.
    After creating the sketch, just right click and export.
    see document,
  • alnisalnis Member, Developers Posts: 446 EDU
    @tk_m glad I could help!

    @dirk_van_der_vaart that is definitely a faster/easier way to get a DXF, but there are two main disadvantages:
    1. Since "Use" only projects the outlines of faces, not the holes on their inside, you have to manually project any holes or slots on the panels.

    2. If we make some sort of major update to the parts (e.g. changing the number of tabs on an edge, adding/removing some pieces, etc.), the drawing will update completely automatically when we press the yellow refresh button, while for the sketch, we'll have to delete some old entities and re-project new ones.

    Student at University of Washington | Get in touch: [email protected] | My personal site: https://alnis.dev | Currently an Onshape intern: [email protected]
  • lemon1324lemon1324 Member, Developers Posts: 221 EDU
    Hey @alnis_smidchens, awesome video! I'm not sure how I missed this given that you tagged me in the original post, but this is super clear!

    A couple of small notes:
    1. You mention the prerequisite is multiple intersecting panels of a uniform thickness, which is maybe a little ambiguous - only each part needs to be planar, different parts in the single joint can have different thicknesses.
    2. At one point you add allowance internal to the joint of half the kerf.  My own workflow is to drop in a kerf compensation feature after doing the auto layout to do all of the compensation at once.  The reason for doing it this way is so that all sides of the part are compensated, and it comes out to nominal size.  If you don't do this, assembling a joint so that the parts touch means that the ends of the pins end up overlapping by your kerf (also things you thought were 25mm end up as 24.8). The intent of the allowance features is if you want to adjust the nominal fit of the joint.  The way you're doing it does work, it just leaves other aspects of the part small by half of a kerf.
    3. I'll go in and make sure adaptive pin sizing also remembers previous.
    4. You might also find a tutorial I did for a class at Stanford interesting for some ideas.  I'm not doing the thicken here because I wanted to illustrate how you might want to do a laser-cut structure that has subassemblies, so my workflow is part studio(s) -> assembly(ies) (or assembly with copied subassemblies) -> in-context copy all in place -> laser joint -> kerf compensation -> auto layout -> drawing. If you don't have repeated subassemblies, then you'd have part studio -> laser joint -> kerf compensation -> auto layout -> drawing(s).
    5. That same tutorial has some recommended parameters for a typical laser and 3/6mm ply that give pretty good slip fit joints that sit flush.  
    Again, great video tutorial, just wanted to leave some thoughts here in case it helps you or anyone else use this set of FeatureScripts.

    Definitely agree with you on drawings being the best way to go - I tried doing the sketch to DXF thing the first time I made this feature and rapidly figured out how annoying it was when I made any changes that resulted in a change in the number of regions.
    Arul Suresh
    PhD, Mechanical Engineering, Stanford University
  • alnisalnis Member, Developers Posts: 446 EDU
    Thanks for the kind words and great feedback @lemon1324! I absolutely should have been more clear with the prerequisite parts; I think I'll put together some visual examples of what the custom feature can accept once I have time to make an updated version of the tutorial. Also, the kerf compensation custom feature seems like a much cleaner and more accurate way to get the physical result to match the intent of the 3D model.

    That assembly-based method with in-context design looks super useful. The tutorial you made is very clean and well-put-together! Also, thanks for the suggestions for the slip fits. Now that the pandemic seems to be a bit better under control (or at least better understood) in Seattle, the university has started to re-open maker spaces as long as social distancing is observed, so I was able to finally go and laser-cut some projects. They absolutely fit together, but I think that the overall kerf compensation method would have made it work even better. Here's a picture of one of the things I made using your custom feature:

    I'll add the link to your tutorial in a pinned comment on the YouTube video, as well as the corrections and improvements. Hopefully, I'll have the second version up sooner rather than later!

    Thanks for all of the great feedback and suggestions!

    Student at University of Washington | Get in touch: [email protected] | My personal site: https://alnis.dev | Currently an Onshape intern: [email protected]
  • lemon1324lemon1324 Member, Developers Posts: 221 EDU
    Neat illustration of why to use the all-in-one kerf compensate: notice the pins at the corners of the box are sitting proud by the laser kerf.

    I did check the code, and added a REMEMBER_PREVIOUS to the joint operation type so that adaptive pins should now remember previous when you make several joints. Latest is V4.3.1.
    Arul Suresh
    PhD, Mechanical Engineering, Stanford University
  • brucebartlettbrucebartlett Member, OS Professional, Mentor, User Group Leader Posts: 2,132 PRO
    Nice Video. This is one of my most used feature scripts, it saves heaps of time. To get the intersections I will quite often use the replace face command first and find this quite and easy.

    I use this mainly for laser cut steel parts and normally use the corner overcut as this helps with fitment on tighter tolerance joints as the laser tends to round the corners a little. 

    Thanks @lemon1324 for the great FS. 
    Engineer ı Product Designer ı Onshape Consulting Partner
    Twitter: @onshapetricks  & @babart1977   
  • dean_mulladean_mulla Member Posts: 7 EDU
    I'm completely new to Feature Scripts.  I'm trying to use @lemon1324's laser joint feature script.  So for each of the 3 Feature scripts in his document I copied verbatim the text he had and renamed to the same name he had.  I also downloaded and uploaded the icon .svg (and named that the same).  Then I changed the 4 imports in Laser Joint FS.  So far so good.  But I cannot find the FeatureScript Laser Utils/V5.0/Laser Utils FS.  I think I need to find that before it will work.

    Or most likely I'm trying to use his FS completely incorrectly....  I probably don't have to go through this process to use his scripting but what is the procedure?  (Likely a different thread is better for this question because it's a basic FS import type question/use public FS type question however since I'm trying to use this specific one I'm asking here.)

Sign In or Register to comment.