All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning, with one exception: small features that only simplify access to certain parts of the ZOS-API can also be added in patch releases.
[1.3.0] - 2024-10-30
- Wavefront analysis:
zospy.analyses.wavefront.wavefront_map
(!61) - Extended scene analysis:
zospy.analyses.extendedscene.geometric_image_analysis
(!61) - Physical optics analysis:
zospy.analyses.physicaloptics.physical_optics_propagation
(!61)- Helper functions to generate specific parameter dictionaries for these analyses:
zospy.analyses.physicaloptics.pop_create_beam_parameter_dict
,zospy.analyses.physicaloptics.pop_create_fiber_parameter_dict
- Helper functions to generate specific parameter dictionaries for these analyses:
- Convenience function to change the aperture type of a surface in sequential mode:
zospy.functions.lde.surface_change_aperturetype
- Experimental new interface for analyses in
zospy.analyses.new
(#78, #15) - Add support for system viewer exports in
zospy.analyses.systemviewers.viewer_3d
andzospy.analyses.systemviewers.cross_section
(#80).
- Updated
zospy.functions.lde.surface_change_type
to also support surfaces that require the specification of a file to load. (!61) - Added support for dictionary parameters in both
zospy.tests
andzospy.scripts.generate_test_reference_data
. (!61)
[1.2.1] - 2024-03-11
- Unsupported locale setting on import (#66, #69)
- Zernike Standard Coefficients analysis parses dates as floats under German locale (#70)
- Custom
__dir__
method forzospy.analyses.base.Analysis
.dir
now shows both the wrapper members and the OpticStudio analysis members (!56)
[1.2.0] - 2024-01-19
- New, unified, connection method
ZOS.connect
. This method replaces the existing connection methodsZOS.connect_as_extension
,ZOS.create_new_application
andZOS.connect_as_standalone
. The connection mode is passed as an argument and the primary system is always returned (!47) - The OpticStudio installation directory can be manually specified using the
opticstudio_directory
parameter of theZOS
class. This is particularly useful if multiple OpticStudio versions are installed on the same system and you want to use a specific version (!47)- Note: when this parameter is used, the
ZOSAPI_NetHelper
is not loaded andZOS.ZOSAPI_NetHelper
remains unset.
- Note: when this parameter is used, the
zospy.api.codecs
for customized conversions between ZOS-API types and Python types (!48)zospy.api.codecs.OpticStudioInterfaceEncoder
for automatic downcasting of certain common generic interfaces to their implementation (e.g. the use of__implementation__
is no longer needed) (!48)- MTF analysis:
huygens_mtf
(#55) pickup_chief_ray
solver (!38)ZOS.disconnect
to disconnect from OpticStudio (!47)- Support for OpticStudio 2024 R1 (!51)
- Support for Python 3.12 (!54)
OpticStudioSystem.load
fails silently when path is incorrect or relative (#34)- Saving after connecting in extension mode fails because
OpticStudioSystem._OpenFile
is not set. When connecting in extension mode,_OpenFile
is now set with the path to the opened system to prevent this (#41)
- Changed license to MIT (#57, #58) - 2023-12-22
- Deleting a
zospy.zpcore.ZOS
object now automatically callsZOS.disconnect
(!47) - When connecting in extension mode, it is not necessary anymore to save the primary system with
OpticStudioSystem.save_as
before it can be saved withOpticStudioSystem.save
(!47, #41) zospy.analyses.base.Analysis
now useszospy.api.codecs.OpticStudioInterfaceEncoder
to downcast analysis interfaces to their implementation (!48)- Accept relative paths and check if the path exists in
OpticStudioSystem.load
andOpticStudioSystem.save_as
(!50) - Use
zospy.constants.process_constant
for parsing thefrom_column
argument ofzospy.solvers.surface_pickup
. This column can now be specified as either a value fromzospy.constants
or a string (!53)
ZOS.connect_as_extension
,ZOS.create_new_application
andZOS.connect_as_standalone
. They have been replaced withZOS.connect
(!47)zospy.functions.nce.get_object_data
is deprecated because its task is now performed byzospy.api.codecs.OpticStudioInterfaceEncoder
(!48)
[1.1.2] - 2023-12-13
- Reversed row index of datagrids in
zospy.utils.zputils.unpack_datagrid
(!42)
[1.1.1] - 2023-09-25
ZOS.connect_as_standalone
as alias forZOS.create_new_application
(#26)- New parameter
return_primary_system
forZOS.connect_as_extension
andZOS.create_new_application
. These methods return the primary optical system if this parameter isTrue
. If the license is not valid for the ZOS-API, aConnectionRefusedError
is raised (#26) zospy.functions.nce.get_object_data
to get the data of an NCE object (#30)
- Erroneous parsing of analyses results when textfile encoding was not set to
Unicode
by implementingzospy.zpcore.ZOS.get_txt_file_encoding
(!36) - Bug that did not allow users to change the LensUpdateMode directly through
OpticStudioSystem.LensUpdateMode
(#40)
- Updated how and when constants in
zospy.api.config
are determined for more clarity (!39) - Update the error message in
zospy.ZOS
to explain why only a single instance ofZOS
is allowed (#24) - Load ZOS-API DLLs in
ZOS.__init__
(#26)
- Separate calls to
ZOS.wakeup
are now redundant. This method will be removed in a later release (#26)
[1.1.0] - 2023-07-03
- Polarization analyses:
polarization_pupil_map
,transmission
(#14) - System viewer analyses:
cross_section
,viewer_3d
,shaded_model
,nsc_3d_layout
,nsc_shaded_model
(!20) - Documentation for all examples (!25)
version
property for theZOS
class (!21)zospy.utils.pyutils.atox
,zospy.utils.pyutils.xtoa
and_config.THOUSANDS_SEPARATOR
for locale-aware conversion between strings and numbers (!26)- .zenodo.json to have more control over Zenodo (!32)
zospy.functions.lde.find_surface_by_comment
andzospy.functions.nce.find_object_by_comment
to find LDE surfaces / NCE objects based on their comments (#18)
- Bug when setting the MTF type though the ZOS-API for OpticStudio < 21.2; added
zospy.analyses.mtf._correct_fft_through_focus_mtftype_api_bug
(!21) - Incorrect implementation of
zospy.zpcore.ZOS.get_system
(!30) - Incorrect examples in the docstrings of
zospy.functions.lde.surface_change_type
andzospy.functions.nce.object_change_type
(!31)
- Converted some examples into Jupyter notebooks
- Renamed
_config.DECIMAL
to_config.DECIMAL_POINT
(!26) - Use
.zmx
files instead of.zos
files for unit test reference system files (!23) - Updated compatibility information in README.md (!29)
- Empty method
zospy.zpcore.ZOS.licence_check
(!30)