Selecting Finger Joint Offset/Gender for Symmetry
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.
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:
if you are still having trouble filtering edges , you can post screen shot of your GH definition to discuss it further
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.
And the .gh file showing the test case of the bug.
@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
@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.
@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.