Workbench Icon OSE 3D Printer Workbench Documentation

_images/ose-3d-printer-workbench-demo.gif

A FreeCAD workbench for designing 3D printers by Open Source Ecology for Distributive Enterprise.

For more information on codebase conventions and patterns, see the OSE Workbench Platform.

Add Frame Command Add Frame

The Add Frame tool adds a Frame to the active document.

You can use this to begin designing a D3D Pro printer of any size or axis configuration.

Custom Properties

Name

Type

Default Value

Description

Has Corners

Bool

False

Whether the frame has 3d printed corners or not.

Size

Length

304.8 mm

Size or dimension of cubic frame.

Thickness

Length

3.175 mm

Thickness of frame.

Width

Length

38.1 mm

Width of frame.

Attaching Axes to the Frame

See Add Axis for details on how to attach axes to the frame.

Warning

In order to attach axes to the frame, the frame must not be rotated.

See Also

Add X Axis Icon Add Axis

There a three tools in the main toolbar to add a Axis, or Universal Axis object in different orientations to the active document:

  1. Add X Axis Icon Add X Axis

  2. Add Y Axis Icon Add Y Axis

  3. Add Z Axis Icon Add Z Axis

Custom Properties

Name

Type

Default Value

Description

Carriage Position

Percent

50

Position of carriage relative to available rod.

Length

Length

304.8 mm

Length of axis corresponds to rod length.

Orientation

String

x

Orientation of axis: X, Y, or Z.

Rod Diameter

Length

8 mm

Diameter of rod.

Side

String

top

Which side the bottom of the axis faces.

Attaching Axes to the Frame

You may attach axes to the frame by selecting one of it’s outer faces, and then clicking a button in the main toolbar to add a axis.

Attaching X, Y, and Z axes to Top, Right, and Front faces

Only certain axes can be attached to certain faces or sides of the frame based on it’s orientation.

Axis Orientation

Attachable Side(s)

X

Top

Y

Left, Right

Z

Front, Rear

Note: You cannot attach an axis to the Bottom face or side of the frame.

The axis-frame attachment logic assumes the frame is not rotated, and determines whether the user is attaching the axis to the appropriate side of the frame based on whether the selected face is parallel to the XY, YZ, or XZ plane.

Tip

See the Report View for attachment troubleshooting.

Add Heated Bed Command Add Heated Bed

The Add Heated Bed tool adds a heated bed to the active document.

Custom Properties

Name

Type

Default Value

Description

Size

Length

203.2 mm

Size or dimension of heated bed.

Centering Heated Bed to Frame & Elevating to Z Axes

  1. Hold-down Ctrl key for selecting multiple objects

  2. Select one Z axis

  3. Select the Frame

  4. Click the Add Heated Bed button on the main toolbar

_images/centering-and-raising-heated-bed.gif

Add Extruder Command Add Extruder

The Add Extruder tool adds an extruder to the active document.

Attaching Extruder to X Axis Carriage

An extruder can be attached to the carriage of the top X axis by selecting the top face of the carriage, and then clicking the Add Extruder button in the main toolbar.

_images/attaching-extruder-to-x-axis-carriage.gif

Generate Cut List

There are two options in the main menu to generate a cut list:

  1. Copy Cut List to Clipboard Command Copy Cut List to Clipboard

  2. Save Cut List as CSV Save Cut List as CSV

Both options generate a cut list with the following:

  • Rods for axes, heated bed, and spool holder

  • Angled bars to construct a frame with 3d printable corners

How it Works

Each option queries the active document for Axis objects and the Frame object in order to determine the rods and angled bars for the cut list.

Determining Rod Quantity

  • 2 X Axis Rods are added for every X Axis object

  • 2 Y Axis Rods are added or every Y Axis object

  • 2 Z Axis Rods are added for every Z Axis object

  • 3 Spool Holder Rods are added based on the existence of a Frame object

  • 2 Heated Bed Rods are added for every pair of Z Axis objects

Determining Rod Length

  • X Axis Rod Length is adjusted by adding 4 inches

  • Y Axis Rod Length corresponds with Length of the axis in the document

  • Z Axis Rod Length is adjusted by subtracting 1 inch

  • Length of Heated Bed Rods and 1 Spool Holder Rod are equal to the length of the Frame

  • Length of 2 Spool Holder Rods are equal to the length of the Frame minus 1 inch (similar to Z axis rods)

