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.