常见问题#

如何断开与 OpticStudio 的连接?#

您可以使用zos.disconnect断开与 OpticStudio 的连接:

import zospy as zp

zos = zp.ZOS()
oss = zos.connect("extension")

# Do work ...

# Disconnect
zos.disconnect()

如果您以扩展模式连接,这将关闭连接,但保持OpticStudio处于打开状态。如果您以独立模式连接,这将停止独立的OpticStudio实例。在脚本结束时,无需断开连接;当Python终止时会自动处理。

如何重新连接到 OpticStudio?#

注意

以下信息仅适用于v2.0.0之前的ZOSPy版本。请参阅如果您使用的是 ZOSPy v2.0.0 或更高版本。:::

您可以通过先断开连接,然后创建与OpticStudio的新连接来执行此操作。请注意,无需创建新的ZOS实例。这样做会引发错误,因为只允许一个ZOS实例

例如,下面这个方法是行不通的:

import zospy as zp

zos = zp.ZOS()
oss = zos.connect("extension")

# Do work ...

# Disconnect
zos.disconnect()

# Try to create a second connection to the ZOS-API
zos = zp.ZOS()  # ValueError: Cannot have more than one active ZOS instance

oss = zos.connect("extension")

但这确实有效:

import zospy as zp

zos = zp.ZOS()
oss = zos.connect("extension")

# Do work ...

# Disconnect
zos.disconnect()

# Create a new connection
oss = zos.connect("extension")

(常见问题/single-zos-instance)= {#single-zos-instance}

为什么我会收到ValueError: Cannot have more than one active ZOS instance

注意

以下信息仅适用于 v2.0.0 之前的ZOSPy版本。如果您使用的是ZOSPy v2.0.0 或更高版本,请参阅ZOS管理与ZOS-API的连接。:::

如果之前已创建另一个实例,则在创建新的ZOS实例时将引发此错误。ZOS-API仅支持每个进程一个连接,这反映在ZOSPy中,仅允许ZOS类的一个实例。

ZOS类管理ZOS-API连接。关闭与OpticStudio的连接不会关闭与ZOS-API的连接。因此,您只需要此类的一个实例。例如,如果您尝试重新连接到 OpticStudio ,则可以重复使用此实例。

为什么OpticStudio示例代码不会引发此错误?OpticStudioo示例代码表明可以创建第二个ZOS-API连接,但事实并非如此。如果您尝试创建第二个连接, ZOSAPI_NetHelper将不会创建第二个连接,而是默默返回对现有连接的引用。这可能会导致错误(例如,因为您假设您创建了与空OpticStudio实例的第二个连接),这就是我们选择引发错误而不是默默返回现有ZOS实例的原因。 :::