插件/扩展程序(Plug-In/Extension)

扩展程序(ZOS-API Extension)在概念上非常类似ZPL宏(ZPL Macro) - 扩展程序控制当前开启的OpticStudio实例,在其运行时阻止用户与UI进行交互,并且可以改变当前镜头系统的几乎所有内容。  初始设置以及与OpticStudio的连接与自定义操作数(User Operand)自定义分析(User Analysis)模式相同。

对于扩展程序,PrimarySystem(基于TheApplication)始终是OpticStudio中显示的镜头系统。  但是请注意,扩展程序操作者可以控制是否在用户界面中实时显示对PrimarySystem的更改:

// Make all changes (i.e. loading a new lens file) immediately

// display in the User interface

TheApplication.ShowChangesInUI = true;

// Do some work

// Do not show any changes in the User interface

TheApplication.ShowChangesInUI = false;

// Do some more work

在执行许多快速更改的任务时,这项设置可能非常重要,比如在评价函数编辑器中插入大量的行。  请注意,无论这项设置如何,在扩展程序完成时,UI将始终显示最终的系统。

通过API扩展程序,还有三个附加属性可以使用:

  • TheApplication.TerminateRequested:  当用户单击"取消"按钮时,将会是true。
  • TheApplication.ProgressMessage:  设置"扩展程序"对话框中显示的当前消息。
  • TheApplication.ProgressPercent:  设置"扩展程序"对话框中的当前进度(0-100)。

这两个属性都与OpticStudio中的"扩展程序"对话框直接相关:



如果您希望在不影响PrimarySystem的情况下处理系统,您可以创建一个新系统,并在新系统上执行所有操作:

// Create a new, temporary, non-sequential system

IOpticalSystem TempSystem = TheApplication.CreateNewSystem(SystemType.NonSequential);

// Add a new non-sequential object

INCERow newRow = TempSystem.NCE.AddObject();

// etc

扩展程序完成时,这个临时的系统将自动被清理。因此如果您需要继续保留您的工作,就必须明确地保存这个临时系统:

TempSystem.SaveAs(@"C:\Temp\MyNewSystem.zmx");

要连接到具有交互扩展程序(Interactive Extension)的OpticStudio,您需要在一个外部应用程序(如Matlab或Python)中运行ConnectAsExtension

您可以通过使用实例序号instance作为参数来连接到特定的实例,或者使用0连接到任何可用实例。

连接后,可以通过对话框手动终止连接,也可以在外部应用程序中运行CloseApplication

另外三个终止/进度属性与交互扩展程序无关。

详述

请注意,API目前不支持从单个客户端进程并发连接到多个OpticStudio实例。

这意味着Matlab不能连接到两个单独的OpticStudio实例。

下一部分: