样条曲面的Location如果是无限接近0,说明此面Location原点在世界坐标系0,0,0。法相还是有的。
注意:区分面的矩阵和模型的矩阵
1、拟合面的矩阵通过拟合的面获取
2、模型矩阵通过样条曲面获取(包模型文件中的矩阵信息和OCC变换的矩阵信息)
我可以设置拟合面的获取的轴线中原点是0,0,0,然后再经过样条曲面投影 轴线的方法获取长度和面底部圆心。
以下是获取长度、起点、终点坐标的算法。
//计算TopoDS_Face投影在轴线上的最大高度(针对面没有Location情况),同时投影算出起点和终点
Standard_Real dmuCADPicker::GetMaxLengthInDirection(const TopoDS_Face& face, const gp_Ax1& thegp_Ax1, gp_Pnt& point1, gp_Pnt& point2)
{
gp_Vec direction(thegp_Ax1.Direction());
// 获取轴的起点
gp_Pnt O(thegp_Ax1.Location());
// 初始化最小和最大投影距离
Standard_Real minProj = Precision::Infinite();
Standard_Real maxProj = -Precision::Infinite();
// 初始化对应的点
gp_Pnt minPoint, maxPoint;
// 遍历面上的边
TopExp_Explorer exp(face, TopAbs_EDGE);
for (; exp.More(); exp.Next()) {
To