FullControl Basics
Learn the fundamental concepts of FullControl
What is FullControl?
FullControl is a Python library that gives you complete control over 3D printing toolpaths. Instead of working with traditional CAD models and slicers, you define exactly where the printer moves and what it does at each point.
Core Concepts
Points
The foundation of all designs. Every position in 3D space is defined as a Point with x, y, and z coordinates.
point = fc.Point(x=10, y=20, z=0.2)
Steps
Individual instructions that tell the printer what to do. Steps can be movements, extrusion changes, or other commands.
steps = [
fc.Point(x=0, y=0, z=0.2),
fc.Point(x=10, y=0, z=0.2),
fc.Extruder(on=False)
]
Layer Management
Build up your design layer by layer, with full control over layer height and transitions.
layer_height = 0.2
for layer in range(5):
z = layer * layer_height
# Add layer geometry here
State Objects
Control printer settings like temperature, speed, and extrusion throughout your design.
steps.append(fc.Extruder(on=True))
steps.append(fc.ExtrusionRate(rate=0.5))
steps.append(fc.PrintSpeed(speed=20))
Basic Workflow
Every FullControl design follows the same basic pattern:
- Import the library: import fullcontrol as fc
- Create a list: Start with an empty list to store your steps
- Add geometry: Use FullControl functions to create shapes and movements
- Add controls: Insert printer commands like extrusion and speed changes
- Transform to G-code: Convert your steps to printer instructions
import fullcontrol as fc
# Initialize
steps = []
# Add some geometry
steps.extend(fc.rectangleXY(
start_point=fc.Point(x=0, y=0, z=0.2),
x_size=20,
y_size=20
))
# Transform to G-code
gcode = fc.transform(steps, 'gcode')
Common Functions
Geometry Functions
- fc.rectangleXY() - Create rectangular shapes
- fc.circleXY() - Create circular paths
- fc.lineXY() - Create straight lines
- fc.arcXY() - Create curved paths
Movement Functions
- fc.travel_to() - Move without extruding
- fc.move_polar() - Move in polar coordinates
- fc.relative_move() - Move relative to current position
Control Functions
- fc.Extruder(on=True/False) - Turn extrusion on/off
- fc.PrintSpeed(speed=value) - Set printing speed
- fc.ExtrusionRate(rate=value) - Control extrusion amount
- fc.Hotend(temp=value) - Set nozzle temperature
Working with Coordinates
FullControl uses a standard 3D coordinate system:
- X-axis: Left/right movement (usually bed width)
- Y-axis: Forward/backward movement (usually bed depth)
- Z-axis: Up/down movement (layer height)
💡 Coordinate Tips
- Start with Z=layer_height (not Z=0) for the first layer
- Use consistent units throughout your design (usually millimeters)
- Consider your printer's build volume when setting coordinates
Example: Simple Square
Here's a complete example that creates a simple square:
import fullcontrol as fc
# Parameters
layer_height = 0.2
size = 20
# Initialize
steps = []
# Move to start position (travel move)
steps.append(fc.Point(x=0, y=0, z=layer_height))
# Turn on extrusion
steps.append(fc.Extruder(on=True))
# Create square
steps.extend(fc.rectangleXY(
start_point=fc.Point(x=0, y=0, z=layer_height),
x_size=size,
y_size=size
))
# Turn off extrusion
steps.append(fc.Extruder(on=False))
# Move up (travel move)
steps.append(fc.Point(x=0, y=0, z=layer_height * 2))
# Generate G-code
gcode = fc.transform(steps, 'gcode')
Next Steps
Now that you understand the basics, you can explore more advanced topics: