嗨,各位。
我最近在研究OLP部分,非常喜欢使用Inspector .NET插件,但有个问题:对于weld和search这类vcPathStatements,Inspector在我点击时可以读取对应的handles。那么在Python中,或者具体在Python 2.7中如何实现这个功能呢?我尝试过vcSelectionmanager和vcHelpers.Selection,但它们似乎都无法返回具体内容——就像光学显微镜看不到分子一样,最多能通过Selection获取"细胞结构"(Statement),但点击时无法获取其中具体的"分子"(Positions对应的handles)。
难道唯一的解决方案是把"光学显微镜"Python换成"电子显微镜"C#吗?还是有其他方法可以尝试?
提前感谢任何回复!
很遗憾,我认为在 Python 2 或 Python 3 中都无法获取“当前选中的路径语句框架”。
Python API 对选定对象的访问受限,因为选择管理器位于 .NET 端,且可能选中完全没有 Python 封装的对象(即仅存在于 .NET 端或未覆盖 API 的原生对象)。Python 3 API 中从选择管理器可见的对象范围稍好一些,但对这些框架对象仍无帮助。
路径语句框架对象(vcSchemaPositionFrame)通常也比较特殊,因为我认为它们没有持久化封装,仅在需要时创建。这对于避免多达数百万个位置的内存开销很重要。Python API 未将这些对象作为选定对象公开,可能与此有关。
不过,如果知道语句,可以通过 Python API 访问位置框架。
1 个赞
嗨,TSy。
谢谢你的回复,也感谢你喜欢这个插件,它是我最推荐的功能插件之一!
我知道如何通过Python API读取点数据甚至它们的内部属性,但我更好奇的是如何通过点击操作来获取这些点的控制手柄。不过听起来,目前通过点击选择目标来从Python API中获取`vcSchemaPositionFrame`类型的数据似乎还无法实现(至少现阶段是这样)。
但幸运的是,我在发帖时已经开始使用“电子显微镜”工具了。目前我用C#读取了相关数据,看起来它们的哈希值都是0,这正好印证了你提到的“仅在需要时创建”的特性。
虽然Python API目前还做不到这一点,但至少我明白了其中的原因,非常感谢你的回复!