嗨,各位。

我最近在研究OLP部分,非常喜欢使用Inspector .NET插件,但有个问题:对于weld和search这类vcPathStatements,Inspector在我点击时可以读取对应的handles。那么在Python中,或者具体在Python 2.7中如何实现这个功能呢?我尝试过vcSelectionmanager和vcHelpers.Selection,但它们似乎都无法返回具体内容——就像光学显微镜看不到分子一样,最多能通过Selection获取"细胞结构"(Statement),但点击时无法获取其中具体的"分子"(Positions对应的handles)。

难道唯一的解决方案是把"光学显微镜"Python换成"电子显微镜"C#吗?还是有其他方法可以尝试?
提前感谢任何回复!:innocent:

很遗憾,我认为在 Python 2 或 Python 3 中都无法获取“当前选中的路径语句框架”。

Python API 对选定对象的访问受限,因为选择管理器位于 .NET 端,且可能选中完全没有 Python 封装的对象(即仅存在于 .NET 端或未覆盖 API 的原生对象)。Python 3 API 中从选择管理器可见的对象范围稍好一些,但对这些框架对象仍无帮助。

路径语句框架对象(vcSchemaPositionFrame)通常也比较特殊,因为我认为它们没有持久化封装,仅在需要时创建。这对于避免多达数百万个位置的内存开销很重要。Python API 未将这些对象作为选定对象公开,可能与此有关。

不过,如果知道语句,可以通过 Python API 访问位置框架。

1 个赞

嗨,TSy。

谢谢你的回复,也感谢你喜欢这个插件,它是我最推荐的功能插件之一!:partying_face:

我知道如何通过Python API读取点数据甚至它们的内部属性,但我更好奇的是如何通过点击操作来获取这些点的控制手柄。不过听起来,目前通过点击选择目标来从Python API中获取`vcSchemaPositionFrame`类型的数据似乎还无法实现(至少现阶段是这样)。:joy:

但幸运的是,我在发帖时已经开始使用“电子显微镜”工具了。目前我用C#读取了相关数据,看起来它们的哈希值都是0,这正好印证了你提到的“仅在需要时创建”的特性。

虽然Python API目前还做不到这一点,但至少我明白了其中的原因,非常感谢你的回复!:partying_face: