本帖最后由 d1742647821 于 2025-8-20 14:18 编辑
虽然不建议使用command,但是某些情况,比如你的用户要使用某 T正 软件时,不得不使用command来进行一些操作。
现象
首先这是一段为了测试而写的代码,它的内容是随便画一个对象,然后调用cad的command将它删除

可以尝试一下,这段代码跑到中间的时候,会弹出“调用的目标发生了异常”的错误,然后cad的选择集就无法使用了。 原因是cad的选择集不能超过128个,但是可以看到我的代码里加了dispose也释放了变量,但是仍然不行,c#也没有提供释放选择集的api。 我尝试使用com接口获取文档中的选择集,发现数量居然是0。 此问题只会在使用 SelectionSet.FromObjectIds 函数时才会出现,使用editor.GetSelection拿到的选择集不会出现此问题。
并且只有使用editor.Command后才会出现,单纯的创建选择集无论创建多少个也不会出现错误,可能是非拖管对象发送到c++端使用后没有释放,这很可能是cad的一个bug。
解决方法暂无解决办法,只能不用选择集,采用替代写法。 ed.Command的时候不传选择集,将id一个一个传进去也是一样的 这样要先构建一个commandList,添加完参数之后ToArray转为数组再传到editor.Command的参数里 麻烦了那么一点点,效果是一样的。
完 |