Computer Controlled Machining

A paraboloid matrix

At first, the wax was not available for cutting a matrix. So this matrix was going to be made out of wood. Then the wax arrived. The wax matrix would serve to make a silicone rubber cast. The silicone rubber cast is used to cast the paraboloid parts that will reflect light rays from the transmitter LED and to the receiver PhotoDiode.

Using Slic3r

The paraboloid matrix design

 paraboloid design screen capture

is exported to a paraboloid matrix STL. That file is fed into Fabmodules. It would not recognize my file. But in the Slic3r manual there is a section which describes how to use FreeCAD for repairing my STL file:

  1. Choose Mesh Design from the Start Page menu
  2. Open the mesh to repair by dragging and dropping or through the File menu.
  3. On the menu bar choose Meshes -> Analyze -> Evaluate & Repair mesh
  4.  repair options picture with error
  5. Analize each option and Repair the ones that report errors
  6.  repair options done picture

Make sure the repair did not damage the mesh. Then you can File -> Export the file to STL format again.

The next step I did was to feed it to FabModules and choose the STL mesh as Input File.

Since the image was adjusted in Blender as 1 pixel per millimeter, I changed the value of DPI in Fabmodules to 25. But my instructor recommended to keep it on the default values. So I used 1000 DPI.

Then choose Gcodes (nc) as output file which produces Gcode for the paraboloid molding cast.

Nevertheless, the nc file was not recognized by LinuxCNC.

Using FreeCAD Path Workbench

Choose the Path Workbench.

Then create a New Path Job by choosing the the apropriate button. On the window that is opened, define the output file name and location. Also choose the postprocessor for the apropriate CNC router.

 falta bildo

Select the Tools tab.

 falta bildo

Edit the default tool.

 falta bildo

Specify the Controller parameters for your machine.

 falta bildo

And the Tool parameters for your mill.

 falta bildo

Unfortunately I was not able to use the experimental 3D pocket tool in order to create the apropriate paths.

Using FreeCAD with FabModules

The successful machining process could be completed in the machining section of the molding and casting lesson. It was machined on MDF wood. The problem with the former design process was probably that the mesh was not closed or that the tool was tool thick for the pockets or another mistake due to lack of experience and knowledge about the workings of the design process and Gcode generation.

A loft

As a group assignment we decided to design and build a loft in order to increment the fablab's usable space since most of it is being used by the laser cutter and the CNC router.

 falta bildo

The beams are constructed from plywood in I form in order to give them greater resistence to torsion on the horizontal axis if the internal forces turn parts of the loft. The beams intersect with the nerves (which are thinner beams) and give the structure much better cohesion. The floor of the loft is plywood also. Press-fit is used on the beam, nerve and board pieces and at their interconnections.

 falta bildo  falta bildo

A bridge was also constructed in order to link the stair access of a storage area to make it serve the loft area too.

 falta bildo

The loft and the bridge structures did not fit correctly to the area of assembly. It is not the same to make furniture (which does not have limiting entities) as to make a floor which might not fit in the existing area. The structures had to be cut in order to insert them where they were fit.

 falta bildo

A press-fit bathroom shelf

This is the software I am using.

 falta bildo

A simple shelf such as this:

 falta bildo

could be thought of being a simple task. Nevertheless, learning parametric design and press-fit makes things tough for a newbie. It proves better in the long run because of the modularity of parametric design.

Designing 2D sketches for then making solid boards

I used the dimensions of the horizontal plane of the space where the shelf would be placed. On the Part design workbench (select it on the drop-down menu that shows Start):

  1. I clicked on the Create a sketch icon to make a 2D draft on the XY plane (horizontal).
  2. I clicked on the Create rectangle icon.
  3. Clicked twice on two points on the design space which drew a square with the two opposite edges on those points.
  4. I clicked on the measurement icons: Fix horizontal (vertical) distance.
  5. I fixed one of the points to the origin of the axes with the Coincident constraint button in order to make the sketch fully constrained (totally defined by parameters).
 falta bildo

It produced this sketch viewed from an angle.

 falta bildo

Then I made a solid of the desired thickness with the Pad icon. It made the horizontal shelf (top) board.

 falta bildo

On the XZ (vertical) plane of the side of the solid I produced before I made a new sketch.

 falta bildo  falta bildo

And then used the Pad icon for giving it a thickness length in order to make a solid out of it. It was to be one of the side panels.

 falta bildo

Then I drew the front-board's sketch.

 falta bildo

New test with solids

I started a new file by just drawing a cube for the top board. I used the Cube Solid icon on the Path workbench (not the Part Design workbench).

 falta bildo

Changed the name of the created solid.

 falta bildo

Then drew the side cube with the appropriate dimensions.

 falta bildo

But later I returned to drawing the sketches and padding for making the solids.

Making paths for the milling Gcode

When I finished the shelf parts and the press-fit cuts on each part, I rotated the parts in order for them to be on the same plane for tracing the mill paths on Gcode.

 falta bildo

As version 0.17 of FreeCAD required to make one piece for milling on one board, I combined all the pieces to be cut on the 18mm thick board on one Compound. This tool is found on the Part workbench. (This hack is not necesary on version 0.18.)

 falta bildo

On the Path workbench I clicked on the New path icon. It would ask which pieces would belong to this path (as of version 0.18).

 falta bildo

The Extended model's bound box creates a stock covering the area of the pieces plus some pre-difined extra. I removed the extra 1mm from the height (Z)and kept the rest.

 falta bildo

Renamed the name of the job.

 falta bildo

Defined the name of the output file as located on the original FreeCAD file directory and with the same name of the file plus 18 for identification of the board for that Gcode file. Finally added the extension as .gcode.

 falta bildo

On the Tools tab, I created a new tool with the specifications of my endmill.

 falta bildo

I used that tool and defined the specifications of the router on the controller setup.

 falta bildo

I used the Contour icon for tracing the edges of the pieces.

 falta bildo

I specified the particular specifications of this operation (default).

 falta bildo

The same process for renaming the new job I created for the 5mm board for the shelf itself.

 falta bildo

So the Contour path was the only necesary operation on the 5mm shelf board.

 falta bildo

I made some tests with the 3D pocket tool icon for the press-fit cut on the side boards. But it would not mill parallel on both axes to the diagonal plane, just as can be observed on the photo. It would do a 2.5D operation as detailed on the introduction of this tutorial.

 falta bildo

Defining parameters on FreeCAD's embeded spreadsheet

I created a new file with sketches and pads as before.

 falta bildo  falta bildo

But now I defined the dimensions on the Spreadsheet workbench by creating a new spreadshet. I defined the properties of the cells that contained the parameters. I right clicked on each one and filled the Display unit and the Alias tabs.

 falta bildo

On the Part Design workbench, the Tasks tab offered to Create body. So I clicked on it.

 falta bildo

Then that same tab offered to create a sketch. I clicked there.

 falta bildo

It asked which plane. I chose the XY plane.

 falta bildo

It expected some sketch.

 falta bildo

I drew a rectangle.

 falta bildo

And used the Symmetry constraint of two of its opposite to the origin point in order to fully constrain the sketch.

 falta bildo

I clicked on the measurement icons: Fix horizontal (vertical) distance. An Insert length window appeared.

 falta bildo

I clicked on the Fx icon.

 falta bildo

And typed the appropriate parameters: the spreadsheet object name and the alias for that distance parameter. This was the shelf space width.

 falta bildo

This was the height.

 falta bildo

This was the depth.

 falta bildo

Changed some of the parameters on the spreadsheet.

 falta bildo

Created an new body and its sketch

 falta bildo

Drew the sketch for front piece.

 falta bildo

Made its pad for giving it thickness (as described above).

 falta bildo

Defined the parameter alias.

 falta bildo

Made the sketch to a solid with the Pad icon.

 falta bildo

With the side face of the solid I just created currently selected, I create a sketch.

 falta bildo

And select the edges of the face to use for my sketch.

 falta bildo

Then I draw a rectangle.

 falta bildo

And try to click on the edges to constrain it to the top board (the shelf board itself). This will make it have a dent on each side for the lateral or side boards to lock in with their thickness as the dimension of the dent.

 falta bildo

