#pragma once #include "TopoDS_Face.hxx" #include "TopoDS_Shape.hxx" #include #include "TopoDS_Edge.hxx" #include "BaseAlgo.h" class CutSurfaceAlgo : public BaseAlgo { public: CutSurfaceAlgo(void); CutSurfaceAlgo(TopoDS_Shape s1, TopoDS_Shape s2); //~CutSurfaceAlgo(void); public: //判断是否完成 bool IsDone(); //执行剪切算法,调用TrimSurfaceTranslateInsec,通过剪切点保留计算结果 void Perform(); //返回结果 TopoDS_Shape GetResult(); //设置剪切点 void SetCutPoint(gp_Pnt p); //执行剪切算法 void TrimSurfaceTranslateInsec(TopoDS_Shape TopoSrf,TopoDS_Shape TopoTemp, vector& shellSet); //执行剪切算法 void TrimSurfaceTranslateInsec(vector& shellSet); //从原面中提取实际相交所用到的面片 TopoDS_Shape CheckSectionShape(TopoDS_Shape s1, TopoDS_Shape s2); //执行剪切算法,通过isLeft保留结果,用于拆分面 void TrimSurfaceTranslateInsec(TopoDS_Shape TopoSrf,TopoDS_Shape TopoTemp, vector& shellSet , bool isLeft); private: //原面 TopoDS_Shape shell1; //剪子面 TopoDS_Shape shell2; //返回结果 TopoDS_Shape result; //是否完成 bool isDone; //剪切点 gp_Pnt cutPoint; };