opencascade 线形成曲面 平移变换 opencascade 绘制样条曲线 gp_Ax1 opencascade 等数离散 等弦高离散

opencascade 线形成曲面

 TopoDS_Wire topoWire = TopoDS.::Wire(wire.Shape);
                BRepBuilderAPI_MakeFace makeFacee(topoWire);
                TopoDS_Face face = makeFace.Face();

平移 BRepBuilderAPI_Transform

gp_Vec vec =(.X , .Y ,Z);
trsf.SetTranslation(vec);
 BRepBuilderAPI_Transform transform (trsf);
transform.Perform(Shape);
 transform.Shape()

旋转

gp_Trsf trsf ;
gp_Dir dir;//方向
gp_Pnt pnt ;//点
 gp_Ax1 ax1 ;
  trsf.SetRotation(ax1, degree);
BRepBuilderAPI_Transform transform (trsf);
 transform.Perform(Shape);
  transform.Shape()

镜像

  gp_Trsf trsf ;
 gp_Dir dir(X ,Y ,.Z);
 gp_Pnt pnt;
gp_Ax2 ax2(pnt, dir);
trsf.SetMirror(ax2);
BRepBuilderAPI_Transform transform (trsf);
 transform.Perform(Shape);
  transform.Shape()

opencascade 绘制样条曲线

            TColgp_Array1OfPnt array3 ;
                for (int i = 1; i < pts.Size() + 1; i++)
                {
                    array3.SetValue(i, pts[i].);
                }

                //绘制样条曲线
                GeomAPI_PointsToBSpline spline(array3);
                Geom_BSplineCurve splineCurve = spline.Curve();
                BRepBuilderAPI_MakeEdge brepEdge(splineCurve);

gp_Ax1描述了三维空间中的一个轴。

1: gp_Ax1的作用

描述三维几何体(如:旋转体的轴)
描述几何变换(如:对称轴、旋转轴)

2:gp_Ax1的定义

位置
方向
class gp_Ax1
{
public:

private:
gp_Pnt loc;
gp_Dir vdir;
};

3默认情况下,位置为原点,方向为Z轴正向。

4垂直

两个轴是否垂直的判断:轴的方向垂直(夹角为90度)。
inline Standard_Boolean gp_Ax1::IsNormal(const gp_Ax1& Other,const Standard_Real AngularTolerance) const
{
return vdir.IsNormal(Other.vdir, AngularTolerance);
}

inline Standard_Boolean gp_Dir::IsNormal(const gp_Dir& Other,const Standard_Real AngularTolerance) const
{
Standard_Real Ang = M_PI / 2.0 - Angle (Other);
if (Ang < 0) Ang = - Ang;
return Ang <= AngularTolerance;
}

//! 描述三维空间中的轴。
//! 轴的定义如下:
//! - 其原点(也称为“位置点”),以及
//! - 其单位向量(称为“方向”或“主方向”)。
//! 使用轴:
//! - 描述三维几何实体(例如
//! 旋转实体的轴)。它有相同的目的
//! 作为STEP功能“轴放置一轴”,或
//! - 定义几何变换(轴
//! 对称性、旋转轴等)。
//! 例如,此实体可用于定位几何实体
//! 或定义对称轴。
gp_Ax1类

//! 描述三维空间中的右手坐标系。
//! 坐标系定义如下:
//! - 其原点(也称为“位置点”),以及
//! - 三个正交单位向量,分别称为
//! “X方向”、“Y方向”和“方向”(也
//! 称为“主方向”)。
//! 坐标系的“方向”称为
//! “主方向”,因为每当该单位向量
//! 修改后,“X方向”和“Y方向”为
//! 重新计算。然而,当我们修改“X”
//! 方向”或“Y方向”、“方向”不会被修改。
//! “主方向”也是“Z方向”。
//! 由于Ax2坐标系是右旋的
//! “主方向”始终等于
//! 其“X方向”和“Y方向”。(定义
//! 左手坐标系,使用gp_Ax3。)
//! 使用坐标系:
//! - 描述几何实体,尤其是位置
//! 他们几何图形的局部坐标系
//! 实体的作用与STEP功能相同
//! “轴放置两个轴”,或
//! - 以定义几何变换。
//! 注:我们指的是“X轴”、“Y轴”和“Z轴”,
//! 关于具有:
//! - 坐标系的原点作为其原点,以及
//! - 单位向量“X方向”、“Y方向”和“main
//! 方向”分别作为其单位向量。
//! “Z轴”也是“主轴”。

opencascade 等距离散GCPnts_UniformAbscissa

GCPnts_UniformAbscissa uniAbs; vector<double> us;
				uniAbs.Initialize(curve, length, tolerance);
				if (!uniAbs.IsDone())return us;
				for (int i = 1; i <= uniAbs.NbPoints(); ++i){us.push_back(uniAbs.Parameter(i));	}
				return us;

opencascade 等数离散 GCPnts_UniformAbscissa

	GCPnts_UniformAbscissa uniAbs; vector<double> us;
			uniAbs.Initialize(curve, count, tolerance);
				if (!uniAbs.IsDone())return us;
				for (int i = 1; i <= uniAbs.NbPoints(); ++i) { us.push_back(uniAbs.Parameter(i)); }
				return us;

opencascade 等弦高离散 GCPnts_UniformDeflection

	GCPnts_UniformDeflection uniAbs; vector<Pnt> pnts;
				uniAbs.Initialize(curve, height, tolerance);
				if (!uniAbs.IsDone())return pnts;
				for (int i = 1; i <= uniAbs.NbPoints(); ++i) 
				{
					auto pnt = uniAbs.Value(i);
					pnts.push_back(Pnt(pnt.X(), pnt.Y(), pnt.Z()));
				}

ChFi2d_ChamferAPI
Init():初始化
Perform():执行计算。
Result():得到计算结果。

示例

				ChFi2d_ChamferAPI chFi2dChamfer;
				chFi2dChamfer.Init(_wire1);
				TopoDS_Edge _newedge1, _newedge2, _newedge3;
				auto isok = chFi2dChamfer.Perform();
				_newedge1 = chFi2dChamfer.Result(_newedge2, _newedge3, fValue, sValue);

其他

CommonVertex:查找两个edge的起始点是否有公共点
FindConnectedEdges:

2d圆角
ChFi2d_Builder:用于同一平面下的直线和圆edge。
ChFi2d_FilletAPI :包含ChFi2d_AnaFilletAlgo 和ChFi2d_FilletAlgo。
ChFi2d_AnaFilletAlgo - 圆角的分析构造函数,它仅适用于线性和圆形边缘,
ChFi2d_FilletAlgo 适用于任何类型边缘的圆角边缘,包括椭圆和 B 样条曲线。
ChFi2d_ChamferAPI 在平面的两条直线性边之间
ChFi2d_AnaFilletAlgo和ChFi2d_FilletAlgo直接使用
ChFi2d_FilletAPI

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值