通过Automation的方式进行人机交互,并不是非常方便,主要是API不是很多,而且返回的对象都是Com对象类型,无法直接直接获得对象的真正的类型,如直线、曲线等。另外,似乎通过Com的方式,也无法将交互做成CAD中拖拽(Jig)的效果,这给实时交互带来了不便。
选择集Selection
//获取当前选择集Selection entSelection = oPartDoc.Selection;
作为一个集合对象,可以通过Add()方法向其中添加元素,但不可以用Remove()方法删除其中的元素。可以通过Count2属性(不是Count)查询选择集的大小。如果想获取选择集中的元素,可以用Item2(),通过序列号来遍历选择集中的元素(是Item2,不是Item),也可以通过GetItem()函数,通过元素的名称来实现。如下:
//返回选择的对象,赋值给cur.要返回referenceentObject = (HybridShape)entSelection.Item2(1).Reference;
可以通过选择集的FilterCorrespondence属性(布尔型)来判断选择集中是否包含特定类型的元素,并通过SelectElement2方法来获得对象。
可以对选择集Selection进行包括复制、剪切、删除(指删除选择集中的对象)、粘贴、选择性粘贴和搜索命令。
//将选择集中复制到粘贴板(CATIA.ActiveDocument as PartDocument).Selection.Copy();
//将选择集中剪切到粘贴板(CATIA.ActiveDocument as PartDocument).Selection.Cut();
//将选择集中元素粘贴到文档中(CATIA.ActiveDocument as PartDocument).Selection.Paste();
//删除选择集中的对象,用Remove2()