Notifications
Clear all

Selecting Finger Joint Offset/Gender for Symmetry

JosephDuchesne
(@josephduchesne)
Active Member

Hi, 

I'm trying to create a part using Biber and think it's a wonderful tool for the job!

The problem I'm having is that I have a part that's symmetrical and would prefer if the top/bottom, left/right, and front/back were mirrored copies of eachother, but Biber keeps producing one joint that's the inverse of all the others in each pair.

The joint settings are a basic Finger Joint with Count = 3, Config 0.

I have tried incrementing Config, but that just toggles between 3 male+1 female and 1 male+3 female on the sides, with the odd edge moving around.

I have also tried feeding in different Finger Joints, setting their edge index, and changing the Config entry on the offending corner, but the jt input seems to not function. I'm using merge, with flattened output like the tutorial says but only one joint configuration (the first) seems to apply to all of the joints, and the index appears to be ignored.

For example if I use a merged, flattened list containing Finger Joint, index 0, Butt Joint Index 2,4,6 (the 3 other edges), all 4 edges are finger joints. If I reverse the order of the merge so the Butt Joint is first, all 4 are butt joints.

Any suggestions? I'm using the latest version of Biber and Rhino as of yesterday.

Quote
Topic starter Posted : 04/03/2023 9:12 pm
PARA
 PARA
(@para)
Member Admin

Hi, as I understood, you want to have the same config for finger joint on both sides of the object (top face). there you need to have two joints with different config and to do that you need to extract the edge index which is not behaving correctly, there are many ways that you can find edge index of particular joint , some are explained in the following tutorials:

https://youtu.be/NIa4w2ffOAY

https://youtu.be/ayXDuE4QIks

https://youtu.be/5QD-FXPXkDY

if you are still having trouble filtering edges , you can post screen shot of your GH definition to discuss it further 

good luck!

ReplyQuote
Posted : 05/03/2023 11:53 am
JosephDuchesne
(@josephduchesne)
Active Member

So, I already watched the videos and was selecting the correct edge, but after trying to pare everything down to the simplest reproduction of the problem, I was able to isolate the problem!

Finger Joint (and likely others) Index parameter does not appear to work with internal values!

I had the I parameter set to "6" as an internal value (which was correct).

The moment I switched to an external value (right click I and select "extract"), the edge began functioning correctly!

I noticed this when I went to use a Panel as an input so you could see what edge I had selected in the joint, and suddenly joint selection began working.

I'm not familiar with how Grasshopper plugins work, but this looks like a bug to me! Thankfully one I can work around now that I know what triggers it.

ReplyQuote
Topic starter Posted : 05/03/2023 6:30 pm
JosephDuchesne
(@josephduchesne)
Active Member

Here's a screenshot of my test case

ReplyQuote
Topic starter Posted : 05/03/2023 6:35 pm
JosephDuchesne
(@josephduchesne)
Active Member

And the .gh file showing the test case of the bug.

ReplyQuote
Topic starter Posted : 05/03/2023 6:36 pm
PARA
 PARA
(@para)
Member Admin

@josephduchesne I have just made the same GH definition but cannot simulate your issue. it seems to work fine. could you please try to use a slider and see if that works ?

ReplyQuote
Posted : 05/03/2023 7:13 pm
JosephDuchesne
(@josephduchesne)
Active Member

@para the bug only occurs when the value for Edges is internalized. Sliders, numeric values, etc. are all external.

Have you tried the .gh file I uploaded?... I see it didn't upload. Here it is: https://drive.google.com/file/d/19shZQuwxMDp2iFPMxPguWjC0EWKd_-gK/view?usp=drivesdk

 

ReplyQuote
Topic starter Posted : 05/03/2023 7:49 pm
PARA
 PARA
(@para)
Member Admin

@josephduchesne now I see what you mean, that seems to be a bug. but the question is that if this bug is stopping you from doing what you are up to? I could not see the .gh file in the first post. 

ReplyQuote
Posted : 05/03/2023 8:11 pm
JosephDuchesne
(@josephduchesne)
Active Member

@para now that I know what's causing this, it's easy to work around. My project is now unblocked and can proceed 🙂

If you're curious, I'm using Bieber to design UHMW-PE parts for a 3lb combat robot competition. I've attached a photo of an older design I did in Grasshopper, but without Bieber and I'm sure you can see how handy this plugin will be in future similar designs. Previously I was doing finger joints manually and this was slower, less flexible, and more fragile than the results I'm getting with Biber. 

With your plugin I can more easily change the joints.

Manufacturing the design is actually fairly similar to the intended use case: I do prototypes on a cheap FDM printer, or laser cut plywood, and then use a small 3 axis CNC mill to make the parts. 

Is there any plan to make Biber play nicely with non-flat parts? 

For now, I'm working around this by taking the Biber part that represents the thickness of a part that I wish to have joints, then subtracting that from its own bounding box, and finally subtracting that remainder (voids required by the joint) from the original geometry.

This is fast and fairly easy but a bit clunky. I could imagine some way to create a hybrid PPS that lets you select some planar faces and edges to form joints against, while carrying along the non-pps brep geometry into the final parts? This might be too much scope for the plugin.

 

 

ReplyQuote
Topic starter Posted : 05/03/2023 9:32 pm
PARA
 PARA
(@para)
Member Admin

@josephduchesne well, it is possible to include "simple" curve edges in PPS models but should be done with extra care. for example you can't have curved edges meeting on a vertex where other joints are also sharing it. We are still working on these issues but cannot promise anything in near future. As of now you can think about using "add shape" component where you can project 2d shapes (for example holes or cut-outs)  on your parts and then transfer them to the unfolded geometry . After that you can simply create voids in your parts using grasshopper native components. 

ReplyQuote
Posted : 05/03/2023 9:52 pm
Share: