execuc/LCInterlocking

Allow negative tolerance and laser beam diameter.

Opened this issue · 1 comments

From freecad forum user (https://forum.freecadweb.org/viewtopic.php?f=9&t=35635&start=10#p412835):

I see negative tolerances and laser diameter are forbidden there. However, I am making interlocking connections of steel, and order laser cutting at outsourcing company. Their software automatically considers laser ray diameter and we get (almost) exactly the same size as in DXFs. Moveover, some artifacts of cutting and oxide layer make part edges even a bit thicker than model, so I have to use a hammer to assemble them. This, definitely, is not the best manufacturing practice :? .

Thus if you could allow negative values there, this can expand scope of the Interlocking workbench usability. I suggest users will rarely set negative values by mistake, but if they will, there can be some checkbox to forbid it.

I am working on a plywood CNC project, and I have a similar use case.

What I am doing is setting the laser size to 0.0, and add some Thickness tolerance of 0.0 and "slow width tolerance" positive. Then I reduce the size of the tabs.

Then I forked the project to allow customize the dog bone radius and shift #49

If not, to change that tolerance you only need to change this file:

diff --git a/panel/partmat.py b/panel/partmat.py
index 858ba6e..c18bf32 100644
--- a/panel/partmat.py
+++ b/panel/partmat.py
@@ -43,9 +43,9 @@ class Part(ParamWidget):
                                  WidgetValue(type=float, name="thickness", show_name="Thickness", widget=None,
                                              interval_value=[0.5, 3000.], decimals=2, step=0.5),
                                  WidgetValue(type=float, name="thickness_tolerance", show_name="Thickness tolerance",
-                                             widget=None, interval_value=[0., 30.], decimals=4, step=0.05),
+                                             widget=None, interval_value=[-30., 30.], decimals=4, step=0.05),
                                  WidgetValue(type=float, name="hole_width_tolerance", show_name="Slot width tolerance",
-                                             widget=None, interval_value=[0., 30.], decimals=4, step=0.05),
+                                             widget=None, interval_value=[-30., 30.], decimals=4, step=0.05),
                                  WidgetValue(type=float, name="laser_beam_diameter", show_name="Laser beam diameter",
                                              widget=None, interval_value=[0., 30.], decimals=4, step=0.05)])