Skip to main content

Hi, 



Something strange has happened. I had previously a code that worked and now it doesn't (I have updated ZEMAX since then). 



The code I am having issues with, is changing an angle to 'Ray Rotator' in Par 3 or Par 4 (column 3 or 4 from Material on the editor list), which in this case is the angle of the rotationZ and rotationY. The problem is that I am getting error message: 





Unable to use a value of type ZOSAPI.Editors.NCE.ObjectColumn as an index.



Error in GetAngle_Cond3_v2>writeTiltAboutY (line 142)


        NCEObj.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par4).DoubleValue = y;



Error in GetAngle_Cond3_v2>BeginApplication (line 70)


        writeTiltAboutY(o23, angleY);



Error in GetAngle_Cond3_v2 (line 14)


        r = BeginApplication(TheApplication, args);





 My code is: 



  o23 = TheNCE.GetObjectAt(14);


        % Set the Tilt Angle of Y


        writeTiltAboutY(o23, angleY);


    function writeTiltAboutY(NCEObj, y)


        NCEObj.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = y;


    end


I have no idea what that means.


Any ideas how to change the angle from matlab in the editor,



NCEObj.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = y?


doesn't seem to be working. I also tried



NCEObj.RotateY = y,


but its not doing what I want. Nothing seem to be happening.


I also tried 



o23.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).IntegerValue = angleY


The row values are correct according to the editor list.


Its a non-sequential analysis.



Looking further I can see that, 023 is empty [], even though i write:  



o23 = TheNCE.GetObjectAt(14);  


TheNCE is however containing something. 





TheNCE = 



  ZOSAPI_NCE with properties:



    AllObjectsTypeSource: [1×1 System.Collections.Generic.List>]


             EveryObject: [1×1 System.Collections.Generic.List]


              AllSources: [1×1 System.Collections.Generic.List]


            AllDetectors: [1×1 System.Collections.Generic.List]


              AllObjects: [1×1 System.Collections.Generic.List]


       RowToObjectOffset: 1


           ActiveSurface: 1


         NumberOfObjects: 1


             FirstColumn: Comment


              LastColumn: Par250


                    Type: NonSequentialComponents


               MinColumn: 1


               MaxColumn: 260


            NumberOfRows: 1


                  Editor: NCE


                  Parent: [1×1 ZemaxUI.ZOSAPI.ZemaxSystem]





Any ideas?



Thanks for any assistance!

Hi Susan,



This probably won't help you, but in a Python Interactive Extension with the latest update of OS, the following code works for me:





MyRayRotator = TheSystem.NCE.GetObjectAt(2)

MyRayRotator.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 5.3


I have a Ray Rotator in line 2 of my NCE, and its value gets updated to 5.3.



I don't own a MATLAB licence to test, but can you share more of your code for troubleshooting?



Take care,



David


Reply