Determining Angled Bar Quantity

  • 12 Angled Bars are added based on the existence of a Frame object

Determining Angled Bar Length

Angled bar length is calculated from the following formula:

Frame.Size - ((Frame.Width + (Frame.Thickness * 2)) * 2)

For example, a 12 in frame with a 1.5 in Width and 0.125 in Thickness could have 8.5 in angled bars.

12 in - ((1.5 in + (0.125 in * 2)) * 2) = 8.5 in
_images/12-inch-frame-with-8-point-5-inch-angled-bar.png

Make Angle Frame Connecto Command Make Angle Frame Connector

The Make Angle Frame Connector tool makes a 3D-printable Angle Frame Connector with the specified parameters entered from the Task Panel.

Make Angle Frame Connector

Parameters

Slot Width

Width of three inner slots.

Slot Thickness

Thickness of three inner slots.

Orientation

One of eight possible corners of the frame.

Add Set Screw

Whether to add a set screw mechanism.

Useful for larger frames when worried about slips or frame mis-alignment.

Attention

Assumes M6 set-screw and nut.

Add Filleting

Whether to round edges of three inner slots.

Tip

Makes inserting angled bars later a little easier.

Including Move and Rotate Tools

This document covers how to include the Move and Rotate functions of the Draft Workbench.

  1. Load the Draft Workbench by selecting it from the workbench dropdown.

_images/select-draft-workbench.gif
  1. Select Tools, and then Customize from the Main menu.

https://wiki.freecadweb.org/images/thumb/f/f7/CustomizeToolBar_01.png/640px-CustomizeToolBar_01.png
  1. Next, select the Toolbars tab.

https://wiki.freecadweb.org/images/3/32/CustomizeToolBar_11.png
  1. Select OSE 3D Printer from the dropdown in the right pane.

  2. Click the New… button.

  3. Name the toolbar Move + Rotate, and click OK.

_images/new-toolbar-window.png
  1. Select the Draft workbench from the dropdown in the left pane.

  2. Find the Move and Rotate tools and use the Move right button, or right arrow to add them to the Move + Rotate toolbar.

_images/move-plus-rotate-toolbar.png
  1. You should now have the Move and Rotate tools alongside the OSE 3D Printer tools.

_images/3d-printer-tools-with-move-and-rotate.png

See Also

Customize Toolbars on the FreeCAD Wiki.

ose3dprinter

ose3dprinter.app

The app package is independent of the gui package, must not know about the FreeCAD GUI, and is able to be tested from a FreeCAD command-line environment.

ose3dprinter.app.attachment

Attachment functions to make 3D Printer parts appear attached to each other.

ose3dprinter.app.attachment.get_axis_frame_attachment_kwargs
get_axis_frame_attachment_kwargs
get_axis_frame_attachment_kwargs(frame, selected_frame_face, axis_orientation)

Get the length, placement, and origin translation offset for creating a axis object attached to a selected frame face.

get_default_axis_creation_kwargs
get_default_axis_creation_kwargs(axis_orientation)
get_placement_strategy
get_placement_strategy(face_side)
ose3dprinter.app.attachment.get_extruder_axis_attachment_kwargs
get_extruder_axis_attachment_kwargs
get_extruder_axis_attachment_kwargs(axis, selected_axis_face)
ose3dprinter.app.attachment.get_heated_bed_frame_axis_attachment_kwargs
get_heated_bed_frame_axis_attachment_kwargs
get_heated_bed_frame_axis_attachment_kwargs(frame, axis)

ose3dprinter.app.model

Models for 3D Printer parts.