Here I set parametrically the dimension of the dent.

 falta bildo

I keep the thickness of the side board on the top board edges.

 falta bildo

And then make a pocket.

 falta bildo

The parameter is the thickness of the side board.

 falta bildo

Not the top board thickness!

 falta bildo

Here is the finished dent on the side of the top board.

 falta bildo

But we have only one side.

 falta bildo

So we make a mirror with the base on the YZ plane.

 falta bildo

Here we can see the mirroring action preview.

 falta bildo

We make some more changes to the spreadsheet.

 falta bildo

And sketch the side board.

 falta bildo

Then we have it fully constrained

 falta bildo

with the parameter of the top board thickness.

 falta bildo

The side board sketch is now level with the surface of the top board. above the horizontal axis.

 falta bildo

But it is on the origin and not on the side of the top board.

 falta bildo

So we use the Map sketch to face icon for moving this sketch to the edge of the top board.

 falta bildo

We refresh.

 falta bildo

And see the movement of the side board to its place.

 falta bildo

We modify its name for better reference.

 falta bildo

We can see the intersection of the dent on the top piece with the side piece.

 falta bildo

Selecting the side board and then, with the control key pressed, selecting the top board...

 falta bildo

And then making a boolean cut with the icon which is lighter on this picture. (If chosen in that order, the side board is cut by the top board.)

 falta bildo

The side board can be observed after the cut operation with the top board visible.

 falta bildo

with the top board invisible.

 falta bildo

In another color.

 falta bildo

In contrast with both boards visible.

 falta bildo

Mirror operation to duplicate the side board on the other side.

 falta bildo

Defining the distance of the mirror operation as the width of the shelf.

 falta bildo

But it is really only half the width from the mirror axis.

 falta bildo

Front board sketch.

 falta bildo

The front board is to be cut by the top board? It will be lowered on the next step.

 falta bildo

One constraint remains to be defined.

 falta bildo

Full constriction attained after linking the front board's top right corner with the top board's lower corner via the Coincident constraint icon.

 falta bildo

Defining parametrically the pad (solid) thickness.

 falta bildo

We can observe the new solid board on the axis created by the padding on the sketch.

 falta bildo

So we need to used the Map sketch to face icon. It asks which sketch must the face be mapped to.

 falta bildo

The face and the sketch are to be confirmed.

 falta bildo

I define the points on the sketch and on the face to fix the constraints. The sketch is then fully constrained.

 falta bildo

We make a padding to make the front board. Then parametrically define the thickness from the spreadsheet.

 falta bildo

I made a new sketch to try again.

 falta bildo

And defined the parameters.

 falta bildo

Then I made a pad. I am testing with reversing the side of the pad.

 falta bildo

These are the constraints for the side panel sketch.

 falta bildo

And these are for the front panel sketch.

 falta bildo

I define a sketch for the cut on the side board which will belong to the press-fit.

 falta bildo

And set the parameters to fully constrain the sketch.

 falta bildo

I cut this piece with a pocket operation for the press-fit. But it is not the shape it should be.

 falta bildo

Now I define the parameters of the shape as neck and lip.

 falta bildo

This is the press-fit I made on the side board to fit with the front board.

 falta bildo

I go back to the front board.

 falta bildo

And edit the sketch of the press-fit cut with the spreadsheet to feed the parameters.

 falta bildo

The changed values on the spreadsheet change the values on the sketch.

 falta bildo

Both figures must vary with the thickness of the side board; hence the horizontal distance of 0mm between parallel pieces.

 falta bildo

Here is the pocket produced.

 falta bildo

But it is backwards. So I change the sketch.

 falta bildo

We gut this final front board press-fit.

 falta bildo

And this is the integration with the side piece.

 falta bildo

Parametrizing the screw holes on the side piece. They should be equally distant from the center

 falta bildo

So the side board is complete and the front and back boards have a press-fit cut...on one side.

 falta bildo

Now I mirror the side board.

 falta bildo

I make the cut on both pieces with the new mirror (OtherSide).

 falta bildo

