-
Notifications
You must be signed in to change notification settings - Fork 23
v2.0 Highlights
PyOpticL v2.0 is a complete rewrite of the PyOpticL library. In doing this, we have made a number of improvements both to the general functionality of the software as well as to the ease of use.
The beam simulation pipeline has been re-worked from the ground up. New Interface objects allow for clearer and more easily extensible definitions of optical properties. On top of this, the new beam simulation supports tracking of beam properties throughout the layout including power, polarization, and divergence. The latter of which is a true Gaussian beam simulation to best represent the physical system.
Layout and Component classes give PyOpticL greater control over the placement and handling of objects over v1. This improves the efficiency of computation in large designs, the ease of creating modular layouts, and the extensibility of the library as a whole.
Component definitions greatly improve the way in which components and component libraries are defined over the object classes in v1. Firstly, they are much more pythonic, greatly reducing the amount of FreeCAD-specific syntax that is needed. Even more importantly, they are portable. This means full external libraries can be created without needing to modify the PyOpticL source code.
PyOpticL now has support for global settings. This allows users to easily change options such as system of measurement or default behaviors of the library. This will give users significantly finer control over the operation of the library compared to v1.
Thanks to the new global setting system and improved modularity of the component library, switching between Metric and Imperial layouts is much more seamless than in v1. Components can now be defined with different supported hardware depending on the global measurement system selected. This coupled with the use of dynamic "grid" units when aligning layouts to the optical grid allows for all layouts to be converted between metric and imperial using the global setting.
For v2.0, we have moved away from storing STL files in favor of storing STEP files whenever possible. The new loader automatically generates the needed STL for a given model and caches it for later use. This allows the user to adjust parameters such as mesh quality to improve performance, as well as allowing for easier re-acquisition of files as most manufacturers provide models in the STEP format.