Reference:
Brief Summary of Project:
From 2022: (FreeCAD and LinuxCNC) A friend requested the fabrifcation of a credit card formatted nameplate for one of our mutual
associates. Having gained experience since the 2018 Brass Nameplate project, FreeCAD was employed for
design and generation of gcode.
FreeCAD is an opensource CAD tool that allows the design of objects and subsequent gcode (program for executing
the actual LinuxCNC milling of the object.
Image | Comment |
---|---|
![]() |
This image shows the final delivery of the Credi Card Style nameplate. The design was rendered
using FreeCAD 18.4 running under Ubuntu 16.04 (64Bit). The FreeCAD design artifacts and final
gcode programs are available for downloading form the GitHub link given below.
https://github.com/trooker/credit_card_style_3line_nameplatete |
Lower Level Detail | |
FreeCAD View
![]() |
Snapshot From FreeCAD Design |
![]() |
This image displays the LinuxCNC program driving the FreeCAD produced gcode on a Sherline
8580 NexGen CNC in a simulation mode. The engraving bit sat idle while the user observed the
simulation run.
Based upon the simulation run a decision was made to "modify" the original FreeCAD gcode. The modification employed various used defined variable for x-, y-, and z-axis speeds, a "safe height to which the bit was raised in the z-axis for relocation. The modification also consolidated the actual engrave loop for milling the three lines of text. |
![]() ![]() |
First pass using the engraving bit used for projects in 2018 and 2019. This first attempt was rule
unacceptable quality. That led to a search for a "tighter" engraving bit using the same edges.
Introducing the new Dremel Engraver tool to the project required a new entry in the tooltable and minor changes to FreeCAD artifacts as well as the gcode. |
Helpful Approaches | These modifications greatly improved the original gcode from FreeCAD |
Flatness Check ![]() |
A gcode program was written which verifies that the four corners of the brass stock are flat with material secured using the project hold-down fixturing. This project's flatness test reuses gcode fragemnts from the Fishing Lure lip checks. |
Major Tweak to gcode ![]() ![]() ![]() ![]() |
The original FreeCAD engrave process for the three lines of textrequired 6196 separate movements to make five separate levels of depth cuts. In other words the engraving bit would would follow the same path to create the three lines of text five separate times. The only difference would be the increasing depth to which the engraving bit would plunge. Using the LinuxCNC subroutines to control the program flow (the movement of the engraving bit) an engraving loop was created using "one pass" of the original FreeCAD gcode and a logic while less than to check to see which loop to do next or to break-out of the loop. This essentially allowed a "single step through a depth, halt, check". In that manner when the results appeared to be "satisfactory" the milling phases was terminated. |
Results ![]() ![]() |
The final approach that was found to be helpful during the actual milling of the Credit Card Style Nameplate was adding the same type of "single step through a depth, halt, check" approach was implemented for the Contour-Fillet-Tab to generate the appearance of the credit card style. |
Image 2019: Second Brass Design Production demonstrating movement down learning curve.
In 2019 the usage of FreeCAD replaced pyCAM and HeekCNC. Two different engraving styles and bits
were employed to allow client to select preferred style. Finaly, c-shaped adjustable hold-down brackets
greatly improved fabrication quality. FreeCAD provided a "Tab" contouring feature that gave extra control
during the final milling.
Brief Summary of Project:
From 2018: (OpenSCAD/PyCAM/HeeksCNC/LinuxCNC) A brass nameplate for use on the display of a model of the USS Constellation was milled. It was a
simple three line affair with two drill holes of brass tacks set on a thin oval brass blank. It was a very real learning experience
in homing, tool heights, work offsets, tabs, and Heeks CAD/CAM tool. There were multiple runs made in wood and scrap copper. But
there was only one piece of scrap brass created. That run demonstrated the need for tabs as the holddown fixturing failed. The final run was a step process
involving three tool changes. In order to do that at the skill level at that time, three separate NGC programs were sequentially run.
Image 2018: First Brass Design Prototype displaying hold-down failure and need for tabs.
From 2018: Discussion of Process Flow
The gcode shown below is ordered in the sequence used to mill the project. Note that that engrave and blank milling employed
the usage of user defined variables and o-code
flow control looping.
Tool Table Entries
Design to gCode Process Flow
1> Use OpenSCAD to create ellipse shape.
2> Using the 2D shape export it as a SVG image from OpenSCAD.
3> Invoke pyCAM and set units to inches.
Discussion of Process Flow
The gcode shown below is ordered in the sequence developed/used to mill the project. Note that that engrave and blank milling employed
the usage of user defined variables and o-code
flow control looping. The Heart Blank goes one step further using
scaling in the XY plane.
Heart Blank Design Supporting Artifacts
Tool Table Entries
Design to gCode Process Flow
Heart Component: A suitable set of equations representing the classic Heart Curve was found. A spreadsheet
was used to assmble a graph of the outline of the heart. The data points of the outlined heart were convert to a *.csv format. The
Veusz graphic tool was used to create an XY plot of the *.csv data. Once that was done the figure was exported as an *.svg file. The
*.svg file was imported to HeeksCNC. As an *.svg the heart shape is basically a 2D figure. But
before the heart shape could be used it had to have the extraneous Veusz introduced axis information removed. Once that was done
processing continued. There is no extrusion necessary for a 2D figure, since the same effect can be achived in a Profile Operation. After
setting the tooling and tabs gcode was generated. The "raw" gcode was modified to incorporate o-code program flow control. Scaling of
the XY was achived using global replacement.
Engrave Text Component: Prior engrave experince with pyCAM led to using that tool for the engrave text. A pyCAM session was started. The default model deleted
The the units was switched to "inches". The Edit bar menu item was sleected which resulted in "Engrave text" option becoming available.
Selecting the "Engrave text" option yielded the Engrave text wizzard. Add "Love" and select
Apply to create a new model, Text Love. Adjust the sizing as necessary. The 3D view should
now display. At this point the development to gcode should follow the typical tools, process,
bounds, task, toolpath simulate/export process to yield the appropriate gCode for the "Love" text.
Milling Time: Open a LinuxCNC session. Load and execute the Heart Blank gcode. Once that
set of code finishes load the Engrave Text. Inspect the Engrave Text to insure it is
placed as needed. Relocate/place the Engrave Text as needed using the Touch Off button
process for X/Y axis for P1 G54. When satisfied execute.
Brief Summary of Project:
(OpenSCAD/HeeksCAD/CNC) Simple Fishing Lure: shape showing the space between the object and the walls of the pocket. The object
rest on the plane-Sketch. The plane-Sketch surface will serve as the "tab/tag" holding surface for milling of the second side. Details are provided at this link.
Image 3: Prototype executed with scrap material.
Brief Summary of Project:
(OpenSCAD/Blender/FreeCAD) The STL/mesh file was grabbed from the earlier HeeksCNC effort. It was imported and converted into
shape/solid and eventually into a set of waterline NGC code. Waterline refers to the milling pattern that follows
the contours of the shape being milled. A run of saw dust was made using this
design to create the left side of the lure. The stock was then flipped and a second run executed. The
results demonstrated the "feasibility" of the design. But it clearly exhibited a need for additional layers
of waterline cuts and a need for closer control of the "flipped" origin. This original design was discarded
because too much "manual" effort was required to reconcile the right/left side mis-match. Plus the shape was
not an acceptable "lure".
Refinement of the waterline by increasing the granularity of the contour lines (depth of cut from -0.025 to -0.010) did not provide a suitable quality to justify moving forward with this approach.
Discussion of Process Flow
The same STL that was imported to the HeeksCNC lure project was reused. The
import process steps for FreeCAD is the same as that used for the box/lid logo. Once the
The code shown below is ordered in the sequence used to mill the project.
Tool Table Entries
Design to gCode Process Flow
This project reuses an existing OpenSCAD object. This object originally integrated a simple hull function in union with flat planar
surface. Once the object was designed and rendered it was exported as a *.STL file. The file was imported into FreeCAD as a STL mesh
entity. Sequentially that entity is converted to a shape, solid, refined shape, and finally a usable path shape. Once the path shape
was defined a "Job" was created with an ocl waterline operation and a finishing operation. The finishing operation first used a pocket shape to remove
stock material from region between the lure and a bounding box. The finishing operation completed its run by cutting an outline contour
outline of the lure. Tabs were not used since the planar surface was to serve as a base/wall between side 1 and side 2. As originally
planned side 1 would be milled first. Side 1 must also have index registration points to facilitate
flipping and milling of side 2. This will require extending the registration points through the work piece
to what will become side 2 milling surface. (Insure that the registration points do not mar the surface of
the region being milled.)
Side 1:
The waterline operation and the finish operation would run two separate gcode programs under LinuxCNC-Axis. But first the finish job would
be run without the stepper motors being engaged. Once this "virtual" mill job was completed LinuxCNC would display the
tool path executed except indicating a red
tool path . Then load the waterline. Us the "Touch Off" to jockey
X P1 G4 until a suitable
waterline aligns with the "finish" representation. Repeat for the
Y P1 G54. Continue to jockey the waterline
until a "best" balance appears. Try zooming/panning for better
resolution and jockey. Once satisfied run the waterline gcode program. After the waterline program executes, load and run the
finish program.
Side 2:
With Side 1 complete, flip the work piece/stock. Use the previously set index registration points of Side 1
set the physical location of the work piece. Start by loading/running the finish gcode without the stepper
motors engaged. Using the completed finish tool path align the waterline gcode and execute with the stepper
motors engaged. Then complete side 2 by executing the finish gcode.
Conclusion
As originally conceived the lure was to appear as a symmetric hull figure. If all went well, side 1 and side 2
should appear symmetrically spaced when viewed axially along the Z-Y and/or Z-X planes. The difficulty in alligning
the two sides precluded further movement down this avenue.
Brief Summary of Project:
(OpenSCAD/FreeCAD) A more nartual looking fishing lure has been designed using OpenSCAD with Bezier curve surfaces. The imported
STL mesh file was found to be too complex for PC resources. As a result no usable FreeCad shape was produce.
(OpenSCAD/Blender/FreeCAD) The STL model design effort of the lure shape was imported to Blender. This work is in process.
Image 5: Complex Fishing Lure in OpenSCAD (Flat Nose)
Image 6: Complex Fishing Lure Imported to FreeCAD (Round Nose).
Discussion of Process Flow
Subsequently discovered OpenSCAD "hull() function" and Bezier curved surfacing.
Design Supporting Artifacts
Design to gCode Process Flow
(OpenSCAD/FreeCAD) The generalized shape of a "crank" fishing lure was created using OpenSCAD. That shape was cut to create a more
realistic lure. The two components were then assembled into the lure shape. That shape was then converted to an *.stl file for
export. It was then imported itno FreeCAD where the complexity of the mesh shape became obvious. It proved to be impractical to
proceed along this approach.
A number of alternate approaches to obtaining a complex solid surface shape are being explored.
Brief Summary of Project:
The intent was to create suitable wooden boxes for general gifting. The project originally started by looking at creating puzzle
boxes with dovetail edges. But reality and CAD skill set collided. Once reality and complexity of FreeCAD's cubes and Path work bench
began to manifest itself, a decision made to slowdown. Then began the effort to make presentable wooden boxes with pockets and lids
with matching pads. The lids were to also have an appropriate logo/design artwork of minor complexity. That level of crafting was
captured in the following project.
Discussion of Process Flow
Box/Lid Design Supporting Artifacts
gCode for Milling
The resulting NGC gcode from FreeCAD and associated tool table are shown below. The current sizing is for a 6x4x1.5 box. The pocket and pad are roughly 5x3. The pocket is set to 1.3 inches depth. The pad is set to .375 inches.
Tool Table Entries
Design to gCode Process Flow
(OpenSCAD) The original box/lid involved dovetail edges and a circular pocket as shown the box and
lid CAD drawings. These drawings led to exportable *.stf files.
(OpenSCAD/HeeksCNC) Importing the two *.stl files from above produced the box_tab and
the box_slot projects. Although their where reflective of the intended design objective,
they appeared to be beyond the skill level available for the project.
(FreeCAD) As a good launch into FreeCAD a simpler "box/lid" with pocket/pad matching was initiated. As described and documented
above gcode was produced directly from FreeCAD and saw dust created. After receiving a request for
two more wooden box/lid this project was measured as a success.
Path Forward
Brief Summary of Project:
(FreeCAD) A nartual looking fishing lure can designed using the various workbenches of FreeCAD.
This avoids the "resource hogging" associated with improting STL files of lures generated externally.
Discussion of Desgin Process Flow
An original conceptual drawing of a fishlure must be manifested as a draft drawing. This
"lure draft" serves as the "2D container". The defined "lure draft" provides the outline and serves
as the boundary for the additional "shape defining layers". For this version of design four shape
defining layers were generated. At this point the shape defining layers were jockeyed into
appropriate locations to provided the required shape in 2D (X/Y Plane) and
constrained (see Image 9 below). Using the following Best Practices the
complexity of multiple sketches in a drawing surface is reduced.
Code Artifacts for Milling
The resulting NGC gcode from FreeCAD and associated tool table are shown below. The current sizing is for a 6x4x1.5 box. The pocket and pad are roughly 5x3. The pocket is set to 1.3 inches depth. The pad is set to .375 inches.
Design to gCode Process Flow
With a set of gcode (Waterline and Finish) it was time to move to the mill. The Waterline gcode
(with the "tweaks") ran without complaint the first time.
The Finish gcode required placement via Touch Off of X/Y G54 inorder to algin with the previously
milled lure.
After making the touch off adjustment, the gcode ran without incident.
Observations
There were two issues observed with the Waterline gcode.
Brief Summary of Project:
This project, 016_fishlure, employed previously gained FreeCAD knowledge, experimentation with FreeCAD Draft and Parts workbenches, and new milling
skills to produce a very realisitic shaped crank style lure.
Image 11: Realistic Wooden Lure ready for painting, hardware, and water trials.
Field Testing The lure created from the following process has been "pond tested".
Discussion of Process Flow
The FreeCAD project files, resulting gcode, and salient configuration files for the Sherline
Next Generation 8580 with Rotary Table/Right Angle are given below in compressed file format.
Tool Table Entries
"stepper.var" Entries
Discussion of Design Process Flow
See the earlier crank lure for a preliminary
discussion and first baby steps towards a realistic crank lure design.
Side-1/Side2:
The initial steps in the design followed the same basic process as the earlier crank lure
desgin for Side-1. The "tricky" point was creating a symmetrical matching object, Side 2,
that could be milled. This side would need to be milled from the same work stock but with
a different orientation. This "effect" was generated during the design phase by mirroring
the Side-1 solid model. That sounded simple. But multiple passes at attempting to produce
Side-2 proved to be a problem. The solution involved capturing the toolpath for Side-1 as
the "model" of the solids surface. The generalized design process steps are given below:
Side-1
Design to gCode Process Flow With a collection of nine gcode files the project was moved to the mill. The Probe file was replaced with a level and a "scribe" point engraver to verify centerline on top. Then the work stock was flipped and the bottom centerline was verified. Verification of both top and bottom centerlines involved moving in the X axis along the centerline and "touching at several points. The combination of the 4-jaw chuck, right angle, level, centerline, and engraver/probe produced excellent results. Sequence of Milling Steps:
Shop Setup | Operating | Results | Description |
Reuse |
Twisted Loops 3 Locations 20GA GS Steel Wire |
|
016 Fishlure
Style: Crank Length: 2.196 in Width: .810 in Height: .843 in Weight: 6.51 grams Paint 3 Layers 1. Kiln Primer
2. Acrylic
3. A/B Part Epoxy Sealant
Hardware Twisted Loops Split Rings #0 Trible Hooks #8 |
Brief Summary of Project:
This project, 021_fishlure, employed previously gained FreeCAD knowledge, experimentation with FreeCAD Parts.Revolve workbench.tool, incorporation of four flute endmills, and cable wrapping loops. The results, lure style 021.4, is a stronger, realistically shaped crank style lure. Fish actually took an interest in this prototype.
Pond testing, lure confirmed the need for a lip. Various lip designs were attempted using materials such as plexiglass and thin sheet metal. Finally a potential, feasible 3D printer design was discovered. However, that design was determined to be too difficult to insert/mate with the 021.4 style lure body. A modification of that 3D printer design and of the 021.4 style lure was employed. A discussion of the modifications to the lip's 3D design can be found as a "make" of the original lip design. The FreeCAD project 021 was modified to include a pocket cut on the bottom of the lure to support mating with the lip with a modest negative three degree drop. The documents for the 3D printer lip and the pocket cut are provided further below in this section.
Field Testing
The 021.4 style lure has completed "pond tested".
General Observation | 016.2.1 | 021.2.1 | 021.4.1 | 021.4.2 |
Responded well to casting
Good distance
Good control even in light wind
Dual trebble hooks played well
Cranking/Playing
Settled evenly in water
Pulled evenly/straight in water
Responded with diving/wiggle
Worked through vegetation
Durability
Sealant/colors held fast
Drag tree branch long surface
Comparable to other crank lures
Classic crank lure shape
Ultra-Light sample
Relative weight to sample
Confirmed need for dive lip
Response From Fish
Hits/Bites
Caught/Landed
Conclusion
Good to fish
Create three more for prototyping
Add dive lips to prototype
Defer Decision
Scale of shape
|
No(1) Yes No Yes Yes Yes(2) Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes No NA(3) NA(4) NA(4) |
Yes NA Yes No(5) No(6) No(7) Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes No(4) No(4) No(4) |
Yes NA Yes No(5) Yes No(7,9,11) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes(8) Yes Good2Go Yes(9) Good2Go Yes |
Yes NA Yes No(5) Yes No(7.9.10) Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Good2Go Yes(9) Good2Go Yes |
1. Ballast weights added to lower buoyancy. 2. Responded well with lip added. 3. Added lip since first pond trial. 4. Terminate design development. 5. Too buoyant. 6. Slight yawl/roll as cranked 7. Needs lip. 8. Large mouth bass landed on third cast. 9. Retrofit dive lip. 10. Lip added and pond tested. 11. Lip added and given to associate for testing. |
Discussion of Process Flow
The FreeCAD project files, resulting gcode, and salient LinuxCNC support files for the Sherline
Next Generation 8580 with Rotary Table/Right Angle are given below in seven part compressed file rar format. A high level view of contents of the compressed files is given directly below. Links in the next section lead to the downloadable seven compressed files.
Download Actifcats
gCode Filename | Purpose | Comment< |
081.15_07_009_980_fishlure_probe.ngc | Execute a probe along centerline | Performed manually. |
089.03_02_016_980_fishlure_flipper.ngc | Flip workstock from 0 to 180 degrees | Executed well |
089.06_02_009_980_fishlure_reset.ngc | Flip workstock from 180 to 0 degrees | Executed well |
092.01_06_021_973_057_ure_SideA_Top.ngc | Executes waterline surface milling of SideA | Executed well |
092.02_06_021_973_057_lure_SideB_SplitFace.ngc | Executes SideB milling for through wire placement | Performed manually. |
092.03_04_021_973_057_lure_SideB_Bottom.ngc | Executes waterline surfacemilling of SideB | Executed well |
092.04_06_021_973_057_PinHoleOnly_lure_SideB_SplitFace.ngc | Drills Pin Holes for SideB | Performed manually. |
092.99_05_021_973_057_outline_lure_SideB_Bottom.ngc | Creates trace outline of SideBfor lip alignment | Executed well |
100.01_08_031_973_057_lipCut3dPocket_boxCheck.ngc | Executes the pocket cut for lip | Executed well |
gCode Filename syntax ggg.ss_vv_fff_ppp_xxx ggg: Identifier for gcode folder/family repository
ss: Identifier for gcode within a folder/family
vv: Revision numeric
fff: FreeCAD project workspace
ppp: Project within a FreeCAD project workspace
xxx: Identifier assigned to a hybrid of a Project
|
Tool Table Entries
"stepper.var" Entries
Discussion of Design Process Flow
See the earlier crank lure and
realistic lure for a discussion of the maturing steps in crank lure design. Instead of using a Side-1 and
Side-2 (Right Half and Left Half) the perspective was changed to Dorsal {Top} Half and Belly {Bottom} Half.
This change allows the compartmentalization of the design. The Dorsal Half has both eye buds and the primary
shape of the lure. The Belly (Bottom} Half features include the Through Wire, the Belly Hook Loop Wire,
and Alignment Pins Holes.
Dorsal Half/Belly Half:
The initial steps in the design differed from the earlier crank lure of Project 016. The Dorsal or Top Side was based upon an ellipse 2D shape. Using this shape as the outline, a continuous multipoint DraftWire 2D line was drafted from the left most point touching the x-axis to its right most point touching the x-axis. Using the Draft bench-revolve, the 3D Dorsal Half was created. With the Dorsal Half defined, it was then copied/pasted as the Belly Half. With the Belly Half shape now available, the Belly Half was modified from within the Draft workbench to generate the "desired" shape.
From that point forward the Dorsal Half and Belly Half were available for creation of Jobs and the associated *.ngc code. The Through Wire Processing was originally attempted as a separate CAD/CAM CNC gcode process. But common sense that it was better to create the Through Wire grooves, drill Belly Holes, Alignment Holes, "custom fit" craving of gaps for wire wraps manually, and adding a pocket cut to provide mating surfaces with the plastic lip. NOTE: For this early prototyping of the 021.4 style lure, the pocket cut was executed post-bandsaw separation because the need for the lip had not been confirmed. The difficulty in the alignment curved body lures presented with this deferred pocket cutting of the prototype strongly suggested that this pocket needs to be cut prior to the waterline surfacing while the centerline and factory edges of the woodstock can be employed.
A bandsaw was employed to separate the Dorsal Half and Belly Half from the workstock. The Dorsal Half and the Belly Half were then placed in a vise (with sacrifice wooden bumpers) to allow the drilling of the two alignment holes. The original centerlines (now significantly shortened) of the Dorsal Half were used for the drill operation setup.
Once the Alignment Pin Holes had been completed the two halfs were separated and then re-assembled. During the re-assembly, the Belly Half was now placed above the Dorsal Half such that the Alignment Pins could be inserted to allow exposure of the Belly Half's split face matching surface. With the Belly Half's matching surface exposed its centerline could be roughly verified between the head and tail points along the x-axis. The lures Through Wire groove was then scribe to a sufficient depth to allow the wire to just reach the top of the surface. The Belly Hook hole and its associated wrap "bore" hole were drilled. The accompanying "howto zip package" will provide a more detail set of steps as well as the pocket cut gcode and additional files to support this new operation.
The two lure halves were removed from the vise. The Through Wire Loops and Belly Hook Loops were created, assembled, and installed. Clearance "bore" holes were identified and created as needed to allow a "good" fit between the two halvs. This required a couple of assembly attempts using the Alignment Pins and then gently separating. During separation the both halves were examined to locate any points of conflict that might require additional "boring/cutting".
Once a "good" fit was achieved with the two halves and alignment pins were epoxied bonded. The excess lengths of the alignment pins were allowed to protrude from the Belly Half while being tangent with the Dorsal Half's surface. Painting coats were added as each dried. Avoid placing paint on the lip mating surface of the lure. Once the lure has dried the lip is ready to be epoxied into place. After that mating joint has cured a slanted slightly off-centerline pre-drill hole should be made such that the lip is pulled toward the mating surfaces of the lure. A small wood screw should then be fully inserted and then sealed. The body of the lure, immediate mating of the lip, and the lip's screw should then be receive sealant coat. The lure hardware was added after a "full" sealant cure in a solar oven.
Dorsal Half
Design to gCode Process Flow
With a collection of nine gcode files the project was moved to the mill. The Probe file was
replaced with a level and a "scribe" point engraver to verify centerline on top. Then
the work stock was flipped and the bottom centerline was verified. Verifcation of
both top and bottom centerlines involved moving in the X axis along the centerline
and "touching at several points. The combination of the 4-jaw chuck, right angle, level,
centerline, and engraver/probe produced excellent results.
For a detailed, stepwise description of "how-to" create the lure from the CNC
Mill to painting/coating and lip assembly view the process steps"how-to" document.
Shop Setup | Operating | Results | Description |
New Points Points From Prior Projects Rotary Table, Right Angle |
Twisted Loops
3 Locations 20GA GS Steel Wire 3D Printer Lip Creation Presentation |
|
021 Lure
Style: Crank Length: Height: .911 in Weight: Painting 1> Body
1.1> Kiln Primer
1.2> Acrylic. Green, Yellow, Orange
2> EyeBuds: Black on Yellow
3. A/B Part Epoxy Sealant
Hardware Twisted Loops Split Rings #0 Treble Hooks #8 Wood Screw #4 Stainless Steel |