- 背景
虽然CAA开放的接口已经非常丰富,但是某些原生功能命令我们依然不能在CAA库中找到相关API,有时候我们对这些命令还有添加到CAA开发插件中的需求。
- 实现方法
如果是一些简单的无窗口操作(比如在v5中实现居中操作、v6中实现在浏览模式下打开带上下文的模型等),其实我们可以通过CAA提供的CATAfrStartCommand来实现。首先我们来看一下官方百科全书里对其的解释:
这里通过调用这个全局的方法,传入需要调用命令的ID,然后传出具体的command的指针,再调用其Active的方法就可以实现调取对应命令的需求,同时通过返回值S_OK或者E_FAIL来判断是否查找成功。示例代码如下:
这里我们使用了CATCSO对需要操作的对象进行了预选择的操作,方便接下来的命令接收到我们需要操作的对象(CATCSO支持多选)。如果在v6里调用的命令要求进行传参,我们可以通过GetArgs方法得到CATAfrCommandHeaderArgs进行传参。以下是简单的两个调用原生命令的演示:
带上下文的打开操作(Id:ENOVIA_Open_Simple)
插入带图框的二维原理图sheet(Id:CATSchCreateFrameAndTitleblockCmdHdr)
- 查找命令ID方法
通过使用“工作间呈示/UI活动对象的结构呈示”功能,我们可以将对应workbench或者workshop下的命令详细信息打印到txt文本中,打开后我们可以看到如下内容:
其中的Id就是我们需要的启动ID。这个功能通常情况是隐藏状态,我们需要在自定义中找到对应的命令,如下图所示:
- 总结
通过今天讲述的方法,我们可以通过调用一些基础的原生命令来实现插件最后末处理环节的一些操作,这里需要注意,某些命令执行时会强制注销当前执行的Cmd,所以要确认当前插件功能没有需要继续处理的工作再去执行一些中断性操作。
评论