OPEN CASCADE新手求助:如何从AIS_InteractiveObject获取TopoDS_Shape?
从AIS_InteractiveObject获取TopoDS_Shape的方法
AIS_InteractiveObject是抽象基类,本身没有直接获取TopoDS_Shape的方法——毕竟不是所有交互对象都对应几何形状。实际用于显示形状的交互对象几乎都是它的子类AIS_Shape,可以通过以下步骤获取目标形状:
- 先判断目标AIS_InteractiveObject是否属于AIS_Shape类型
- 通过向下转型将其转换为AIS_Shape对象
- 调用AIS_Shape的
Shape()方法获取对应的TopoDS_Shape
示例代码:
// 假设已有AIS_InteractiveObject对象 Handle(AIS_InteractiveObject) anInteractiveObj = ...; if (anInteractiveObj->IsKind(STANDARD_TYPE(AIS_Shape))) { Handle(AIS_Shape) shapeInteractiveObj = Handle(AIS_Shape)::DownCast(anInteractiveObj); TopoDS_Shape targetShape = shapeInteractiveObj->Shape(); // 后续可使用targetShape进行操作 }
如果是你自定义的AIS_InteractiveObject子类,需要自行在子类中添加获取TopoDS_Shape的接口,OC基类不会为非通用场景提供默认方法。
内容的提问来源于stack exchange,提问作者Dilruk
相关产品推荐
相关产品推荐

