Recently active topics
I’m working on running multiple POP simulations and they each take about 30 minutes. I’m debating trying out the python package “threading” to try and run multiple runs at the same time in order to save some computing time. Are there going to be any limitations on the Zemax side of this equation?
I have a system where the PSF is constructed from several different configurations (>2) simultaneously. I see that the Huygens PSF and MTF can do a coherent sum from different configurations (which is awesome). However in my case I expect them to be mostly incoherent to one another. Is there a way to directly generate incoherent sum PSF and MTF results?
Hi everyone,For some time now I've been noticing an arbitrary deterioration in window regeneration performance in the OS.The system I use is a Dell Precision 7820 workstation with Intel Xeon 32 cores and 96 GB of RAM, Nvidia Quadro P2200 video card. In the beginning I could afford to set the window update to "All Windows", but now, any model I open and create new ones, the regeneration and calculation preparation performance degrades considerably.However, the RAM and CPU used remain quite low.I tried reinstalling OS but nothing changes.Is there a temporary area that may have filled up affecting OS performance?Does anyone have solutions on this?Thank you all.
We recently released ZOSPy 1.0.0, our open source library for easy communication between Python and OpticStudio. It uses the ZOS-API, but takes care of most of the programming, such as establishing the communication with OpticStudio and running and parsing analyses.The main new features included in this version are:Support for Python.NET 3.0 A uniform and pythonic interface to analyses:from zp.analyses.mtf import fft_through_focus_mtf mtf = fft_through_focus_mtf(oss, sampling='64x64', deltafocus=0.1) Autocomplete for the complete ZOS-APIAnd much more, see the release notes Check out the new version on GitHub.
I was helping a colleague with ZPL the other day. He wanted to know how to set a field as a variable and then constrain it. Additionally, he wanted to do this through a ZPL.The first part is easy enough. My approach was to expose the field as a variable through the multi-configuration editor using “YFIE”, declaring the solve as “Variable” and then constraining it in the merit function editor with “MCOL”, “MCOG”, or “MCOV”.For the ZPL portion, I wrote a small script for him demonstrating how to assign a variable in the MCE with ZPL.CLOSEWINDOW ! INSERTMCO, 1 # insert a row into the mce.SETMCOPERAND 1, 0, "YFIE", 0 # changes the operand to "YFIE"SETMCOPERAND 1, 0, 1, 1 # assigns YFIE to field no. 1 SETMCOPERAND 1, 1, 15, 0 # changes the value of row 1 config 1 to 15SETMCOPERAND 1, 1, 1, 3 # changes the solve type to "V"BEEP This made me think that it would be useful if there were a way to record GUI interactions as lines in a ZPL. For example, I could turn on the propose
Hello,I am having some difficulty finding answers on this elsewhere online and have not found any helpful forum posts on this either so here I am. I am trying to communicate with the POP with the python ZOSAPI with the program in interactive mode. Currently I have tried this little code snippit to set the surface desired to 2 and pull the irradiance with not much luck. Python more or less yells at me with an error saying “IAS_ object has no attribute ‘EndSurface’ I am not having the best of luck finding a solution to this problem in the help document. Please Help! :)FYI: See code snippit below # initialize analysis toolsTheAnalyses = TheSystem.AnalysesPOP = TheAnalyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM.PhysicalOpticsPropagation)POP_set = POP.GetSettings()POP_set.DataType = ZOSAPI.Analysis.PhysicalOptics.POPDataTypes.IrradiancePOP_set.EndSurface.SetSurfaceNumber(2)POP.ApplyAndWaitForCompletion()POP_result = POP.GetResults()Irr = float(POP_result.DataGrids(1).Values) Cheers,Armand
In the system represented in the attached figure, the second lens has a significant ammount of volume which is never transversed by any ray. An improved design would make the second lens shorter, by a vertical cut that would remove the two circled regions in the figure.How can I implement such structure by tuning the lens parameters?I´ve tried playing with the diameter and mechanical diameter, without a result. Kind regards,
Hi everyone,OS use in a corporate context with proxy authenticated via user and password. I would like to use Optics Launcher to open my projects, but it returns the message "...No internet connection..." (I attach a screenshot). I can have my IT manager open some addresses, but we don't know which addresses or permissions to give to the application.You can help us?Thank you all.
Hello! A feature request -- could you please complete the ZPL API for geometric image analysis? It would be handy to be able to modify parameters available in the GUI that aren’t included in the API yet like the “use polarization” check box & the reference dropdown menu. Thanks!Liz
Hey, I’m very naïve to Zemax and ZOS-API. I just tried to find the setting and run the code, but I couldn’t see the results from the image simulation.I used the standalone application and here is my code. # load local variables ZOSAPI = zos.ZOSAPI TheApplication = zos.TheApplication TheSystem = zos.TheSystem # Insert Code Here file = "C:/2021/Zemax_Image_Simulation/test.zmx" cfg = "C:/2021/Zemax_Image_Simulation/test.CFG" TheSystem.LoadFile(file, False) TheImageSimulation = TheSystem.Analyses.New_ImageSimulation() analysisSettings = TheImageSimulation.GetSettings() analysisSettings.ModifySettings(cfg, 'ISM_INPUTFILE', "Text_100p_3x3_2_g1196x1279_dist.png") analysisSettings.ModifySettings(cfg, 'ISM_FIELDHEIGHT', '15') analysisSettings.ModifySettings(cfg, 'ISM_FLIPIMAGE', '3') analysisSettings.ModifySettings(cfg, 'ISM_OUTPUTFILE', 'Test1.png') analysisSettings.LoadFrom(cfg) a = TheImageSimulation.ApplyAndWaitForCompletion()
Hi everyone, I have a question for you.I want to design an off-axis three-mirror imaging system (in sequential mode) but I don't understand how to control the five distances pictured in the image below.I'm looking for a way to avoid light obscuration and prevent surface interference when optimizing.Until now, I tried to control the distances using the global vertex coordinates MFE operands without success. Any suggestion would be really appreciated.Thank you.
Hi,I’m trying to investigate the effect of different parameters on fiber coupling (receiving fiber only), such as focal length of the injection lens, wavefront aberrations, fiber NA, etc…The system is a 19mm parallel beam, a paraxial lens, and a single mode fiber at the focal plane.It seems that the wavelength value has no effect on the fiber coupling efficiency (FICL operand). This seems not physical to me…Any idea?Thanks
Hello everyoneWhen I input horizontally polarized light (in the x-direction) into a 1/4-wave plate oriented at a 135-degree angle relative to the x-axis, it should generate clockwise circularly polarized light. Subsequently, after reflecting this light using a mirror, it should become counterclockwise circularly polarized. When this reflected light encounters a 1/4-wave plate, theoretically, it should result in vertically polarized light (in the y-direction). However, what I observed in the polarization pupil map is horizontally polarized light in the x-direction. Have I overlooked something, or have I misunderstood a certain definition?Thanksshun
Hi all,In oder to calculate coupling efficiencies for a single mode fiber (Anlysis>Fiber Coupling>Single Mode Coupling) in the sequential mode, required specifications for fibers are numerical apertures and relative positions/angles to light sources. To my knowledge, a calculation of the fiber coupling requires a core radius and/or mode field diameter (MFD) as well as numerical apertures. I was wondering if we could get the coupling efficiency even without knowing the core radius or MFD values of single mode fibers in OpticStudio. Please correct me if I’m wrong.Your help would be highly appreciated.Thanks.
I’m facing a weird problem while exporting .igs files from both sequential and non-sequential designs.When importing into Solidworks 2017 all doublets have one of the two components transformed into a full sphere.Moreover, an empty part is imported togheter with the design assembly.I don’t know if its a matter of lack of compatibility with old Solidworks version, or just me having the sw configured in a bad way.
This post provides a potentially working method for reversing an off-axial sysetm such like a HUD. It may not work with all systems, but have been proved to be useful for some systems.Turn off RA. Clear all fields. This is becuase RA will throw erorrs during the following tweaking. And the field data is unlikely to be unchnaged so let's just remove it and re-add them later. If the number of mirrors is odd, add one more mirror after object, using the Add Mirror Tool. Add a dummy surface after object and before image. Select all surface and reverse. After reversing it, multiply all decenter/tilt by -1 and set Order flag to opposite. Remember to adjust image and object distance. and turn on the RA again. You can remove the dummy mirror if you add it at step 2.In the attached video, we showed an example of using this process with the following example in the KBA. Note in the video, I forgot to do the final step to turn on the Ray Aiming.https://support.zemax.com/hc/en-us/articles/150000557
Hi everyone,I am in the process of designing a continuous zoom system with magnifications ranging from 3x to 5x. However, I have encountered some challenges in meeting the desired specifications.Here are the basic requirements for the system:Working Distance: 500mm Field of View (FOV): 80 - 100 mm Total Optical Tube Length Requirement (TOTR): 50-60 mm (for the lens system) Objective Diameter: 18 mm Eyepiece Diameter: 12 mmI have initiated the design, but I'm facing issues such as achieving the required FOV and encountering image blurring.I have attached my initial design for your reference.I would greatly appreciate any guidance, suggestions, or insights on how to proceed with this design. Your expertise and advice will be invaluable in helping me overcome these challenges and achieve the desired performance for the continuous zoom system. Thanks.
I am writing a program where I need to make several changes to values in the Lens Data Editor (e.g. parameters of a coordinate break surface) and evaluate merit function operands after each set of changes. The problem is this is extremely slow, to the point that setting the parameters dominates runtime far beyond the time spent raytracing. For example, this function averages about 1 second per call:def set_offset(oss, surface_number, x, y, about_x, about_y): oss.LDE.GetSurfaceAt(surface_number).SurfaceData.Decenter_X = x oss.LDE.GetSurfaceAt(surface_number).SurfaceData.Decenter_Y = y oss.LDE.GetSurfaceAt(surface_number).SurfaceData.TiltAbout_X = about_x oss.LDE.GetSurfaceAt(surface_number).SurfaceData.TiltAbout_Y = about_y I’m sure there are some minor optimizations I can make, but at its core, setting a single variable in memory shouldn’t take anywhere near 0.25 seconds.Am I doing something wildly wrong, or is there a far more efficient way to modify LDE entries? Is ther
Hi,I’m looking for “us_gskew.dll” shown to be used in “Using skew rays to model Gaussian beam propagation in OpticStudio” webinar.I download the attached zip files which contained *.c file. I wonder where can I find the complied file. is there a reasone why I couldn’t used an allready complied filed? (and instead have to complie it myself)Thank you,Amir
Is there a way to import an image into OpticStudio and have that incorporated into the light path? For example, I’d like to import an PNG file (Example: a white background with a black rectangular outline) and have light passing through it and observe the wavefront distortions that result. How can I do this?
OpticStudio supports Q-type aspheres. Type 0 indicates Qbfs polynomials, and Type 1 indicates Qcon polynomials. The functional forms of the Q-type polynomials are fairly complex due to the requirement that the polynomials be orthonormal for a circular aperture. Occasionally, it is convenient to know the functional form of the polynomials for testing and comparison purposes. Below, we list the first 10 Qbfs polynomials, and also share how to calculate them in the Mathematica file GenerateQbfsPolynomials.nb. The .nb files for Mathematica can be used by downloading the free Wolfram Player: https://www.wolfram.com/player/.Important equations for the Q-bfs polynomialsThe equations used below come from Shape specification for axially symmetric optical surfaces, G.W. Forbes, Optics Express 5218, Vol. 15, No. 8, 16 Apr 2007. Forbes watned to find a function whose slopes are orthogonal. So the slope equations must obey:where u is the radial coordinate in the aperture of an optical surface
Hi all, For Jones Matrix in Zemax, according to the definition, I think it is only designed for normal incidence. However, what if I want to model the oblique incidence onto the half-wave plate (HWP) which I use Jones Matrix in Zemax non-sequential mode? I tried it and found the energy is not conserved. Does that mean we have to design some new HWP by ourself or is there any other avaiable surface can be modeled as HWP for oblique incidence in Zemax? Kaden
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.