ose3dprinter.app.model.axis
axis_model
class AxisModel(obj, length=304.8, carriage_position=50, orientation='x', side='top', placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Bases: osecore.app.model.Model

Encapsulates the data (i.e. topography and shape) for a Axis, and is separate from the “view” or GUI representation.

Type = 'OSEAxis'
calculate_carriage_box_x()
calculate_top_of_carriage_box_for_z_axis()
execute(obj)

Called on document recompute

is_x()

Return whether or not this axis is a X axis.

This assumes the axis is parallel to the XY, YZ, or XZ planes, and not rotated in a weird diagonal or skewed way.

Returns

Whether this axis is a X axis.

Return type

bool

is_y()

Return whether or not this axis is a Y axis.

This assumes the axis is parallel to the XY, YZ, or XZ planes, and not rotated in a weird diagonal or skewed way.

Returns

Whether this axis is a Y axis.

Return type

bool

is_z()

Return whether or not this axis is a Z axis.

This assumes the axis is parallel to the XY, YZ, or XZ planes, and not rotated in a weird diagonal or skewed way.

Returns

Whether this axis is a Z axis.

Return type

bool

ose3dprinter.app.model.extruder
extruder_model
class ExtruderModel(obj, placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Bases: osecore.app.model.Model

Encapsulates the data (i.e. topography and shape) for a Extruder, and is separate from the “view” or GUI representation.

Based on:

https://wiki.opensourceecology.org/wiki/File:Simpleextruderassy.fcstd

See:

https://wiki.opensourceecology.org/wiki/File:Finalextruder.png

Type = 'OSEExtruder'
execute(obj)

Called on document recompute

ose3dprinter.app.model.frame
ose3dprinter.app.model.frame.get_face_side
between_bounds
between_bounds(value, lower_bound, upper_bound)
face_side_strategy
class FaceSideStrategy

Bases: abc.ABC

get_face_side(frame, face)
face_side_strategy_factory
class FaceSideStrategyFactory

Bases: object

static create(axis_orientation)
get_face_side
get_face_side(frame, face, axis_orientation)
x_axis_face_side_strategy
class XAxisFaceSideStrategy

Bases: ose3dprinter.app.model.frame.get_face_side.face_side_strategy.FaceSideStrategy

y_axis_face_side_strategy
class YAxisFaceSideStrategy

Bases: ose3dprinter.app.model.frame.get_face_side.face_side_strategy.FaceSideStrategy

z_axis_face_side_strategy
class ZAxisFaceSideStrategy

Bases: ose3dprinter.app.model.frame.get_face_side.face_side_strategy.FaceSideStrategy

ose3dprinter.app.model.frame.get_faces_for_side
filter_faces_parallel_to_plane
filter_faces_parallel_to_plane(faces, plane)
get_faces_for_side
get_faces_for_side(frame, side)

Gets a dictionary of outer faces of the frame by their Side.

Parameters

frame (Document Object) – Frame object

Returns

Dictionary where the keys are a Side, and value is a Face

Return type

dict

get_faces_for_side_of_cnc_cut_frame
get_faces_for_side_of_cnc_cut_frame(cnc_cut_frame, side)
get_faces_for_side_of_frame_with_corners
get_axis_orientation(side)
get_faces_for_side_of_frame_with_corners(frame_with_corners, side)

TODO: Doesn’t include faces of angle frame connector tabs

Parameters
  • frame_with_corners (Document object) – Frame object with HasCorners property = True

  • side (See Side enum.) – Side of frame.

Returns

List of faces within bound of side for a frame with corners.

Return type

List[Part.Faces]

ose3dprinter.app.model.frame.get_outer_faces
get_outer_faces
get_outer_faces(frame)

Get outer faces of a frame.

get_outer_faces_of_cnc_cut_frame
get_outer_faces_of_cnc_cut_frame(cnc_cut_frame)

Get outer faces of a frame constructed by cutting six sheets with a CNC machine.

Assumes the 6 largest faces are the outer faces of the frame.

get_outer_faces_of_frame_with_corners
get_outer_faces_of_frame_with_corners(frame_with_corners)
sort_faces_by_area_descending
sort_faces_by_area_descending(faces)
frame_model
class FrameModel(obj, size=304.8, width=38.1, thickness=3.175, has_corners=False, placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Bases: osecore.app.model.Model

Encapsulates the data (i.e. topography and shape) for a Frame, and is separate from the “view” or GUI representation.

See D3D Frame on the Open Source Ecology Wiki: https://wiki.opensourceecology.org/wiki/D3D_Frame

Type = 'OSEFrame'
property XMax
property XMin
property YMax
property YMin
property ZMax
property ZMin
property distance_between_axis_side_mount_holes
execute(obj)

Called on document recompute

get_face_side(face, axis_orientation)
get_faces_for_side(side)
get_outer_faces()
ose3dprinter.app.model.heated_bed
heated_bed_model
class HeatedBedModel(obj, placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Bases: osecore.app.model.Model

Encapsulates the data (i.e. topography and shape) for a Heated Bed, and is separate from the “view” or GUI representation.

Type = 'OSEHeatedBed'
execute(obj)

Called on document recompute

ose3dprinter.app.part

Parts for 3D Printer.

ose3dprinter.app.part.axis
axis
class Axis

Bases: object

box_height = 24
classmethod calculate_carriage_box_x(rod_length, carriage_position)
carriage_box_width = 52
classmethod cut_holes_in_motor_side_box(motor_side_box, box_height, motor_box_length)
distance_between_hole_and_inner_motor_side = 12.59
distance_between_holes = 22.44
classmethod distance_between_idler_side_holes_and_outer_edge()
classmethod distance_between_inner_motor_side_holes_and_outer_edge()
hole_radius = 3.39
idler_box_length = 66
idler_box_width = 26
classmethod make(rod_length, rod_radius, carriage_position, orientation, side, initial_placement, origin_translation_offset)
motor_box_width = 59.5
x_distance_between_holes = 23.36
get_placement(orientation, side, box_height, length, motor_box_length)
ose3dprinter.app.part.extruder
cooling_and_sensor_mount
class CoolingAndSensorMount

Bases: object

Cooling and Sensor mount for extruder, and sensor itself.

Based on:

https://wiki.opensourceecology.org/wiki/File:ExtruderActiveCoolingAndSensor.FCStd

See:

https://wiki.opensourceecology.org/images/thumb/d/dd/Secondxtruderpart.png/120px-Secondxtruderpart.png

Sensor:

https://wiki.opensourceecology.org/images/thumb/9/9e/8mmsensor.jpg/120px-8mmsensor.jpg

classmethod make(slanted_side_width, main_part_length, main_part_bottom_base_overhang_width)
vent_box_width = 5
make_cooling_and_sensor_slanted_side(thickness, length)

20

| | 55 | | 19
——-
| 7

87

make_sensor_and_sensor_holder(sensor_holder_box_width, sensor_holder_box_height)

/——- | O | ——-

extruder
class Extruder

Bases: object

static make(placement, origin_translation_offset)
make_motor()
main_extruder_part
class MainExtruderPart

Bases: object

Main extruder part

Based on:

https://wiki.opensourceecology.org/wiki/File:Mainextruderpart.fcstd

See:

https://wiki.opensourceecology.org/wiki/File:Mainextruderpart.png

base_height = 7
classmethod make(width, length, bottom_base_overhang_width)
make_slanted_side(width_or_thickness, height)

25.25

| | 50 | | |
| 28.27

51.10

ose3dprinter.app.part.frame
angle_frame_connector
class AngleFrameConnector

Bases: object

Encapsulates the data (i.e. topography and shape) for an Angle Frame Connector, and is separate from the “view” or GUI representation.

An angle frame connector is made up of three brackets.

axis_side_mount_length = 27.75
axis_side_mount_width = 5
classmethod calculate_bracket_length(width, thickness)
classmethod calculate_bracket_width(thickness)
classmethod calculate_y_axis_overhang_distance()
classmethod distance_between_axis_side_mount_holes_and_frame()
classmethod make(width, thickness, corner='bottom_left_front', with_set_screw=False, with_filleting=False)

Make an angle frame connector.

Parameters
  • width (float) – Width of the angled frame.

  • thickness (float) – Thickness of the angled frame.

  • corner (str, optional) – Which corner to orient the angle frame connector to. Defaults to bottom left front corner.

  • with_set_screw (bool) – Whether to include set screw mechanism.

  • with_filleting (bool) – Whether to include filleting.

Returns

an angle frame connector

Return type

Part.Shape

cut_screw_screw(bracket, width, height, thickness, set_screw_block_width)
cut_set_screw_hole(bracket, height, thickness, cylinder)
fillet_bracket(bracket, height)
find_top_wires_parallel_to_xy_plane(bracket, height)
fuse_nut_ramps_to_bracket(bracket, thickness, set_screw_cutout_length, set_screw_cutout_width, ramp_height)

Fuse nut ramps to bracket so nut doesn’t spin when tightening screw.

| |__
Parameters
  • bracket (Part.Shape) – Bracket

  • set_screw_cutout_length (float) – Length of set screw cutout

  • set_screw_cutout_width (float) – Width of set screw cutout

get_angle_frame_connector_placement(corner, length)
get_inner_points(width, thickness)
get_is_top_shape(height)
get_outer_points(width, thickness, set_screw_block_width, with_set_screw)
get_placement_by_corner(length)
is_wire_parallel_to_xy_plane(wire)
make_angle_connector_corner(bracket_length, bracket_width)
make_cylinder(radius, height)
make_set_screw_cutout(length, nut_height, height)

Make set screw cutout in the shape of a pentagon, or home plate in baseball.

make_tri_bracket(width, height, thickness, with_set_screw=False, with_filleting=False)

Make tri-bracket.

Three tri-brackets make up the angle frame connector.

Parameters
  • width (float) – Width of bracket.

  • height (float) – Height of bracket.

  • thickness (float) – Thickness of bracket

  • with_set_screw (bool) – Whether to include set screw mechanism.

  • with_filleting (bool) – Whether to include filleting.

angled_bar
class AngledBar

Bases: object

static make(length, width, thickness, orientation='bottom_front_flat')

Make an angled bar with bottom-left-most corner in the origin (0, 0, 0)

Parameters
  • length (float) – Length of angled bar.

  • width (float) – Width of angled bar. after an inner sheet is cut out of the center.

  • thickness (float) – Thickness of angled bar.

  • orientation (str) – Orientation of angled bar. Must be one of AngledBarOrientation. Defaults to AngledBarOrientation.BOTTOM_FRONT_FLAT.

Returns

An angled bar.

Return type

Part.Shape

fuse_parts(*parts)
get_angled_bar_placement(orientation, length, width)
get_placement_by_orientation(length, width)
angled_bar_frame
class AngledBarFrame

Bases: object

Frame made from 12 angled bars connected by angle frame connectors.

static make(side, width, thickness)

Make a frame from from 12 angled bars connected by angle frame connectors. No welding or epoxy required, and the frame can be disassembled.

Parameters
  • side (float) – Side or dimension of frame from one corner to the opposite corner.

  • width (float) – Width of angled bar.

  • thickness (float) – Thickness of each angled bar.

Returns

A frame made up of angled bars, connected by angle frame connectors.

Return type

Part.Shape

make_bottom_or_top_of_angled_frame(bar_length, width, thickness, bar_orientations, corners, bracket_length, rear_translation, rear_bar_translation)
angled_bar_orientation
class AngledBarOrientation

Bases: object

Represents the orientation for one edge of an angled bar frame.

BOTTOM_FRONT_FLAT = 'bottom_front_flat'
BOTTOM_LEFT_FLAT = 'bottom_left_flat'
BOTTOM_REAR_FLAT = 'bottom_rear_flat'
BOTTOM_RIGHT_FLAT = 'bottom_right_flat'
FRONT_LEFT_UPRIGHT = 'front_left_upright'
FRONT_RIGHT_UPRIGHT = 'front_right_upright'
REAR_LEFT_UPRIGHT = 'rear_left_upright'
REAR_RIGHT_UPRIGHT = 'rear_right_upright'
TOP_FRONT_FLAT = 'top_front_flat'
TOP_LEFT_FLAT = 'top_left_flat'
TOP_REAR_FLAT = 'top_rear_flat'
TOP_RIGHT_FLAT = 'top_right_flat'
axis_side_mount
class AxisSideMount

Bases: object

TODO: Rename to TopAngleFrameConnectorTab?

attachment_overlap = 10.22
classmethod calculate_distance_between_holes_and_connector(length)
classmethod calculate_overhang_distance(length)
distance_between_hole_and_outer_edge = 9.38554
height = 65.2
hole_radius = 3.39
classmethod make(width, length, top_corner)

Returns which side of the angle frame connector to add the axis mount to.

Parameters
  • width (float) – Width of axis side mount.

  • top_corner (str) – A top corner: top left front, top right front, top left rear, or top right rear.

Returns

Axis side mount

Return type

Part.Shape

classmethod make_slanted_edge(slanted_edge_distance, width)
| | |___
classmethod make_trapezoid_tab(width, length, attachment_overlap)

/ / / |_________________|

get_placement(top_corner, height, attachment_overlap)
get_placement_by_top_corner(height, attachment_overlap)
cnc_cut_frame
class CNCCutFrame

Bases: object

static make(side, width, sheet_thickness)

Make a frame from flat sheets cut by a CNC machine, then welded or epoxied together.

This approach works best with welding.

See Also:

https://wiki.opensourceecology.org/wiki/D3D_Frame

Parameters
  • side (float) – Dimension of one side of a cubic sheet.

  • width (float) – Width of outer sheet, after an inner sheet is cut out of the center.

  • sheet_thickness (float) – Thickness of each sheet.

Returns

A frame “welded” together from eight CNC cut sheets.

Return type

Part.Shape

make_sheet(side, width, thickness)

Make one side of the frame or “sheet”.

__________ |
| | |
| | |

|____________|

A sheet is a cubic plane of metal with dimensions specified by side, thickness specified by thickness, and inner sheet cut out of the center, leaving the outer width with a dimension specified by width.

Parameters
  • side (float) – Dimension of one side of the cubic sheet.

  • width (float) – Width of outer sheet, after an inner sheet is cut out of the center.

  • thickness (float) – Thickness of the sheet.

Returns

A sheet, or one side of a frame.

Return type

Part.Shape

corner
class Corner

Bases: object

Represents corners of a cube. TODO: Rename to CubeCorner?

BOTTOM_LEFT_FRONT = 'bottom_left_front'
BOTTOM_LEFT_REAR = 'bottom_left_rear'
BOTTOM_RIGHT_FRONT = 'bottom_right_front'
BOTTOM_RIGHT_REAR = 'bottom_right_rear'
TOP_LEFT_FRONT = 'top_left_front'
TOP_LEFT_REAR = 'top_left_rear'
TOP_RIGHT_FRONT = 'top_right_front'
TOP_RIGHT_REAR = 'top_right_rear'
is_top_corner(corner)

Returns whether a corner is a top corner.

Parameters

corner (str) – A corner.

Returns

Whether the corner is a top corner or not.

Return type

bool

ose3dprinter.app.part.heated_bed
heated_bed
class HeatedBed

Bases: object

static make(size, placement, origin_translation_offset)

ose3dprinter.gui

ose3dprinter.gui.command

Commands users can perform in FreeCAD’s GUI.

ose3dprinter.gui.command.add_axis
add_x_axis_command
class AddXAxisCommand

Bases: object

Command to add X Axis object.

Activated()
GetResources()
IsActive()
NAME = 'AddXAxis'
add_y_axis_command
class AddYAxisCommand

Bases: object

Command to add Y Axis object.

Activated()
GetResources()
IsActive()
NAME = 'AddYAxis'
add_z_axis_command
class AddZAxisCommand

Bases: object

Command to add Z Axis object.

Activated()
GetResources()
IsActive()
NAME = 'AddZAxis'
handle_add_axis_command_activation
find_frame_and_face_in_selection(selection_objects)
handle_add_axis_command_activation(axis_orientation)
ose3dprinter.gui.command.add_extruder
add_extruder_command
class AddExtruderCommand

Bases: object

Command to add extruder object.

Activated()
GetResources()
IsActive()
NAME = 'AddExtruder'
find_axis_and_face_in_selection(selection_objects)
get_extruder_creation_kwargs()
ose3dprinter.gui.command.add_frame
add_frame_command
class AddFrameCommand

Bases: object

Command to add Frame object.

Activated()
GetResources()
IsActive()
NAME = 'AddFrame'
ose3dprinter.gui.command.add_heated_bed
add_heated_bed_command
class AddHeatedBedCommand

Bases: object

Command to add Heated Bed object.

Activated()
GetResources()
IsActive()
NAME = 'AddHeatedBed'
find_frame_and_axis_in_selection(selection_objects)
get_heated_bed_creation_kwargs()
ose3dprinter.gui.command.cut_list
build_cut_list
add_angle_bars_to_cut_list(cut_list_table_rows, document)
add_heated_beds_and_spool_holder_rods_to_cut_list(cut_list_table_rows, num_z_axes, document)
axes_by_orientation_item_to_cut_list_item(axes_by_orientation_item)
build_cut_list()
convert_value_to_quantity_and_format(value)
filter_item_with_axes(axes_by_orientation_item)
get_axis_length_for_cut_list(axis, orientation)
See notes at:

https://docs.google.com/presentation/d/1-tsozcFWVngwjjhr9Mp4843hSGy8iQDH__hKvnzkPew/edit

get_objects_from_document(document)
is_axis(obj)
is_frame(obj)
is_object(obj, type)
log_warning_if_odd_number_of_z_axes(num_z_axes, num_heated_bed_rods)
retrieve_axes_by_orientation_from_document(document)
retrieve_frame_from_document(document)
transform_axes_by_orientation_into_cut_list(axes_by_orientation)
copy_cut_list_to_clipboard_command
class CopyCutListToClipboardCommand

Bases: object

Command to copy cut-list to clipboard

Activated()
GetResources()
IsActive()
NAME = 'CopyCutListToClipboard'
handle_cut_list_command_activation
handle_cut_list_command_activation(create_cut_list_task_panel)
save_cut_list_as_csv_command
class SaveCutListAsCsvCommand

Bases: object

Command to save cut-list as a CSV file.

Activated()
GetResources()
IsActive()
NAME = 'SaveCutListAsCsv'
ose3dprinter.gui.command.make_angle_frame_connector
make_angle_frame_connector_command
class MakeAngleFrameConnectorCommand

Bases: object

Command to make an Angle Frame Connector.

Activated()
GetResources()
IsActive()
NAME = 'MakeAngleFrameConnector'
show_make_angle_frame_connector_task_panel()
make_angle_frame_connector_task_panel
class AngleFrameConnectorTaskPanel

Bases: object

accept()

Executed upon clicking “OK” button in FreeCAD Tasks panel.

create_input_field(name, default_value, layout)
create_label(name, text, layout)
get_corner_combo_box_options()
snake_case_to_title_case(string)
title_case_to_snake_case(string)

ose3dprinter.gui.icon

get_icon_path(icon_filename)

ose3dprinter.gui.part_feature

Exposes functions to create Part::FeaturePython objects.

Minimally, these objects are custom, parameteric, and have a Shape for viewing in three dimensions.

See Also:

https://wiki.freecadweb.org/FeaturePython_Objects https://wiki.freecadweb.org/Creating_a_FeaturePython_Box,_Part_II https://wiki.freecadweb.org/Scripted_objects

Additionally, they may have a ViewProvider class for providing additional customization to their 3d representation, and how they respond to certain graphical interactions such as selection.

See Also:

https://wiki.freecadweb.org/Viewprovider

ose3dprinter.gui.part_feature.axis

Modular and scalable CNC axis used to create cartesian CNC machines.

See Also:

https://wiki.opensourceecology.org/wiki/Universal_CNC_Axis

create_axis
create_axis(document, name, length=304.8, carriage_position=50, orientation='x', side='top', placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Creates a axis object with the given name, and adds it to the document.

ose3dprinter.gui.part_feature.extruder
create_extruder
create_extruder(document, name, placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Creates a extruder object with the given name, and adds it to the document.

ose3dprinter.gui.part_feature.frame

Frame of 3D printer.

create_frame
create_frame(document, name)

Creates a frame object with the given name, and adds it to the document.

ose3dprinter.gui.part_feature.heated_bed

Heated bed of 3D printer.

create_heated_bed
create_heated_bed(document, name, placement=FreeCAD.Placement, origin_translation_offset=FreeCAD.Vector)

Creates a heated bed object with the given name, and adds it to the document.

OSE_3D_Printer

Command Registry Module

command_namespace = 'OSE3DP'

Command Namespace

register_commands()

Register all workbench commands, and associate them to toolbars, menus, sub-menus, and context menu.

three_dimensional_printer_workbench

Indices and tables