public AIS_Shape BooleanCut(string modelA, string modelB)
{
TopoDS_Shape shapeA = shapeList[modelA].Shape();
TopoDS_Shape shapeB = shapeList[modelB].Shape();
TopTools_ListOfShape shapeArgs = new TopTools_ListOfShape();
shapeArgs.Append(shapeA);
TopTools_ListOfShape shapeTools = new TopTools_ListOfShape();
shapeTools.Append(shapeB);
BRepAlgoAPI_Cut bRepAlgoAPI_Cut = new BRepAlgoAPI_Cut();
bRepAlgoAPI_Cut.SetArguments(shapeArgs);
bRepAlgoAPI_Cut.SetTools(shapeTools);
bRepAlgoAPI_Cut.Build();
TopoDS_Shape outShape = bRepAlgoAPI_Cut.Shape();
AIS_Shape aShape = new AIS_Shape(outShape);
return aShape;
}
shapeList 存放的是所有 AIS_Shape
所以要转换为 TopoDS_Shape进行布尔操作,然后结果转为 AIS_Shape 添加到场景中
TopTools_ListOfShape 可以存放多个,所以布尔操作不局限于 单个模型,而是可以一次多个模型进行布尔。
布尔 Fuse Common 操作是一样的。