Here are the front and back boards shown with the new press-fit cuts.

 falta bildo

These are the finished support boards: Side, OtherSide, Front and Back.

 falta bildo

And here they are with the top board, which is the shelf.

 falta bildo

These are the final spreadsheet parameters.

 falta bildo

One more view of the finished work.

 falta bildo

Yet another view.

 falta bildo

Making the paths for generating Gcode to feed into the CNC router

Simple copy of the work in order to make all boards on the same plane. It is something to take into account that this copy will not keep the parameters. But I cannot make the new piece turn without turning the original one.

 falta bildo

Showing only the copies of the boards.

 falta bildo

I turned each piece separately by changing the axis and the angle until all boards became parallel.

 falta bildo

I made a compound piece for making the paths. This was not necessary on version 0.18.

 falta bildo

Changed the arrangement.

 falta bildo

Switched to the Path workbench and created a new path job. I selected the Compound model I just created.  falta bildo

Selected Extended Medel's Bound Box as the stock.

 falta bildo

Changed the Gcode output file to be save on the FreeCAD file directory and with the name of the FreeCAD file plus 18.gcode

 falta bildo

Changed the name of the job.

 falta bildo

Added a new tool controller.

 falta bildo

Created a tool controller for the job by selecting the 4mm flat endmill tool.

 falta bildo

Deleted the default controller and set the horizontal feed, vertical feed and spindle speed for my new controller.

 falta bildo

Set the Bound Box extension on the Z axis to none.

 falta bildo

The origin is not on the corner of the stock.

 falta bildo

These are several tries to make the stock placement correct.

 falta bildo  falta bildo  falta bildo

I finally could set the origin axes where the stock starts with the provided Alignment and Set options on the Layout section of the Setup tab of the Job.

 falta bildo

Now I click on the Contour path icon and use the default settings to cut around the pieces.

 falta bildo

I select the notches to Create a Face Operation on those faces.

 falta bildo

This is how the Contour path and the Face Operation path look up to now.

 falta bildo

These are the Dogbone Dress-ups on the face operation paths.

 falta bildo

Here is the detail of the Dogbone Dress-up on the Contour path.

 falta bildo

I Post-process the job and get a text which shows the Gcode. I can modify it before saving. I checked everything was well. So I clicked OK.

 falta bildo

But it threw an error and saved an empty file. (It is probably because I am using a testing and not a production version of FreeCAD.) So I Post-process again and copy-paste the text on the empty file before Canceling.

 falta bildo

Now I create a new job for the 5mm top board that has only a Contour path. (I missed adding the Dogbone dress-up.)

 falta bildo  falta bildo  falta bildo  falta bildo

On the 18 mm paths the boards were in fact parallel. But they were on different planes. So I did the process again. Below are the pictures of the repeated process. As you can see, the boards are not aligned with X-Y plane. The axes are not on the corner of the work to be done.

 falta bildo  falta bildo

So now I had it aligned by way of the SetUp tab on job editing.

 falta bildo  falta bildo  falta bildo  falta bildo  falta bildo  falta bildo

The image below shows that the path is upside-down since the red line should go from the top of the endmill starting position to the first milling point of the stock material. Rather than that, the vertical red line goes from the bottom to the lower point of the stock material below where the milling should start.

 falta bildo  falta bildo

By editing the job through the SetUp tab, I could have changed the position of the cuts.

 falta bildo

But I did not know about this option. So I made a new path job.

 falta bildo

I chose the pieces on the original placement. So I changed to the piece copies that were placed on the same plane.

 falta bildo

As you can see, I now oriented the pieces with X-Y axes (red and green).

 falta bildo

I created an new Mill Face Operation and assigned it to a new 18mm job. (I previously renamed it to 18mm_2.)

 falta bildo

Then I set the way the operation should be performed.

 falta bildo

This was the result.

 falta bildo

After that partial cut, I could then perform the Contour Qperation in order for the lateral cuts to be made and the pieces removed.

 falta bildo

This is the result of the Contour Operation.

 falta bildo

And this is the result after adding the Dogbone Dressup.

 falta bildo

Here is the job edition showing the parts involved.

 falta bildo

