Full blind box joints in Carbide Create

Revisiting this after completing:

and reviewing the above as well as the various linked projects and other efforts, some thoughts/considerations:

  • the new OpenPythonSCAD and the ability of gcodepreview to output open geometry in DXF works — if one opens in LibreCAD first and re-saves as SVG
  • directly tracing the tool outline where appropriate is simpler to calculate since one can just use a command which includes outputting the DXF code in addition to making the cut
  • where appropriate, one can always use a separate command to create arbitrary closed geometry which matches some aspect of a cut
  • it is easier to block out prototypes in BlockSCAD than it is to create finished designs in OpenSCAD Graph Editor — most likely because of the difficulty of repurposing chunks of code and ensuring that slight variations in code have differences in appearance which are suitably expressive — this probably warrants further experimentation
  • using 3 tools seems to be the best mix of ease-of-use and capabilities:
    • large V — note that if the library is set up to do this in one pass this will bound the maximum possible Stock Thickness — setting it to always make two passes seems expedient
    • small V — this needs to be a reasonable dimension, sufficiently smaller than the Stock Thickness that it will allow a reasonable size of Box Joint to be cut
    • small square — if doing this in a graphical tool it may be helpful to use a smaller diameter than the Small V (3mm vs. 3.175mm is one dimension pair which I considered and sourced tooling for), but if one is directly modeling toolpaths, having a direct correspondence is more straight-forward

Starting by roughing out the design in BlockSCAD we have a pretty standard set of parameters to begin:

stockXwidth = 0;
stockYheight = 0;
stockZthickness = 0;
Joint_Width = 0;
Number_of_Joints = 0;
Large_V_Diameter = 0;
Small_V_Diameter = 0;
Small_Square_Diameter = 0;
Joint_X_Position = 0;
Joint_Y_Position = 0;
Joint_Orientation = 0;
Joint_Side = 0;

Note that it will be possible to position a joint both in terms of XY and in orientation and to specify which side of a joint is to be modeled/cut, allowing arbitrary part orientation.