#include "FITKOCCModelSketch2D.h" // OCC #include #include #include #include #include #include namespace OCC { FITKOCCModelSketch2D::FITKOCCModelSketch2D() :OCCShapeAgent(this) { _shapeAgent = _occShapeAgent; } bool FITKOCCModelSketch2D::update() { if (!_occShapeAgent) { return false; } // 初始化组合对象。 BRep_Builder builder; TopoDS_Compound compound; builder.MakeCompound(compound); // 合并所有子数据。 for (int i = 0; i < this->getDataCount(); i++) { Interface::FITKAbsGeoCommand* subModel = this->getDataByIndex(i); if (!subModel) { continue; } // 更新子数据。 //subModel->update(); // 获取形状代理器。 FITKAbstractOCCModel* occSubModel = dynamic_cast(subModel->getShapeAgent()); if (!occSubModel) { continue; } // 获取OCC形状。 TopoDS_Shape* subTopoShape = occSubModel->getShape(); if (!subTopoShape) { continue; } // 检查形状数据。 if (subTopoShape->IsNull()) { continue; } // 组合形状。 builder.Add(compound, *subTopoShape); } // 更新形状数据。 _occShapeAgent->updateShape(compound); return true; } }