最终目的是移动OPM元素。
先将OPM元素用MS方法,获得一个cellheader元素,然后ApplyTransform,ReplaceInModel。此方法(有别的办法移动么?最好是直接移动OPM元素,现在是没办法才转换成MS元素操作)可以移动除operator外的OPM元素。opmComponent.ApplyTransform(transInfo);opmComponent.ReplaceInModel(opmComponent);
同样方法试图移动operator元素,执行到opmOperatorComponent.ReplaceInModel (opmOperatorComponent)时候会报错{"Bad StatusInt: 69645"}。
然后我尝试删除原来的operator,在正确的位置上重新放置。请问如何删除?VS搜索过delete和remove关键字,没找到删除元素的方法。试过ReplaceInModel(Null),也不生效。
如上图,VALVE和OPERATOR应该是通过VALVE_HAS_VALVE_OPERATING_DEVICE这个关系建立联系的,还有很多其它的关系,在OPM中移动一个构件时,OPM会有一系列的回调处理更新关联的关系,比如OPERATOR被移到外边去,它可以删除这个关联关系,PIPE被移动,相应的PORT的坐标也要跟着变,而移动VALVE时,一起移动关联的OPERATOR等等。
所以我觉得问题的原因在于没有触发这些回调处理,或者没有触发完全,导致模型数据进入了一个它无法处理的状态。
推荐您试试先将构件对应的元素添加到选择集,然后发送3个keyin:
move element
xy=x1,y1,z1
xy=x2,y2,z2
删除也可以。现在的operator并没有放在valve中心,如果可以删除原来operator, 直接在新的位置重新放置一个也可以。
如上,请尝试通过Send Keyin的方式移动。
C#不能删除元素么?Keyin是可以,但是这种方式应该是最后选择。
delete element
这种可以自己通过文档查找到答案的问题请先自己研究一下,谢谢。