Example of design abstraction layers applied to a strontium trapped ion quantum computer:
FreeCAD is based on python with built-in support for python scripts etc. It also has:
- Support for custom workbenches and python libraries
- Fully featured and customizable GUI
- Ability to work with various object formats
- Beam paths are automatically calculated based on component placement
- Component placement can be defined "along beam" to remove the need for hard-coded coordinates
- Beam calculations include reflection, transmission, refraction, and diffraction (limited)
Some GUI accessable functions have been implemented to perform various helpful actions:
- Re-Run Last Macro - Clears and re-draws last baseplate, great for quickly checking changes
- Recalculate Beam Path - Useful to check beam paths when applying in-editor modifications
- Toggle Component Visibility - Easily hide all beams and components
- Toggle Draw Style - Toggle wire-frame draw style to easily check for hidden issues
- Export STLs - Export all baseplates and adapter components to STL for fabrication
- Export Cart - Export all parts to both a spreadsheet and a csv compatible with Thorlabs upload-a-cart system
- Reload Modules - Reload all PyOpticL modules, great for debugging new parts
- Get Orientation - Automatic orientation and importing of new components from STEP files
- Get Position - Measure offsets and mount locations from oriented STEP file
These functions can also be scripted into macros if desired
There are a few important things to ensure before you can use PyOpticL:
-
Install FreeCAD, Python, and Git
-
Add PyOpticL as an custom addon repository in FreeCAD
Under Edit>Preferences>Addons>Custom Repositories, enter the following information:
Repository URL: https://github.com/UMassIonTrappers/PyOpticL.git
Branch: main -
Install the PyOpticL library In the Addon Manager (Tools>Addon Manager), search for "PyOpticL" and click install.
-
Check everything is setup correctly
You should now be able to re-launch FreeCAD and see the "PyOpticL" workbench in the dropdown