3D Printer Workbench Work Proposal: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
(Break proposal up into sections)
Line 6: Line 6:


= Proposal =
= Proposal =
# FreeCAD macro for changing the lengths of Universal Axis objects
== Phase 1 ==
#* Creates a [https://www.freecadweb.org/wiki/FeaturePython_Objects FeaturePython object] or [https://www.freecadweb.org/wiki/Scripted_objects Scripted object] from '''UniversalAxisSimple.FCStd''' file within repository allowing users to interact with object at a high-level and modify custom properties like '''Length'''.
FreeCAD macro for changing the lengths of Universal Axis objects
#* Additional properties can be added to this object in a later phase:
* Creates a [https://www.freecadweb.org/wiki/FeaturePython_Objects FeaturePython object] or [https://www.freecadweb.org/wiki/Scripted_objects Scripted object] from '''UniversalAxisSimple.FCStd''' file within repository allowing users to interact with object at a high-level and modify custom properties like '''Length'''.
#** Axis Orientation
* Additional properties can be added to this object in a later phase:
#*** X, Y, Z
** Axis Orientation
#** Motor Orientation / Position
*** X, Y, Z
#*** Left or Right
** Motor Orientation / Position
#** <strike>Belt Catcher Orientation</strike> - '''because in practice, we never end up following a convention and correct this with how we plug in wires into the controller. It is faster to change wires than to modify axis during the build.'''
*** Left or Right
#*** Up or down
** <strike>Belt Catcher Orientation</strike> - '''because in practice, we never end up following a convention and correct this with how we plug in wires into the controller. It is faster to change wires than to modify axis during the build.'''
#** Rod size
*** Up or down
#*** 8mm, 1”, 2” '''Leave out the 2 inch - as this is not simple [[Intensive Scalability]] of 8 mm versionj. Do this as at a later stage of the project - first stage restricted to 8 mm'''
** Rod size
#***'''For the 1" axis, please use the same design as found on the [[D3D Mega v19.12]] - but we can only use the Z axis to remain compatible with the existing D3D Pro components. We will need other mounting corner pieces for larger versions of the 3D printer. But the hybrid 8 mm - 1" version appears relevant as it allows a large bed to be used, allowing for max 2' 3D printers, but they can be very tall because the Z is strong. The vertical Z bed is important to enable future high temperature chambers.'''
*** 8mm, 1”, 2” '''Leave out the 2 inch - as this is not simple [[Intensive Scalability]] of 8 mm versionj. Do this as at a later stage of the project - first stage restricted to 8 mm'''
# FreeCAD workbench for assembling multiple Universal Axis objects together
***'''For the 1" axis, please use the same design as found on the [[D3D Mega v19.12]] - but we can only use the Z axis to remain compatible with the existing D3D Pro components. We will need other mounting corner pieces for larger versions of the 3D printer. But the hybrid 8 mm - 1" version appears relevant as it allows a large bed to be used, allowing for max 2' 3D printers, but they can be very tall because the Z is strong. The vertical Z bed is important to enable future high temperature chambers.'''
#* Initialize workbench repository and codebase
 
#* Add 3 buttons to generate Universal Axis objects in different orientations:
== Phase 2 ==
#** '''1)''' Universal X Axis '''2)''' Universal Y Axis '''3)''' Universal Z Axis
FreeCAD workbench for assembling multiple Universal Axis objects together
#**'''4)Add extruder
* Initialize workbench repository and codebase
#**'''5)Add heated bed - a box either 8x8" - 2" tall - or larger/smaller, 2" tall, just like you see in the picture at [[D3D Pro]]
* Add 3 buttons to generate Universal Axis objects in different orientations:
#* Need to copy and modify [https://github.com/kbwbe/A2plus/blob/master/a2p_importpart.py#L148 import part functionality] in [https://github.com/kbwbe/A2plus A2plus] for our purposes '''Can we avoid A2+? Isn't that deprecated and replaced by A3 or something like that? We should not buid in dependence on unstable features of freecad'''
** '''1)''' Universal X Axis '''2)''' Universal Y Axis '''3)''' Universal Z Axis
#** Main problem with using A2plus functionality as is:
**'''4)Add extruder
#*** Combines parts together removing the ability to manipulate individual pieces like lengths of rods
**'''5)Add heated bed - a box either 8x8" - 2" tall - or larger/smaller, 2" tall, just like you see in the picture at [[D3D Pro]]
#* Prove out “assembling” existing FCStd files into a single document - '''Can we avoid Assembly functionality and simply do positional changes? Assembly is for power users, as we don't rely on assembly for the [[General Public Workflow]]
* Need to copy and modify [https://github.com/kbwbe/A2plus/blob/master/a2p_importpart.py#L148 import part functionality] in [https://github.com/kbwbe/A2plus A2plus] for our purposes '''Can we avoid A2+? Isn't that deprecated and replaced by A3 or something like that? We should not buid in dependence on unstable features of freecad'''
# Add Frame button to Workbench
** Main problem with using A2plus functionality as is:
#* Why start with frame as opposed to considering D3D Universal configurations first?
*** Combines parts together removing the ability to manipulate individual pieces like lengths of rods
#** D3D pro configurations have more axes, are more tedious to resize, and will benefit more greatly from automation.
* Prove out “assembling” existing FCStd files into a single document - '''Can we avoid Assembly functionality and simply do positional changes? Assembly is for power users, as we don't rely on assembly for the [[General Public Workflow]]
#* Generates frame from FCStd file in repository
 
#* Assume X YY ZZ configuration to start
== Phase 3 ==
#** Clicking Universal Y Axis button will generate 2 objects with default placements
Add Frame button to Workbench
#** Allow different configurations at a later phase (e.g. 4 Z axes for > 12” beds or 2 X axes)
* Why start with frame as opposed to considering D3D Universal configurations first?
#* Attach Axes to frame when clicked
** D3D pro configurations have more axes, are more tedious to resize, and will benefit more greatly from automation.
#* Assume static and fixed frame size
* Generates frame from FCStd file in repository
#** Allow resizing frame at a later phase
* Assume X YY ZZ configuration to start
#* Assume cubic frame shape
** Clicking Universal Y Axis button will generate 2 objects with default placements
#** Allow rectangular shapes in a later phase
** Allow different configurations at a later phase (e.g. 4 Z axes for > 12” beds or 2 X axes)
#* Determine if it makes sense to allow resizing axes individually when attached to cubic frame
* Attach Axes to frame when clicked
# Assess progress, determine next steps, and plan next three sprints:
* Assume static and fixed frame size
#* Enhance Universal Axis object with additional properties
** Allow resizing frame at a later phase
#* Design and develop interaction between frame and axes when resizing frame
* Assume cubic frame shape
#* Explore workbench interactions when designing D3D Universal configurations (self-supporting 3 axes)
** Allow rectangular shapes in a later phase
* Determine if it makes sense to allow resizing axes individually when attached to cubic frame
 
= Next Steps =
Assess progress, determine next steps, and plan next three sprints:
* Enhance Universal Axis object with additional properties
* Design and develop interaction between frame and axes when resizing frame
* Explore workbench interactions when designing D3D Universal configurations (self-supporting 3 axes)


= Execution =
= Execution =

Revision as of 00:12, 24 January 2020

Problem Statement

Designing 3D printer variants with pre-designed OSE parts and modules in FreeCAD is time-consuming and cumbersome.

Solution

Develop a FreeCAD workbench to streamline the design of 3D printer variants using pre-designed OSE parts and modules.

Proposal

Phase 1

FreeCAD macro for changing the lengths of Universal Axis objects

  • Creates a FeaturePython object or Scripted object from UniversalAxisSimple.FCStd file within repository allowing users to interact with object at a high-level and modify custom properties like Length.
  • Additional properties can be added to this object in a later phase:
    • Axis Orientation
      • X, Y, Z
    • Motor Orientation / Position
      • Left or Right
    • Belt Catcher Orientation - because in practice, we never end up following a convention and correct this with how we plug in wires into the controller. It is faster to change wires than to modify axis during the build.
      • Up or down
    • Rod size
      • 8mm, 1”, 2” Leave out the 2 inch - as this is not simple Intensive Scalability of 8 mm versionj. Do this as at a later stage of the project - first stage restricted to 8 mm
      • For the 1" axis, please use the same design as found on the D3D Mega v19.12 - but we can only use the Z axis to remain compatible with the existing D3D Pro components. We will need other mounting corner pieces for larger versions of the 3D printer. But the hybrid 8 mm - 1" version appears relevant as it allows a large bed to be used, allowing for max 2' 3D printers, but they can be very tall because the Z is strong. The vertical Z bed is important to enable future high temperature chambers.

Phase 2

FreeCAD workbench for assembling multiple Universal Axis objects together

  • Initialize workbench repository and codebase
  • Add 3 buttons to generate Universal Axis objects in different orientations:
    • 1) Universal X Axis 2) Universal Y Axis 3) Universal Z Axis
    • 4)Add extruder
    • 5)Add heated bed - a box either 8x8" - 2" tall - or larger/smaller, 2" tall, just like you see in the picture at D3D Pro
  • Need to copy and modify import part functionality in A2plus for our purposes Can we avoid A2+? Isn't that deprecated and replaced by A3 or something like that? We should not buid in dependence on unstable features of freecad
    • Main problem with using A2plus functionality as is:
      • Combines parts together removing the ability to manipulate individual pieces like lengths of rods
  • Prove out “assembling” existing FCStd files into a single document - Can we avoid Assembly functionality and simply do positional changes? Assembly is for power users, as we don't rely on assembly for the General Public Workflow

Phase 3

Add Frame button to Workbench

  • Why start with frame as opposed to considering D3D Universal configurations first?
    • D3D pro configurations have more axes, are more tedious to resize, and will benefit more greatly from automation.
  • Generates frame from FCStd file in repository
  • Assume X YY ZZ configuration to start
    • Clicking Universal Y Axis button will generate 2 objects with default placements
    • Allow different configurations at a later phase (e.g. 4 Z axes for > 12” beds or 2 X axes)
  • Attach Axes to frame when clicked
  • Assume static and fixed frame size
    • Allow resizing frame at a later phase
  • Assume cubic frame shape
    • Allow rectangular shapes in a later phase
  • Determine if it makes sense to allow resizing axes individually when attached to cubic frame

Next Steps

Assess progress, determine next steps, and plan next three sprints:

  • Enhance Universal Axis object with additional properties
  • Design and develop interaction between frame and axes when resizing frame
  • Explore workbench interactions when designing D3D Universal configurations (self-supporting 3 axes)

Execution

The above proposal is planned to be carried out over the course of three 2-week sprints.

Each sprint will culminate in a sprint demo consisting of a video recording posted on G Roques Log with an email sent to relevant stakeholders ensuring project meets goals.

Sprint Planning

Sprint 1 (Mon 1/27/19 - Sun 2/9/19)

  • FreeCAD macro for changing the lengths of Universal Axis objects
    • Initialize macro repository and codebase
    • Creates new document
    • Creates a FeaturePython object or Scripted object from UniversalAxisSimple.FCStd file within repository allowing users to interact with object at a high-level and modify custom properties like Length.

Sprint 2 (Mon 2/10/19 - Sun 2/23/19)

  • FreeCAD workbench for assembling multiple Universal Axis objects together
    • Initialize workbench repository and codebase
    • Add 3 buttons to generate Universal Axis objects in different orientations:
      • 1) Universal X Axis 2) Universal Y Axis 3) Universal Z Axis
      • Defaults placement to origin
    • Need to copy and modify import part functionality in A2plus for our purposes
    • Prove out “assembling” existing FCStd files into a single document

Sprint 3 (Mon 2/24/19 - Sun 3/8/19)

  • Add Frame button to Workbench
    • Generates frame from FCStd file in repository
    • Assume X YY ZZ configuration to start
    • Clicking Universal Y Axis button will generate 2 objects with default placements
    • Attach Axes to frame when clicked
    • Assume static and fixed frame size
    • Assume cubic frame shape
    • Determine if it makes sense to allow resizing axes individually when attached to cubic frame

Existing Work

There was a similar effort around late 2017 to early-to-mid 2018 by Steven Kaiser and Ruslan Krenzler with the D3D Workbench and Piping Workbench.

The D3D workbench was merely a start, and it so far has a frame only, but made of PVC pipe, which is not our main branch of development. Though, it's useful for anyone wanting to build with PVC.

This proposal is for a new branch of development related to the idea of a OSE 3D Printer FreeCAD workbench starting in early 2019.