$fn – System Variable

This variable is used to set the number of fragments to draw an arc. The CSG ( Constructive Solid Geometry ) used by OpenSCAD, draw circular and spherical objects using line segments and as a result faces.

The$fn determines how many line segments are used, as a result the $fn arguement can be used in multiple ways. The first is create smoother arcs and spherical surfaces. The second is to various regular polygons and solids.

First let’s look at using $fn for the entire model

If we place the $fn=xx; variable at any place in our model the entire model will use that value.

sphere( 4  );
translate([5,0,0]) cylinder(10,center = true);

will have the same effect as

sphere( 4  );
translate([5,0,0]) cylinder(10,center = true);

The “global” setting can be overridden “locally”. With the following you can see how the sphere with the same radius can be rendered with different numbers of fragments.

sphere( 4  );
translate([5,0,0]) cylinder(10,center = true);

Now let’s examine it’s effects per object.

Being as regular polygons share the same basic elements as a circle, ie radius. We can create any n-sided polygon if all sides are equal.

For example to create a triangle we can use:

circle(3, $fn=3 );

Will result in:

OpenSCAD – Triangle

In this example, we have 3 fragments that equate to the sides of the triangle.

If we wanted to create something more complex say a Regular Decagon:

circle(3, $fn=10);

Notice the only thing that changes was the number of fragements:

We can apply this to 3 Shapes as well. Using 3 for the number of fragments gives us a basic prism.

sphere( 3, $fn=3  );

as we increase the fragment numbers we move through the various sided polyhedrons. With just the $fn, we can not produce all the regular polyhedrons.

sphere( 3, $fn=5  );

The fragments are divided evenly around the circumference of the sphere at the XY Plane.

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: