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.
50 Digital Joints FeatureScript - I want feedback!
Aaron_Hoover
Member Posts: 35 EDU
First off, big thanks to everyone who has helped me bumble my way through learning FeatureScript so far: @ilya_baran, @lemon1324, @lana, @Jake_Rosenfeld, @mbartlett21, @lana, @kevin_o_toole_1, @NeilCooke (and anyone else I may have missed). This has been a really fun project to cut my teeth on so far.
I've completed a *very* alpha version of 6 of the "50 Digital Joints," namely the "Frame Corner Joints." And, I'd love to get feedback from anyone and everyone both on their behavior/usability as well my approach to implementation. You can find the FeatureScript here: https://cad.onshape.com/documents/23dc8ff499026deeed6aa19e/w/0031df2b6d633ae1a21ed033/e/ecf25bb128148651d6f2a998
Here are some up front assumptions/requirements I make in the code:
I know for a fact that there are a lot of ways to get these joints to behave unexpectedly/nonsensically. My goals with this first pass were 1) to begin to learn FeatureScript and 2) to produce useful output assuming the user does something reasonable. Nevertheless, if you find unexpected behavior for what you think are reasonable inputs, I want to hear about it.
After I tidy up and do some minor refactoring on the Frame Corner Joints, I think I'll move on to the Board Corner Joints (joining flat sheets at 90 degrees), but if anyone has suggestions for other joints (from the library) to implement, I'm all ears.
Finally, I have solid models for the 50 joints in folders organized they way they are in the original collection. Is there any way to make an entire folder public so that I could share the imported models with the community without having to click each individual file?
I've completed a *very* alpha version of 6 of the "50 Digital Joints," namely the "Frame Corner Joints." And, I'd love to get feedback from anyone and everyone both on their behavior/usability as well my approach to implementation. You can find the FeatureScript here: https://cad.onshape.com/documents/23dc8ff499026deeed6aa19e/w/0031df2b6d633ae1a21ed033/e/ecf25bb128148651d6f2a998
Here are some up front assumptions/requirements I make in the code:
- Both sides of the joint are rectangular solids of the same thickness that intersect or overlap
- The normal of the largest face is assumed the machining axis for the 2.5D joints (I suppose I could ask the user to select these faces, but I wanted to minimize required user input.)
- Though sane intersections should be machinable (ie. radiused interior corners), it's currently possible to create intersections that generate sharp interior corners
- Parts with non-rectangular faces will produce "unexpected" results
- There is effectively zero exception handling implemented at the moment
- The "Jigsaw Miter" is currently limited to 90 degree joints (I couldn't settle on a good way to implement it for other angles)
I know for a fact that there are a lot of ways to get these joints to behave unexpectedly/nonsensically. My goals with this first pass were 1) to begin to learn FeatureScript and 2) to produce useful output assuming the user does something reasonable. Nevertheless, if you find unexpected behavior for what you think are reasonable inputs, I want to hear about it.
After I tidy up and do some minor refactoring on the Frame Corner Joints, I think I'll move on to the Board Corner Joints (joining flat sheets at 90 degrees), but if anyone has suggestions for other joints (from the library) to implement, I'm all ears.
Finally, I have solid models for the 50 joints in folders organized they way they are in the original collection. Is there any way to make an entire folder public so that I could share the imported models with the community without having to click each individual file?
Tagged:
1
Comments
PhD, Mechanical Engineering, Stanford University
IR for AS/NZS 1100
This is looking really good!
A few suggestions off the top of my head:
1. I'd use multiple feature studios and import them to keep code in more maintainable chunks. Having all 50 joints in one tab is going to be hard to use.
2. When you create construction planes as part of your feature that is not part of the final output, it's best to delete them before the feature completes.
3. Maybe an offset option (positive and negative)?
4. The evaluateQuery loop in cutHalfLap looks like dead code.
Keep going!
Thanks,
Ilya
- Noted
- Can you say more about what you mean here? Offset in which direction?
- Thanks for catching that!
In terms of offset, I mean that right now, the joint surfaces touch exactly. I think it would be useful to have the option of offsetting the joint surfaces away from each other, to allow for a fit tolerance, or, in the opposite direction, to overlap each other a little, for example to compensate for kerf when used as a laser cutting template. See for example allowance in the laser joint feature: https://cad.onshape.com/documents/578830e4e4b0e65410f9c34e/w/d04a088a0a8ab8361a2aa65c/e/dfd5effddfd7f2ecce4b0246
I guess I'd love to hear other folks who are fabricating digital joinery's opinion on issue as well.
You could make an argument for the feature itself generating nominal geometry and then doing the offsetting separately in Onshape as a specific "prepare for laser" feature, which is why I wrote the Kerf Compensation feature-it just offsets all cut edges of a planar part by half the kerf.
The Laser Joint allowance options are if you specifically want to adjust the fit of the joint in a non-uniform way. Honestly, I almost never use it myself; just seemed like it needed to be there to allow for complete control of the joint from the feature.
PhD, Mechanical Engineering, Stanford University