3D Printer Workbench Work Proposal: Difference between revisions
Line 95: | Line 95: | ||
* Add more unit tests, documentation, and valuable refactors to existing [https://github.com/gbroques/ose-3d-printer-workbench ose-3d-printer-workbench]. | * Add more unit tests, documentation, and valuable refactors to existing [https://github.com/gbroques/ose-3d-printer-workbench ose-3d-printer-workbench]. | ||
** Increased documentation on existing patterns | ** Increased documentation on existing patterns | ||
** Library or framework of code containing encapsulating functionality common to all OSE workbenches (will be within <code>ose-3d-printer-workbench</code>, but designed to be ported out into a separate repo and project later | ** Library or framework of code containing encapsulating functionality common to all OSE workbenches (will be within <code>ose-3d-printer-workbench</code>, but designed to be ported out into a separate repo and project later) | ||
* <code>ose-workbench-generator</code> using a project scaffolding tool like [https://github.com/cookiecutter/cookiecutter cookiecutter] or [https://yeoman.io/ yeoman] to quickly generate new workbenches with requisite files and structure needed to reduce barrier to entry. | * <code>ose-workbench-generator</code> using a project scaffolding tool like [https://github.com/cookiecutter/cookiecutter cookiecutter] or [https://yeoman.io/ yeoman] to quickly generate new workbenches with requisite files and structure needed to reduce barrier to entry. |
Revision as of 15:42, 3 May 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
General Requirements
- Support OSE Linux and FreeCAD 16
- If we can support 18 while not at the expense of 16, then great.
- Keep file size of parts low. See File Simplification for details.
- See further details in proposal.
Phase 1
FreeCAD macro for changing the lengths of Universal Axis objects
- Creates a FeaturePython object or Scripted object 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 version. 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.
- Axis Orientation
Phase 2
FreeCAD workbench for assembling multiple Universal Axis objects together
- Initialize workbench repository and codebase
- Add buttons to generate objects for designing 3D Printer:
- Universal X Axis
- Universal Y Axis
- Universal Z Axis
- Extruder
- Heated bed - a box either 8x8" - 2" tall - or larger/smaller, 2" tall, just like you see in the picture at D3D Pro
- Generate these objects parametrically and programmatically in Python
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
Sprint 3 (Mon 2/24/19 - Sun 3/8/19)
- Add Frame button to Workbench
- 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
Phase 2 (Second 90 day iteration)
TODO: Need to reorganize this page, and section.
- Goal: Increase replicability of work accomplished in phase 1 (first 90 day iteration)
Deliverables
- Add more unit tests, documentation, and valuable refactors to existing ose-3d-printer-workbench.
- Increased documentation on existing patterns
- Library or framework of code containing encapsulating functionality common to all OSE workbenches (will be within
ose-3d-printer-workbench
, but designed to be ported out into a separate repo and project later)
ose-workbench-generator
using a project scaffolding tool like cookiecutter or yeoman to quickly generate new workbenches with requisite files and structure needed to reduce barrier to entry.
Stretch Goals: YouTube tutorial video series on FreeCAD Workbench Python Programming.
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.