Now its time to mill the parts and assemble them

I fix the board with screws to the table protection material.

 falta bildo

This way I fix the Z zero. (I also had fixed the X and Y zero at the corner of the stock material.)

 falta bildo

When the job starts, I notice that I am using the 6 mm endmill and the design was made for a 4 mm endmill. (Perhaps that could be parametrized too.) So I stop the work.

 falta bildo

These are the Facing Operations done on one side of 2 pieces that are side by side.

 falta bildo

The 2 long pieces have been cut and the router is ready to cut the 2 side pieces. But the stock material is not enough. Another stock is fixed at the place where the 2 pieces will be cut.

 falta bildo

The router must be started where the Gcode starts to cut the 2 side pieces.

 falta bildo

But the Gcode must be modified. The feed speed was too slow. It took 2 hours and burnt the wood. So we changed the feed speed from 240.0 to 1200.0 on all lines on both files (18 mm support pieces' gcode and 5 mm top board's gcode).

 falta bildo

The 2 side side pieces are almost finished.

 falta bildo

Here are the 4 finished 18 mm support pieces.

 falta bildo

The machine settings would not allow the 2 mm from one side of the endmill to be less than 0 on X, Y or Z. So the machine would give an error and show the offending dimensions in red.

 falta bildo

The router1325.ini configuration file is modified to accept -2 mm for MIN_LIMIT on AXIS_0 and on AXIS_1.

 falta bildo

So the machine (CNC router) accepts the positioning and does not show any red numbers.

 falta bildo

The top board is being cut. As you can see the diagonal cut, The Z axis was set as the bottom of the stock material. But the designed defined the top of the stock material as the Z zero. So the endmill passed cutting where it should have passed clear of the stock while it was going to the starting location for its Contour Operation.

 falta bildo

I did not include a Dogbone dressup for this path.

 falta bildo

So I had to use the saw.

 falta bildo

It worked well. I have a square corner now.

 falta bildo

The top board goes straight. But the the back support is curved. The top board did not have a notch for the front or back supports as did the side boards.

 falta bildo

But this was solved with a screw on the back board fixing it to the wall. It also gives the structure better stability.

These are pictures of the assembled and mounted bathroom shelf.

 falta bildo  falta bildo

Conclusions

Milling tips

Cut Depth should be equivalent to the tool diameter (as specified in the CNC Tips section of the Computer Controlled Machining tutorial). It sounds natural since the mill cuts horizontally and the depth it can cut can be as much as the width it can cut. But this must be verified in the specification sheet for the endmill and the router.

Stepdown must never be greater than 50% of the diameter of the mill unless the material is very soft.

In 3D milling, model placement must be at the bottom of the material's thickness. The contrary as in 3D printing.

An endmill is flat. Ramping moves are used on dense materials. These moves make milling easier on this type of mill.

Security height is established at 30 mm.

Upcut and downcut drill bits:

Glosary

Stepdown is the vertical advance in each pass.

Stepover and overlap are the percentage of rework the mill does over its previous pass.

Offset is the distance between the center of two passes.

Feed is the horizontal speed.

Plunge is the vertical speed.

Spindle speed is the speed at which the mill turns.

Source files

Paraboloid

Paraboloid Gcode

Bathroom shelf files

Designs with diagonal press-fit.

First draft source file of shelf with each surface on its original assembly plane.

First draft source file of shelf with all surfaces on only one plane including 18mm board endmill paths.

First draft source file of shelf with all surfaces on only one plane including 5mm board endmill paths.

Parametric bathroom shelf files

Designs with parametric measurement values specified on embeded spreadsheet and has ortogonal press-fit.

Parametric design source file of shelf with each surface on its original assembly plane.

Parametric design source file of shelf with all surfaces on only one plane including 5mm board endmill paths.

Parametric design source file of shelf with all surfaces on only one plane including 18mm board endmill paths.

Gcode file of 5mm board endmill paths.

Corrected Gcode file of 18mm board endmill paths.

Final (manually edited) version of Gcode file of 5mm board endmill paths.

Final (manually edited) version of Gcode file of 18mm board endmill paths.