48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
|
#pragma once
|
|||
|
#include "TopoDS_Face.hxx"
|
|||
|
#include "TopoDS_Shape.hxx"
|
|||
|
#include <map>
|
|||
|
#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<TopoDS_Shell>& shellSet);
|
|||
|
//执行剪切算法
|
|||
|
void TrimSurfaceTranslateInsec(vector<TopoDS_Shell>& shellSet);
|
|||
|
//从原面中提取实际相交所用到的面片
|
|||
|
TopoDS_Shape CheckSectionShape(TopoDS_Shape s1, TopoDS_Shape s2);
|
|||
|
//执行剪切算法,通过isLeft保留结果,用于拆分面
|
|||
|
void TrimSurfaceTranslateInsec(TopoDS_Shape TopoSrf,TopoDS_Shape TopoTemp, vector<TopoDS_Shell>& shellSet , bool isLeft);
|
|||
|
|
|||
|
private:
|
|||
|
//原面
|
|||
|
TopoDS_Shape shell1;
|
|||
|
//剪子面
|
|||
|
TopoDS_Shape shell2;
|
|||
|
//返回结果
|
|||
|
TopoDS_Shape result;
|
|||
|
//是否完成
|
|||
|
bool isDone;
|
|||
|
//剪切点
|
|||
|
gp_Pnt cutPoint;
|
|||
|
};
|
|||
|
|