G Roques Log
What is G working on?
Hint: I'm currently working on a platform for OSE workbenches using FreeCAD.
https://ose-workbench-platform.readthedocs.io/en/latest/
https://github.com/gbroques/ose-workbench-platform
3D Printer Workbench
The 3D Printer workbench is the best example of a workbench using the platform.
Time Log
3D Printer Workbench Installation and Demos Playlist
Sat, July 27- Sat, Aug 8 2020
- Working on a series of videos to make OSE Workbench Platform more accessible.
Fri, Jul 26, 2020
Work on GitHub:
- https://github.com/gbroques/ose-workbench-platform/commit/2c121bb5591779978fd8b7811218bc1ce019c684
- https://github.com/gbroques/ose-3d-printer-workbench/commit/20b9f3452163a36a43b7ba02afd25a8c3cc48197
Sun, Jul 31, 2020
Sat, Jul 25, 2020
Fri, Jul 24, 2020
Thu, Jul 16, 2020
- https://github.com/gbroques/ose-example-workbench
- OSE Workbench Platform Video Series Outline
- https://github.com/gbroques/ose-workbench-platform-presentation
Tue, Jul 14, 2020
- https://github.com/gbroques/ose-workbench-platform-presentation
- https://github.com/gbroques/ose-workbench-platform/issues/32
Mon, Jul 13, 2020
- https://github.com/gbroques/ose-workbench-platform-presentation
- OSE Workbench Platform Video Series Outline
Sat Jul 4, 2020
Mon Jun 29, 2020
Improved docs for https://github.com/gbroques/ose-workbench-core
Sat Jun 20 - Sun Jun 21 2020
See commit logs at:
- https://github.com/gbroques/ose-workbench-platform
- https://github.com/gbroques/ose-3d-printer-workbench
- https://github.com/gbroques/ose-workbench-core
Fri, Jun 19 2020
- Externalize OSE Core:
Wed, Jun 10 - Sun, Jun 14 2020
See commit logs at:
- https://github.com/gbroques/ose-workbench-platform
- https://github.com/gbroques/ose-3d-printer-workbench
Tue, Jun 9 2020
- Working on model property Sphinx extension
- https://ose-workbench-platform.readthedocs.io/en/latest/index.html
- https://github.com/gbroques/ose-3d-printer-workbench
Mon, Jun 8 2020
- https://ose-workbench-platform.readthedocs.io/en/latest/index.html
- https://github.com/gbroques/ose-3d-printer-workbench
- Worked up upgrading to FreeCAD 18.4 & Python 3.6
- https://wiki.freecadweb.org/Conda
- https://forum.freecadweb.org/viewtopic.php?f=8&t=45582&start=10#p406864
Sun, Jun 7 2020
- https://ose-workbench-platform.readthedocs.io/en/latest/index.html
- https://github.com/gbroques/ose-3d-printer-workbench
- Worked up upgrading to FreeCAD 18.4 & Python 3.6
Sat, Jun 6 2020
Thu, Jun 4, 2020
Tue, Jun 2, 2020
Sun, May 25 - Sun May 31 2020
- See commits on https://github.com/gbroques/ose-workbench-platform
Sun, May 24 2020
Sat, May 23 2020
- https://github.com/gbroques/cookiecutter-ose-workbench
- https://github.com/gbroques/ose-workbench-platform
Thu, May 21 2020
- https://github.com/gbroques/ose-3d-printer-workbench/issues/91
- https://github.com/gbroques/ose-workbench-platform
Wed, May 20 2020
- Various refactors for ose-3d-printer-workbench
- Commits on May 20, 2020
- https://github.com/gbroques/ose-3d-printer-workbench/commits/master
Tue, May 19 2020
Mon, May 18 2020
- Worked on document and creating diagrams for ose-3d-printer-workbench and OSE FreeCAD workbenches in general.
Sun, May 17 2020
- Various refactors for ose-3d-printer-workbench
- Commits on May 17, 2020
- https://github.com/gbroques/ose-3d-printer-workbench/commits/master
Sat, May 16 2020
- Various refactors for ose-3d-printer-workbench
- Commits on May 16, 2020
- https://github.com/gbroques/ose-3d-printer-workbench/commits/master
Fri, May 15 2020
- Various refactors for ose-3d-printer-workbench
- Commits on May 15, 2020
- https://github.com/gbroques/ose-3d-printer-workbench/commits/master
Thu, May 14 2020
- Various refactors for ose-3d-printer-workbench
- Commits on May 14, 2020
- https://github.com/gbroques/ose-3d-printer-workbench/commits/master
Wed, May 13 2020
- Various refactors for ose-3d-printer-workbench
- Commits on May 13, 2020
- https://github.com/gbroques/ose-3d-printer-workbench/commits/master
Sun, May 10 2020
Fri, May 8 2020
Wed, May 6 2020
Mon, May 4 2020
- Product Structure Modeling
- Bill Of Materials
- Finite Element Method
- freecad-part-attachment-python-example - See Also: FreeCAD Wiki - Part Attachment
- FreeCAD Forums - Part Attachment Feature with Custom Scripted Objects
Sun, May 3 2020
- Created initial FreeCAD Class Inheritance Diagram as simplified version of this diagram with hyperlinks to FreeCAD Wiki pages.
- Worked on 3D Printer Workbench Work Proposal for second 90 day iteration.
- Worked on OCCT
- Worked on FreeCAD Workbench Python Programming
- Worked on FreeCAD Legacy Migration
Source for File:OSE_Workbench_Library_Architecture.png:
@startuml title OSE Workbench Library Architecture left to right direction frame "OSE Workbench Generator" { [ose-workbench-generator] } frame "OSE Workbenches" { [ose-3d-printer-workbench] [ose-tractor-workbench] [ose-ceb-press-workbench] [other OSE workbenches] } frame "OSE Workbench Libraries" { [ose-workbench-core] } [ose-3d-printer-workbench] ..> [ose-workbench-core] [ose-tractor-workbench] ..> [ose-workbench-core] [ose-ceb-press-workbench] ..> [ose-workbench-core] [other OSE workbenches] ..> [ose-workbench-core] [ose-workbench-generator] ..> [ose-3d-printer-workbench] [ose-workbench-generator] ..> [ose-tractor-workbench] [ose-workbench-generator] ..> [ose-ceb-press-workbench] [ose-workbench-generator] ..> [other OSE workbenches] @enduml
Sat, April 25 2020
- Made OSE 3D Printer workbench banner from previous work on Jean-Baptiste Log.
SVG DOWNLOAD LINK: ose-3d-printer-workbench-logo.svg
Sun, March 15 2020
- Continue working on adding Angle Frame Connector to D3D Frame for OSE 3D Printer Workbench
Mon, March 9 2020
- Continue working on adding Angle Frame Connector to D3D Frame for OSE 3D Printer Workbench
Sun, March 8 2020
- Continue working on adding Angle Frame Connector to D3D Frame for OSE 3D Printer Workbench
Sat, March 7 2020
- Worked on adding Angle Frame Connector to D3D Frame for OSE 3D Printer Workbench
Wed, March 4 2020
- Make Width of Frame configurable
- Make Thickness of Frame configurable
Tue, March 3, 2020
- Documented how to include Move and Rotate tools from Draft workbench
Mon, March 2, 2020
- Worked on making the width of the frame configurable
Thu, Feb 27, 2020
- Finish working on adding extruder to workbench
- Fix bug when adding heated bed while frame is selected
- Created 2nd demo for 3d printer workbench demo focusing on heated bed and extruder:
Wed, Feb 26, 2020
- Work on "attaching" extruder to X universal axis when top face of carriage is selected
- Create issue for bug when adding heated bed when frame is selected
Mon, Feb 24, 2020
- Worked on initial simple extruder model
Thu, Feb 20, 2020
- Host docs site for 3d printer workbench:
Tue, Feb 18, 2020
- Worked on docs site
Mon, Feb 17, 2020
- Worked on initial simple extruder model
Sat, Feb 15, 2020
- Created board to track work for 3d printer workbench:
Wed, Feb 12, 2020
- Center heated bed when button is clicked and frame is selected
- See the following commit:
- https://github.com/gbroques/ose-3d-printer-workbench/commit/a3d3adc3f7b482984ec1b3bd0bde712baeab4205
- Start working on adding extruder to 3d printer workbench
Tue, Feb 11, 2020
- Finish simplified model of angle frame connector and merge it into master branch
- NOTE: Angle frame connector still isn't incorporated intro frame model
- See the following commit for full details of code:
Mon, Feb 10, 2020
- Added and improved unit tests
- Refactored 3d printer workbench into "core" and "workbench" packages
- See commit log for details:
- Worked on adding angle frame connectors
- See angle-frame-connector branch https://github.com/gbroques/ose-3d-printer-workbench/commits/angle-frame-connector
Sun, Feb 9, 2020
- Added beginning of automated test suite for ose 3d printer workbench
- Added CI with Travis CI and Coverage reports with Coveralls
- These are reflected by the new Build Status and Coverage Status at the top of the README respectively
- See https://github.com/gbroques/ose-3d-printer-workbench for details
Sat, Feb 8, 2020
- Did proof-of-concept (POC) for python unit tests with FreeCAD 0.16 and Docker:
- Explored getting unit tests for the workbench
- Can run embedded FreeCAD 18 (installed with Ubuntu snap) with the following command modifying the LD_LIBRARY_PATH environment variable:
LD_LIBRARY_PATH=/snap/freecad/8/opt/local/FreeCAD-0.18/lib:/snap/freecad/8/usr/lib/x86_64-linux-gnu:/snap/freecad/8/opt/local/FreeCAD-0.18/Mod /snap/freecad/8/usr/bin/python2.7 test.py
- Where test.py contains an import FreeCAD statement
- Tried extracting FreeCAD 16 AppImage to get to lib folders and run embedded
- However it's missing different static shared libraries (.so files)
- Unable to install FreeCAD 0.16 (legacy) from PPA as they don't have a version for Bionic (18.04) and Xenial libs were incompatible with Bionic libs
- Tried compiling version 16 of FreeCAD from source, but it's way too much trouble
- Discovered it's relatively easy to add a test to the TestWorkbench. See the following forum thread:
- https://forum.freecadweb.org/viewtopic.php?t=30469
- However this is only available in FreeCAD 0.18 and greater
- Also this approach means you can only run unit tests from the GUI
- Ideally we run unit tests quickly from the command line
- FreeCAD's python 2.7 is missing the mock package for mocking objects
- Making unit tests with FreeCAD even more difficult
- Conclusion: Try adding unit tests later when we upgrade to a later version of FreeCAD. It'll be a lot easier than messing with legacy FreeCAD.
- Can run embedded FreeCAD 18 (installed with Ubuntu snap) with the following command modifying the LD_LIBRARY_PATH environment variable:
Thu, Feb 6, 2020
- Created Installation walkthrough video for 3d printer workbench:
Wed, Feb 5, 2020
- Created first product owner demo for 3d printer workbench:
Mon, Feb 3, 2020
- Add buttons for Y and Z axis to workbench, and continue refining frame attachment behavior
- See commit log in OSE 3d printer workbench GitHub repository:
Sat, Feb 1, 2020
- Finished working on attaching axes to frame by selecting frame faces
- See commit log in OSE 3d printer workbench GitHub repository:
Fri, Jan 31, 2020
- Continue working on attaching axis to frame
- See commit log in OSE 3d printer workbench GitHub repository:
Thu, Jan 30, 2020
- Continue working on attaching axis to frame
- Got axis attaching to one Y side
- See commit log in OSE 3d printer workbench GitHub repository:
Tue, Jan 28, 2020
- Continue working on attaching axis to frame
- See commit log in OSE 3d printer workbench GitHub repository:
Mon, Jan 27, 2020
- Add Button for heated bed to 3d printer workbench
- Add carriage box to universal axis model
- Refactor command registry for greater clarity
- Start working on attaching axis to frame
Sun, Jan 26, 2020
- Mainly worked on refactoring 3d printer workbench
- Created single package for workbench to avoid pollution FreeCAD namespace
- Got rid of "registry" pattern for main toolbar in favor of a "command collection" pattern
- Had some email exchange with Marcin on direction of the project.
Sat, Jan 25, 2020
- Spent time on FreeCAD forum figuring out how to set lower and upper bounds with a custom Length property:
- firstVertex and lastVertex methods don't exist in FreeCAD 16. Had to use alternative. See following thread for details:
- Explode Compound Feature introduced in FreeCAD 18. See the following page for details:
- Added button to workbench to create Frame which you can resize. Defaults to 16".
Fri, Jan 24, 2020
- Got initial 3d printer workbench repository setup locally
- Need to push to GitHub
- Learned there's a "new" and "old" style pattern for creating workbenches
- "new" pattern doesn't work in FreeCAD 16
- Need to research the drawbacks and limitations of old pattern further
Tue, Jan 21, 2020
Worked on Universal Axis macro:
- Add screenshot to README
- Add chamfered motor to universal axis object
- Display rod diameter as read-only property defaulted to 8 mm
- Add separate dimensions for motor side box as opposed to using the same dimensions for motor and idler side boxes
Mon, Jan 20, 2020
- Playing around with creating a Universal Axis object from existing FCStd file
- Beginning to think we should generate these objects programmatically in Python code
- Will play around with this idea as well
- Created Universal Axis Macro repository on GitHub
- Has a Length property
- Had to re-create basic shapes like boxes and cylinders
- 2 boxes: 1 for motor side and 1 for idler side
- 2 rods connecting the 2 boxes
Sun, Jan 19, 2020
- Finish work proposal draft in Google doc
- Publish finalized draft on wiki as 3D Printer Workbench Work Proposal
Sat, Jan 18, 2020
- Continue working on draft proposal
- Read Scripted Object on FreeCAD wiki
- Read FeaturePython objects on FreeCAD wiki
- Includes short tutorial
- Started working on Universal Axis object macro in FreeCAD
- Goal is to be able to change the length in a single parameter
- Importing existing FCstd files into a document is not trivial
- Assembly 2 gives error when importing simple Universal X axis
- Looks like skaiser struggled with this in the D3D printer workbench. See commit.
- A2plus can do it. See below code snippet:
>>> import a2p_importpart >>> a2p_importpart.importPartFromFile(App.ActiveDocument, '/home/g/Projects/ose-3d-printer-workbench/UniversalAxis.FCStd') >>> from PySide import QtGui >>> mw = FreeCADGui.getMainWindow() >>> mdi = mw.findChild(QtGui.QMdiArea) >>> sub = mdi.activeSubWindow() >>> if sub != None: ... sub.showMaximized()
- Need to determine if a path forward
- Figuring out how to import existing FCStd files while maintaining their geometries or
- Re-create geometries for each part (rods, carriage, motor, idler, etc.) programmatically in Python using FreeCAD building blocks like Sketcher and Part Design workbench APIs
Fri, Jan 17, 2020
- Start draft work proposal for 3D Printer Workbench
- See the following Google Doc: https://docs.google.com/document/d/1-d49YrHHQkfc9QJA6BxaQDG89-p4-KR6hv8qG0RYUVA/edit?usp=sharing
- Reviewed 3D Printer Design Workbench for FreeCAD
- Review Universal Axis Design in FreeCAD
Thu, Jan 16, 2020
Researched D3D Printer and OSE FreeCAD workbenches.
Relevant OSE Wiki links:
Workbenches
OSE Developer Test Video
-
- FreeCAD file for OSE Developer test - File:Groques-ose-developer-test.FCStd
- See also the FreeCAD Macro on GitHub I created to complete the OSE Developer Test programmatically
Q: How many hours did each part of the test take to complete?
- Installing Linux ~ 2 hours
- Learning FreeCAD ~ 16 hours
- Documenting my work ~ 2 hours
Q: Which section was most difficult?
- A: 2. FreeCAD
Q: Add any other feedback you have on the FreeCAD Test or the Developer Test in general.
- A: See OSE Developer Test Thoughts section.
Q: Score yourself 0-100 based on the percentage of the Test points that you have completed successfully - and include that score in your work log comments.
- A: I believe I completed everything so 100?
OSE Developer Video Cover Letter
FreeCAD Learning Resources
- Learn FreeCAD Playlist - https://www.youtube.com/playlist?list=PL2935W76vRNFvUGefQr3q9P9eezJZyj-u
- Intro to FreeCAD for 3D Printing - https://www.youtube.com/playlist?list=PLSLeSKyjWpVYxz7kpTmPfxMAzE6SxIIfV
OSE Developer Test Thoughts
OSE Linux Thoughts
- Creating the Live USB from ISO is easy and straight forward
- Had a unused 8 GB USB laying around
- Used Startup Disk Creator on Ubuntu 18.04
- Had some difficulty finding the correct download link for the latest version of ISO
- Had difficulties booting from USB even after changing boot order
- Maybe related to dual-booting Windows and Ubuntu
- Found help on Ask Ubuntu: Is there a way to boot from usb through grub menu?
- Solution was to manually enter a series of commands in GRUB menu every time I boot (made using OSE Linux painful)
grub> ls (hd0) ... grub> ls (hd0) device hd0: ... device information used to obtain uuid for next command grub> search --fs-uuid --set=root 2017-10-28-08-56-20-00 grub> chainloader /EFI/BOOT/grubx64.efi
- Selecing Wi-Fi network and entering in password each boot is annoying
- No pre-installed Chrome extensions makes a lot tasks difficult
- No password manager makes logging into various critical websites difficult:
- YouTube to listen to music while I work
- The Open Source Ecology Wiki
- To jot down notes or save files
- GitHub
- To save work
- To contribute to or debug open source projects like FreeCAD workbenches
- No password manager makes logging into various critical websites difficult:
- No SSH key created so I can't easily authenticate and work out of GitHub
- No code editor setup how I like
- Visual Studio Code
- Various extensions like Python support
- Preferred theme and font
- Visual Studio Code
- Severely out of date software
- Chromium has banner that says "We've detected you're using an older version of Chrome. Reinstall to stay secure"
- Gmail - This version of Chrome is no longer supported. Please upgrade to a supported browser.
- FreeCAD 16 (released April 2016 - 3 and a half years ago at the time of writing)
- Out of date workbenches
- No AddOn Manager
- Assembly 2 workbench is no longer maintained since 2016 and may have issues with FreeCAD 0.17 and above
- Why spend time to learn something that won't be around in the future?
- Chromium has banner that says "We've detected you're using an older version of Chrome. Reinstall to stay secure"
- No file persistence is a big down side
- Installed necessary software for OSE Developer Test manually on Ubuntu 18.04
- Mostly straight-forward
- Had difficulties installing FreeCAD
- Some issue with installing FreeCAD from Software Center in Ubuntu 18.04
- No module named WebGui startup error
- Installing FreeCAD from PPA didn't work either
- See here for person with similar issue. Error message is along the lines of "The following packages have unmet dependencies: "x" : Depends: "y" but it is not going to be installed ... Unable to correct problems, you have held broken packages."
- Uninstalling and re-installing FreeCAD in Software Center fixed "No module named WebGui" error
FreeCAD Thoughts
- Initially very difficult even for the most basic tasks like moving and rotating objects
- Frustration led to searching for OSE Developer Test solutions on YouTube
- Found one solution where the person pastes commands into the Python Interpreter to arrange the cube
- This seemed a lot easier than messing with the GUI and appealed to my background as a developer
- Decided to create a FreeCAD macro for the OSE Developer Test
- Wanted access to GitHub and preferred code editor setup how I like
- Frustrations with using older FreeCAD 16 when help online referenced latest FreeCAD 18 features
- Spent a lot of time trying to get auto-completion for FreeCAD API in Visual Studio Code
- Found walkthrough article with accompanying video on YouTube, but still didn't work
- Linux command to find FreeCAD.so file - locate FreeCAD.so
- Relevant FreeCAD forum threads:
- Had difficulty attaching bolt to hole programmatically in Python using the Fasteners workbench
- Created issue on GitHub repository
- Spent some time debugging Fasteners workbench
- Discovered FreeCAD 19 will come out sometime this year (2020) and I'm very excited:
- GUI looks a lot prettier and there's a dark theme
- Migrating from Python 2.x to Python 3.x
- After spending some time completing the OSE Developer Test I feel a lot more comfortable in FreeCAD and see the power in it
TODO List
- Get better about logging hours
- Instructional on how to modify the FreeCAD 3D Printer Workbench for different CAD insertion - for example if someone wants to modify the extruder to add more details
- Investigate the following code snippet
# All shapes have a Placement too. We give our shape the value of the placement # set by the user. This will move/rotate the face automatically. comp1.Placement = obj.Placement
- Overall workbench process
Source: https://forum.freecadweb.org/viewtopic.php?t=24794#p194960
Skills
- Aligned with vision of ending artificial scarcity; civilization construction from scratch
- Design - web, logo, graphic.
- Speaking, Dancing Rabbit, NVC
- Programming