From 9a7db28819884e5f73c7835c8ae876ffa1fd70d1 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Mon, 26 Aug 2019 19:47:08 -0700 Subject: [PATCH] Added tool bits concept and some initial templates --- src/Mod/Path/Tools/.gitignore | 2 + src/Mod/Path/Tools/README.md | 81 ++++++++++++++++++ .../Path/Tools/Template/drill-straight.fcstd | Bin 0 -> 10098 bytes .../Tools/Template/endmill-straight.fcstd | Bin 0 -> 10496 bytes src/Mod/Path/Tools/Template/v-bit.fcstd | Bin 0 -> 11847 bytes 5 files changed, 83 insertions(+) create mode 100644 src/Mod/Path/Tools/.gitignore create mode 100644 src/Mod/Path/Tools/README.md create mode 100644 src/Mod/Path/Tools/Template/drill-straight.fcstd create mode 100644 src/Mod/Path/Tools/Template/endmill-straight.fcstd create mode 100644 src/Mod/Path/Tools/Template/v-bit.fcstd diff --git a/src/Mod/Path/Tools/.gitignore b/src/Mod/Path/Tools/.gitignore new file mode 100644 index 0000000000..334e20e2c9 --- /dev/null +++ b/src/Mod/Path/Tools/.gitignore @@ -0,0 +1,2 @@ +*.fcstd1 +*.FCStd1 diff --git a/src/Mod/Path/Tools/README.md b/src/Mod/Path/Tools/README.md new file mode 100644 index 0000000000..9a5b356b3f --- /dev/null +++ b/src/Mod/Path/Tools/README.md @@ -0,0 +1,81 @@ +# Tools + +Each tool is stored as a JSON file which has the template's path and values for all named constaints of the template. +It also includes all additional parameters and their values. + +When a tool is instantiated in a job the PDN body is created from the template and the constraints are set according +to the values from the JSON file. All additional parameters are created as properties on the object. This provides a +body with the correct shape and dimensions which can be used to generate a point cloud or mesh for advanced algorithms +(and potentially simulation). + +# Tool Libraries + +Due to each tool being stored in its own file and the storage/organization of those files being quite flexible the +importance of a tool library for organisational purposes is quite diminished. The user is free to organise their tools +in whichever directory hierarchy they see fit and can also name them as best fits their use and organisation. A +_tool library_ is nevertheless a great representation for a physical grouping of tools, such as in an automatic tool +changer. + +A tool library is a (JSON) file with a mapping of tool id to the path of the tool file. As a consequence each tool +can be in multiple libraries and doesn't have an `id` of it's own. The `id` is a property of the library. + +If a tool from a tool library (or an entire tool library) is added to a job it retains its `id` from the library as a +property. Adding a tool bit directly rsults in the tool getting the next free id assigned. + +# Tool Controllers + +They largely stay the same as they are today. As an additional feature it should be possible to _copy_ a TC, which +allows for easy feed/speed changes for the same tool. + +Abover requirement highlights one change though, that the `id` should be a property of the Bit, and not of the TC. +There are two requirements that are currently mapped to a single `id`. There needs to be an identification of which +TC is being used by a certain op, and which tool number to use for a `M6` command. + +# Paths and Extensibility + +The following directory structure is used for supplied (shipped with FreeCAD) tools: +``` + Tools + + Bit + + Library + + Template +``` +Strictly speaking a user is free to store their tools wherever they want and however they want. By default the file +dialog will open the corresponding directory (depending on context), or whichever directory the user opened last. + +Above directory structure with the most common default tools shipped with FreeCAD should be installed analogous to +TechDraw's templates. + +## How to create a new tool + +1. Set the tool's Label, this will show up in the object tree +1. Select a tool shape from the existing templates. If your tool doesn't exist, you'll have to create a new template, + see below for details. +1. Each template has its own set of parameters, fill them with the tool's values. +1. Select additional parameters +1. Save the tool under the name that makes sense to you + + +## How to create a new tool bit Template + +A tool bit template represents the physical shape of a tool. It does not completely desribe the bit, for that some +additional parameters are needed which will be added when an actual bit is parametrized from the template. + +1. Create a new FreeCAD document +1. Open the `PartDesign` workbench, create a body and give the body the name you want to show up in the bit selection. +1. Create a sketch in the XZ plane and draw half the profile of the bit. + * Put the top center of the bit on the origin (0,0) +1. For any constraint serving as a parameter for the tool (like overall Length) create a named constraint + * The name is the label of the input field + * Names are split at CamelCase boundaries into words in the edit dialog + * Use a `;` in the name to add help text which will show up as the entry fields tool tip + * If the tool is used by legacy ops it should at least have one constraint called `Diameter` + * Use construction lines for constraints that are not directly accessible, like `Diameter` and `Angle` +1. Any unnamed constraint will not be editable for a specific tool +1. Once the sketch is fully constrained, close the sketch +1. Rotate the sketch around the z-axis +1. Save the document as a new file in the Template directory + * Before saving the document make sure you have _Save Thumbnail_ selected, and _Add program logo_ deselected in + FreeCAD's preferences. + * Also make sure to switch to _Front View_ and _Fit content to screen_ + * Whatever you see when saving the document will end up being the visual representation of the template diff --git a/src/Mod/Path/Tools/Template/drill-straight.fcstd b/src/Mod/Path/Tools/Template/drill-straight.fcstd new file mode 100644 index 0000000000000000000000000000000000000000..0e33b9a2d54061b3a11e42b369b98dd9d6c7dadf GIT binary patch literal 10098 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 W06wqhAOpngjEqEtJ`n#Ey8i>$S;$}j literal 0 HcmV?d00001 diff --git a/src/Mod/Path/Tools/Template/endmill-straight.fcstd b/src/Mod/Path/Tools/Template/endmill-straight.fcstd new file mode 100644 index 0000000000000000000000000000000000000000..696296467b4a8449d5aa880632963add0f8a160f GIT binary patch literal 10496 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 v=-*WTSNM0;gw+40`i+K!`ZX?;x7X-fX;