Skip to main content

Hi,



 



I have a system consisting of 50 identical elements. I would now like to make elements 2-49 picj-up tilts, displacements and surface errors based on element 1. Any way I can do this without going in and setting each surface individually? 50 elements x 6 parametars = 300 entries.



I realize i could start again and paste surfaces - just wondering if there was a way to command the pick-up state without rebuilding the entire assembly.

Hi Dave,



So you have the one element and you are multipassing it 50 times yes? See How to tolerance for tilts and decenters of a double pass system for details on how to do this.



If you want to tolerance surface form error, decide first if you'll use TIRR or TEZI. If you are using TIRR, make the surfaces Irregular surfaces and put pickups on the irregularity of the second pass to lock them to the first. If TEZI, make the surfaces Zernikes, and then put the pickups on the second pass.



I'd suggest you set up a single double-pass system as described, and test it. Then write a macro to create the subsequent 24 double passes. Test it to make sure that the errors accumulate correctly: try building some monte-carlo files to be sure it's working right.



- Mark 


Hi David,



Whenever there's a task that is simple, and needs to be repeated, I think about ZPL Macros. ZPL Macros are usually good at automating simple adjustment to the system.



Here is an example if you'd like to apply a Pick-Up Solve to all Coordinate Breaks within a range:





# This example is to replicate pick-up solve on Tilt About X in coordinate break

# Reference surface number

reference_surface = 1

# Pick-up parameters

scale_factor = 1

offset = 0

column = 0 # Current column

# Range for pick-ups replication

start_surface = 2

end_surface = 10

# Loop over the range

FOR surface, start_surface, end_surface, 1

    # Test if surface is coordinate break

    dummy = SPRO(surface, 0)

    surface_type$ = $BUFFER()

    

    IF(surface_type$ $== 'COORDBRK')

        # Apply pick-up to coordinate breaks only

        SOLVETYPE surface, PP_3, reference_surface, scale_factor, offset, column

    ENDIF

NEXT

# Update editors

UPDATE EDITORS


Try using it on the dummy file I attach to this post. To install the ZPL Macro, copy the file MultiplePickups.ZPL to your \Documents\Zemax\Macros folder. Only Coordinate Break 1 has a Tilt About X of 5 degrees. The macro will identify coordinate breaks between surface 2-10, and apply a pick-up solve to surface 1 on each of them.



Look up the SOLVETYPE keyword in the Help File, the code PP_3 stands for Parameter 3 (Tilt About 😵.



Would anything like that work for you?



Take care,



David



 


We get this question quite often on support, and there is a keyboard shortcut to copy/paste pickups.



CTRL+ALT+C 



CTRL+ALT+V



I made a little video demo.


Reply