Freecad: Wedges and Pyramids Explained

Like most things in Freecad you can build Wedges and Pyramids in any number of ways. But the most readily available and direct are the ones under “Creation of parameterised geometric primitives” in the “Part” workbench.

Creation of paramaterized geometric shapes
“Creation of parametrized geometric primitives” hold a range of useful shapes ready to go.
Selecting parametric shapes
The drop-down box (default shows “Plane” gives access to many shapes including Wedge – used for wedges and pyramids

Freecad wedges and pyramids use the same tool so select wedge option. Like here:

Freecad: the Geometric primitives
A wide range of shapre are available. Here we are interested in Wedge

The bit that confuses people (it confused the hell out of me) is this set of parameters and exactly what they mean.

the pyramid after creation
Post creation this is what you get. The confusing part are the parameters on the left. (I’ve moved the object to show its shape)

The trouble with this is that it is (at least to me) difficult to know what you are dealing with. There are even a couple of You-tube videos out there telling you how to avoid using the wedge and how to use other more long-winded but clearer methods.

To be fair I was stuck as well – until the penny dropped. So, just to ensure I don’t need to re-learn it all over again in a month or so when I’ve forgotten (again) here it is. Hope it helps.

Wedge: Build the default before modifying it

Personally I don’t mess with it until after it has been created. So hit create and then close. Then in the main menu I select the wedge/pyramid.

The wedge/pyramid selected
So here’s my explanation on what the wedge and Pyramid parameters mean and do.

The first point to know is that the pyramid has been created with one of the corners of the base at 0,0,0 (the base is the bigger of the two square faces). The actual position of this origin has no relevance to the figures in the wedge parameters The wedge parameters are in essence offsets from this origin. You can move the origin (use “placement”) and the whole pyramid will move without distortion and the figures in the parameters defining the wedge will not change. But change the parameters then the wedge/pyramid will change shape but the origin will not move.

I do have a minor gripe with Freecad wedges and pyramids here. The order of the offsets in the parameter list is confusing. IMHO it would be much better to order them like I have below.

Freecad Wedges and Pyramid Parameters

So what are the parameters and what do they mean?

Freecad Wedge and Pyramid offsets diagram
X offsets

1. Xmin – This is the x-axis offset of the start point of the base of the wedge from the specified origin. It defaults to zero so the default x-axis offset for the start of the base of the wedge/pyramid also happens to be at 0. You can change this value and the shape of the wedge will change. But the position of the origin that it is calculated from remains the same.

2. Xmax – This is the x-axis offset of the end point of base of the wedge from the origin. It defaults to 10mm. So this point is 10mm along the x-axis from the origin of the wedge. You can change the origin and Xmax will still be 10mm away from it. You can change the offset Xmax and the wedge/pyramid will change shape as the origin remains the same.

3. X2min – This functions in the same manner as Xmin BUT it is for the other (smaller) square face of the pyramid. Its default value is 2mm. So the offset (x-axis) for the this point from the origin is 2 mm.

4.X2max This functions in exactly the same manner as Xmin BUT it is for the other (smaller) square face of the pyramid. Its default value is 2mm. So the offset (x-axis) for the this point from the origin is 2 mm.

Z Offsets

5. Zmin – This performs exactly like the Xmin offset but obviously for the Z axis

6. Zmax – This performs exactly like the Xmax offset but obviously for the Z axis

7. Z2min – This performs exactly like the X2min offset but obviously for the Z axis

8. Z2max – This performs exactly like the Xmax offset but obviously for the Z axis

Y Offsets

9. Ymin – this is the offset of the height of the base (larger square face) from the origin

10. Ymax – this is the height of the other (smaller) square face from the origin

NOTE: there are NO Y2min or Y2max because the vertical distance between the two square faces is always the same. As far as the y-axis is concerned they are parallel

Ender 3: My Auto Home is off the plate. Here’s Why.

Auto home on a Creality Ender 3 (and presumably all other 3D printers) moves the bed and the extrusion nozzle into a default “zero” position. In essence the bed and the extrusion nozzle are moved so they hit the end stop microswitches which signal to the controller board where the bed and nozzle are.

Mostly people assume that this is 0,0,0. In fact that is what it is set to in the factory defaults for the Ender 3. But if you look at the bed of an Ender 3 after it has been auto homed you will find that the nozzle is actually off the bed by about 5mm. It is not in the bottom left hand corner of the plate as you would expect.

The consequence of this is that if you try and use the full surface area of the plate you will be off center. In the worst case you may actually extrude plastic into thin air. As most projects are small compared to the bed size a small offset in the center of the plate is irrelevant. But still, it is an annoyance.

It is though easy to fix. Without storing the setting in eeprom you will have to repeat it after every power cycle. But you can use Pronterface (or similar) to make it permanent across power cycles.

Here’s what you have to do.

Set Home Offsets

Power up the Ender 3.

Use the little GUI to auto-home. I.e. “Prepare->Auto home”.

Notice that after the auto-homing the extruder is off the bed y-axis by about 5mm.

Now from the on-board GUI select “Prepare→Move axis→Move Y”. Then select 1mm increments. Turn the knob and nudge the nozzle along the Y axis until it is just on the plate. Repeat with the X axis if you have to (though on mine the auto home X location was perfect.)

When it is in the right position select “Prepare→Set home offsets” Click the knob. The machine will double beep.

Now when you enter G code to go to 0,0 it will go to the new position. If you auto home now the display will show (in my case ) the Y axis location as -5

That’s it. Unless you want to make it permanent that is (which you probably do). At the moment if you turn the machine off the home offset will revert back to the auto-home position.

Make it permanent with Pronterface

To make it permanent you need to attach Pronterface via USB. (see this post on how to get Pronterface attached through USB to the Ender 3 from an Ubuntu 18.04 set-up).

In the bottom right corner of Pronterface is a box in which you can enter G code.

Using this box first of all check the home position is set as you want. Use this G code


This prints out current settings. Here is the output on my machine before and after zeroing the home position. Look for “Home offset about 8 lines up from the bottom.

To make this permanent we need to flash to the on-board eeprom. Do this with the M500 G-code. It has no parameters. So just enter:


For me this command never returned. But did not block further commands and seemed to work OK.

Now when you enter G1 X0 Y0 you will go to the corner of the plate rather than the off-plate position dictated by auto home. And you won’t lose the setting over a power cycle.

Remember though to use this constructively you will need to add it after auto-homing in your code like this:

G1 X0 Y0

Ender 3. 32 bit? Or 8 bit? Here’s how to tell

Half way through 2020 Creality changed the processor board on their popular Ender 3 3D printer. So you may not know if your Ender 3 is 32 bit or 8 bit.

For people like myself who are really playing around with 3D printing it makes little difference. The change was made to leverage the extra power of a 32 bit system but it doesn’t mean 8 bit processor version will become obsolete.

The 32 bit processor offers some advantages. Like being able to fully run the latest Marlin 2.0.x software rather than Marlin 1.1.x. Evidently you can also <almost> run the later Marlin 2 software on 8 bit systems. But you have to turn some of the enhancements off and most reports say it is sluggish. So unless you’ve something that really demands it I’d stay with your 8 bit system (I will) running Marlin 1.1.x.

But how do you know if an Ender 3 has an 8 bit or 32 bit board?

Simple! Look at the USB connector. If it is a mini USB socket then it is 8 bit. If it is a micro USB socket it is 32 bit. So depending on which of these below plug into your Ender 3 then you can tell whether it is 32 bit or 8 bit.

micro usb and mini usb connectors
The black micro USB is on the left the older grey mini USB is on the right.

The other way turn on the printer and look on the GUI display. Go to “About printer” and look at the version number

if it says 1.1.x – its 8 bit.

If it says 4.2.x its 32 bit

Ender 3 8 bit processor
The about blurb on the gui showing that this is Ender 3 has an 8 bit processor.

Printing a Lithophane as a Block Engraving on an Ender 3

A lithophane is in essence a 3D image. Here I explore reducing it to simply 2 tones so I end up with what looks like a block engraving that can be used (for example) to print on card.

Or so I hope.This is an experiment in progress with limited success so far. But I do feel most of the problems now lie in my inability to block print rather than in making the block on my trusty Ender 3.

Lithophane Background

Lithophane images are usually printed as a number of thicknesses. Usually the darker parts of the image are the thicker sections of the lithograph but you can change this to be the reverse. The effect is that the image literally stands-out from the background.

By changing your viewing angle it is as if you were moving around a real 3D object. Lithophanes have been around for a very long time and today, due to their 3D-ishness make great projects to print on a 3D printer.

Lithophane as a Block Engraving

It occurred to me that one of the possibilities here is to use a 3d printed lithophane as block engraving of the image. Basically take an image, render it down to two tone black and white and use that to make the lithophane. Print the lithophane on a 3D printer and you should end up with a printing stamp.

I plan to deal with a number of ways to produce a lithophanes in the future but arguably the simplest and easiest is to use some code produced by the guy who runs this site called

All you have to do is download your image to the above webpage and it will produce a lithophane as an STL file. It is a really great tool. And free. You can show him some love by clicking on an advert or two or doing a patreon donation but I’ll leave that up to you.

As far as I know, not only is it free but it doesn’t actually run on anyone else’s machine than yours! (it’s a JavaScript app) So if you like, spark it up, then disconnect from the internet. It should still work OK.

My first attempt at a Lithophane printing block was not too successful. I think I got a bit carried away and the image was too complex. It “sort of” worked as a printing stamp and proved the concept but was not really a success. Simplicity is the key.

A rather lovely silhouette

The second attempt was to take this rather lovely silhouette and use that. It worked better but I obviously had not got rid of all the spurious noise on the image. The result is a lot of trailing PLA “snot” which needed removing. But even then I had difficulty using it to print.

The big problem here appears to be that the paint I use as the wash to use the lithophane for printing doesn’t “like” PLA. So maybe I need to put a layer of latex on it first before putting the paint on? I don’t know. I need to find out.

A Work In progress

So, it’s a work in progress. But I feel that this SHOULD work. More in later posts. I think tonight I’m going to read up on how to block print!

Here is the printing block after the snot was removed and what it produced. Clearly there still is work to be done and/or lessons to be learned.

3D printed silhouette block
The block looks good after removing the snot.
Nearly There…One possibly two are passable prints

FreeCad: Angled Text on a sloping surface

3D printed keyfob
The final freshly printed keyfob with raised text at an angle

This is just a simple little Freecad project to design and build a keyfob with angled text like the one below. In this previous post I detailed how to cut text into a flat object. This does the reverse. It raises text out of an object. Just to make it a little more interesting this is done on a sloping face. I skim over some parts in this. If you get stuck try this post series that describes these skimmed topics in more detail.

Open FreeCad and change the Start screen to the Part Design Screen by selecting from the dialog box in the middle of the top bar. Then click on start body and finally click on start sketch.

Select XY plane and press OK. Now we can sketch out our key fob. Get the sketch fully constrained (see this post), click OK then you and your sketch are back in Part Design.

Extruding the basic slab

Click on extrude. Extrude it for 5mm so now we have a slab. We could if we want simply add our text here. But what fun is that?

the keyfob as a slab before angling the surface and adding text
the keyfob as a slab before angling the surface and adding text
Sketching the Slope

If we turn the back end of the key fob into a sloping surface we save plastic and we can then put angled text onto the sloping face. Switch the view of the key fob to edge on. Select the side face. Now select sketch. In this new sketch draw on the side of the key fob the triangle you want to cut away and constrain it like this. Click OK/Done.

Back in Part Design click on “pocket” then select “through all”. The sketch is sliced off the key fob leaving a wedge shape. (This can be done in other ways too but this is my favourite). You end up with this:

Freecad example: The wedge. Before text is added
The wedge. Before text is added

Now position the piece so you are looking down on it. Make sure the object is flat – as if you were looking down on the text, which of course is not there yet. At this stage I usually go to wireframe mode. This allows to you see through objects and to what lies underneath.

Adding a Text String

Select Draft mode. Then select text string in shapes and build the text you want to add. A fuller description of how to add text is in this post. The only difference is that here we are extruding whereas the other post we are cutting in.

If you have added the text string you still wont see it side on because it still has no thickness!

This at this stage the text is the equivalent of a sketch. So even if the above shot was in wireframe mode you wouldn’t see it. It has no thickness. If you spin it around it looks like this

The wedge with text add as a two dimensional field. Wireframe mode.

Now go to Part mode (NOT Part Design) and extrude the text. You end up with text pointing straight up out of the base. It’s not angled text at this stage. Click on the Placement field and you get another box that allows you to change the angle and position of the text. This below is where I have exaggerated the angle.The green is the extruded text side on. Here it is far too tall and we’ll lower it in a while.

Here’s the text side on. WARNING! notice (I’ve exaggerated it) the gap between wedge and text. This would prevent you getting a valid STL file later.
Warning: Make sure thay are fully touching

Just BE WARNED. When you are moving the text about make absolutely sure it is touching or embedded in the wedge. If it isn’t then (quite reasonably) FreeCad will not allow you to unite the text and wedge into one object.

This image above is an exaggeration. But often a tiny gap can go unnoticed. Until that is you want unite the two objects.

Get your angled text so that is at least touching all the way along. Like this:

Notice the ext is actually slightly embedded in the wedge. That’s fine but there must be no gap between the wedge and the text.

The above example has a crazily large text height so change that in the dialog when it is selected.

The final item

We end up with a 3D diagram like this:

Notice that in this I haven’t got the angle quite right so one end is slightly more embedded than the other. But hey! it’s good enough as an example.

You then need to form a union of the text and the wedge. Select the objects from the left hand column. When all of the bits you want (in this case all two of them) are highlighted select menu Part->boolean->union. Then select the union that get displayed in the model field in the left hand column and export it as an STL mesh file. From there it’s over to Prusa-Slicer (see this post) and then printing.

Freecad Font Path Set-up for Text String Shapes.

When you add a text string to a 3D project (like this simple one) you have to fully specify the path to the font you are using. Which is a pain and is error prone. But there is a Freecad font path set-up in “preferences”. You can specify the base directory of all the fonts. This considerably simplifies the selection. Or you can even just set one font in “preferences” and just use that with no further selection needed. But there’s a small gotcha that tripped me up for a while.

Continue reading

Printing on Creality Ender 3 with Pronterface USB connection.

This is the last part of a small series (starts here) tracking the design and processing of an ultra simple 3D project using Freecad and Prusa Slicer. Together they produced a Gcode file. This can be printed as usual using a SD Ram card. But this post is mainly about printing on a Creality Ender 3 using Pronterface (also called Printrun) on a USB connection.

Continue reading

Using Prusa Slicer to produce Gcode for a Creality Ender 3.

This is the third post in a series plotting the development of an ultra-simple plate from design in Freecad, processing the STL file using Prusa Slicer through to printing on a Creality Ender 3 3D printer. The first post in the series is HERE. In the previous post (Here) we produced a project of our 3D plate with two holes. Now we need to export it from Freecad as an STL file we can process it using Slic3r-PU

Continue reading

A Simple worked example with Freecad, Slic3r and Pronterface.

Many people intermittently use Freecad and the other associated software tools. So when they need to get a 3D design printing they have to go back up the learning curve each time. I expect that like me they go through a phase (each time!) of re-learning what should already be known. But my/your brain has “filed” it away. Hence I thought I’d produce an ultra-simple example with Freecad to remind me of the basics. If like me you are forgetful or maybe just starting to build your own 3D prints then I hope this helps.

Continue reading

Connecting Pronterface to Ender 3 3D printer with Ubuntu 18.04 LTS

I had an irritating problem when I tried to connect Pronterface on my Ubuntu 18.04 LTS system via USB to my Ender 3 3D printer. Whenever I tried to establish a connection I got permission denied displayed in the right hand side of the Proterface GUI.

Continue reading