Skip to main content

Tests

Optics Design Workbench

This workbench was inspired by the OpticsWorkbench and aims to extend its functionality towards design and optimization of optical assemblies.

The documentation is far from complete but growing.

Feel free to ask any question in the forum thread.

Installing the FreeCAD workbench

To make the Optics Design Workbench available in FreeCAD, install it using FreeCAD's built in addon manager.

Sometimes the latest version on github is not immediately recognized by the addon manger. To ensure to update to the latest version it may be necessary to uninstall the workbench, then refresh the local cache and install the workbench again.

Installing for usage in external python shells and jupyter notebooks

To install as a regular python package run

pip install optics_design_workbench

Note that from within the freecad python shell the workbench is available as a namespace package freecad.optics_design_workbench.

However it is uploaded to PyPi just as optics_design_workbench, i.e., not being part of the freecad namespace, because the freecad package is not pip-installable nor importable in non-freecad python interpreters (yet). It is therefore difficult to install the freecad namespace base package in virtual environments. The optics_design_workbench without the namespace component does not rely on the `freecad' package, therefore can be installed via pip in any virtual environment without any issue.

Feel free to open an issue if a less confusing way of organizing the package exists that allows both usage in FreeCAD as a workbench and installation in non-freecad python interpreters via pip.

Manual installation (without addon manager)

If you want to install without the addon manager, head to the releases section and download the zipped source of your version of choice. Extract the downloaded zip to the Mod folder of your FreeCAD installation. Make sure that the folder containing the init_gui.py is on the third subfolder level below the Mod directory like this:

..../Mod/freecad.optics_design_workbench-1.2.3/freecad/optics_design_workbench/init_gui.py

Development installation

Clone this repository, install the python module in development mode using pip install -e .. Create a symlink in your FreeCAD's Mod folder pointing to the directory of the cloned directory. With this setup, changes in the cloned repository folder will be effective immediately when restarting FreeCAD. Avoid using regular PyPi or addon manager installations in parallel with the development installation.

Getting started with examples

To get started, FCStd files and corresponding jupyter notebooks can be found in the examples folder of this repository.

Gaussian beam point source and detector

examples/1-source-and-detector

Ray-fan simulation mode

The ray-fan mode renders rays for cross-sections of the solid angle with a spacing matching the inverse power density of the light source. This mode renders fast and gives a good first impression where the optical power of your sources ends up.

ray-fan mode screenshot

Monte-Carlo simulation mode

In the Monte-Carlo simulation mode, rays are placed randomly in the full solid angle according to the given power density of the light source. If the simulation is run in continuous mode, recorded ray hits will be stored to disk and can be loaded and further analyzed with the accompanying notebook in the example folder.

monte-carlo mode screenshot

Spherical lens and parabolic mirror

examples/2-lens-and-mirror

Any geometric body in FreeCAD can become member of one of the OpticalGroups to turn them into reflective, refractive, absorbing or ray-detecting objects. This example contains spherical lenses and slotted parabolic mirrors, transparent and absorbing detectors. When running the continuous simulation, folders for all objects that have set Store Hits to true will be generated.

lens and mirror screenshot

Geometry parameter optimization

examples/3-parameter-sweeps

All parameters of the FreeCAD model are accessible from an external python shell through the jupyter_utils submodule. The recommended workflow is to use a jupyter notebook for such edits (hence the module name). The example shows a simple spherical lens, the radius of which is optimized to minimize the spot size on a detector.

Troubleshooting

When things don't work as expected first make sure you are actually running want you intend to run and whether the same workbench version is installed on the python and the FreeCAD side. To check this, run

import freecad.optics_design_workbench
freecad.optics_design_workbench.versionInfo()

in the FreeCAD python shell and

import optics_design_workbench
optics_design_workbench.versionInfo()

in your regular python shell of choice.

Make sure that the workbench versions seen by FreeCAD and by python match and that all the displayed versions and paths match your expectations.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

optics_design_workbench-1.1.2.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

optics_design_workbench-1.1.2-py3-none-any.whl (492.1 kB view details)

Uploaded Python 3

File details

Details for the file optics_design_workbench-1.1.2.tar.gz.

File metadata

  • Download URL: optics_design_workbench-1.1.2.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for optics_design_workbench-1.1.2.tar.gz
Algorithm Hash digest
SHA256 8d880e1cea6cc1946ad7dbf3edc1d6c1df99fb2ae23eb9e670ca5a84366f19f2
MD5 63688d3de52f8a3316dfab24b309f033
BLAKE2b-256 a04bfed19f76f6fdb22a5e1156912f2097c9b16c09690bdc8ede06138f8887d2

See more details on using hashes here.

File details

Details for the file optics_design_workbench-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: optics_design_workbench-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 492.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for optics_design_workbench-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 00aa54c318181c15fc48a0f298793e0a8c0b95493d17a85a32746f8e92af7d1f
MD5 11add8429a2c7e8ff0b6a33220f9ad52
BLAKE2b-256 25d120026be6faaa449618733a1d3ced395ed9e144879669edd38edc65550b0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page