opencascade
FDMask
这个作者很懒,什么都没留下…
展开
-
opencascade实现一些刀具路径规划方法
学习opencascade,通过输入零件的内、外边界轮廓环(红色标出),实现一些常见刀具加工路径算法(绿色标出)。原创 2022-06-12 12:03:46 · 1447 阅读 · 5 评论 -
基于opencascade+qt开发简易的加工刀具轨迹
借鉴基于opencascade开发的开源CAD/CAM/CAE软件FreeCAD,HeeksCAM等尝试生成三轴零件的加工刀具轨迹。偏置刀具轨迹生成:zigzag刀具轨迹生成:螺旋刀具轨迹生成:轮廓刀具轨迹生成:在此基础上,后续需要结合加工参数,生成连接刀具轨迹,以及细节处理。...原创 2022-06-08 18:12:56 · 1889 阅读 · 9 评论 -
opencascade建立回转实体
opencascade建立回转实体以球刀刀具为例,通过线->环->面->体,一步步建立刀具实体。 Standard_Real radius=5; Standard_Real length=75; gp_Pnt oPnt(0, 0, 0); //回转环的关键点 gp_Vec v(1, 0, 0); gp_Pnt ePnt(radius, 0, radius); gp_Pnt linPnt1(radius, 0, length); gp_Pnt linPnt2(原创 2021-07-12 21:42:46 · 411 阅读 · 3 评论 -
opencascade绘制实体消影线
opencascade绘制实体消影线如图,利用opencascade绘制出给定视角的齿轮的消隐线;OCC提供了两种算法,来绘制消隐线,帮助文档介绍如下:算法建立过程:给出实现代码:void occInitialize::getOutLine(){ //获取鼠标选中模型的那个对象 TopoDS_Shape detectShape = m_context->DetectedShape(); //进行模型网格离散化 BRepMesh_IncrementalMesh aMesh原创 2021-06-11 15:01:07 · 1114 阅读 · 1 评论 -
(opencascade中)C++命名、编程规范
C++命名、编程规范一、通用命名规则1、驼峰命名法2、函数的命名3、变量的命名4、函数的参数命名5、类的成员变量命名6、全局变量的命名7、局部变量的命名8、避免使用虚拟名称9、参考代码规范二、格式规范1、符号之间的“空格”运用2、指针的声明和引用3、单独代码块的注释4、函数体分隔5、代码块分布6、与常量的比较表达式7、语句对齐8、代码的注释9、return的时机10、头文件的包含三、文档规范1、在for()之前声明变量2、避免在if()语句中使用非0条件3、成员变量初始化顺序4、代码示例良好的代码编程命名原创 2021-06-10 16:38:48 · 552 阅读 · 2 评论 -
opencascade简单形状的轮廓面偏置生成
opencascade简单形状的轮廓面偏置生成针对一些简单的形状,可以利用OCC中的函数直接生成其轮廓面的偏置形状 BRepOffsetAPI_MakeOffsetShape aShapeMaker1; //aShapeMaker1.PerformByJoin(input,30,0.01);//第一种生成方式 aShapeMaker1.PerformBySimple(input, 20);//第二种生成方式,input为输入的TopoDS_Shape形状 TopoDS_Shape offs原创 2021-06-09 15:04:13 · 1617 阅读 · 0 评论 -
opencascade视图中设置视方体
opencascade视图中设置视方体主流CAD\CAM软件中为我们提供了零件的视方体,OCC作为功能较完善的开源三维造型库,也为我们提供了接口。涉及类:设置代码为: Handle(AIS_ViewCube) H_AisViewCube = new AIS_ViewCube(); m_context->SetDisplayMode(AIS_Shaded, true); //设置显示模式为阴影 H_AisViewCube->SetBoxSideLabel(V3d_Xpos原创 2021-06-08 20:48:19 · 1377 阅读 · 5 评论 -
opencascade建立零件的轮廓包围盒
opencascade建立零件的轮廓包围盒通过OCC中的投影,求交及B样条拟合等操作的结合,可以简单生成零件的轮廓偏置包围盒;BRepProj_Projection//投影BRepAlgoAPI_Section//求交GeomAPI_Interpolate//插值拟合原创 2021-06-07 14:32:42 · 1331 阅读 · 6 评论 -
opencascade设置零件的观察视角
opencascade设置零件的观察视角俯视图:左视图:正视图:观察的一般方向有前、后、左、右、上和下,在occ中均为我们提供了,除此之外还有其他更多的观察方向:涉及的类与函数为:为我们提供了如下的枚举方向:参考occ的demo,代码设置为:void CSelectionDialog::OnTopView() { myActiveView->SetProj(V3d_Zpos); OnDisplay(true);}void CSelectionDialog::原创 2021-06-05 15:36:58 · 833 阅读 · 0 评论 -
opencascade获取面的法向
opencascade获取面的法向导入任意零件,获取零件的拓扑面的法向,如红色线条所示。注意:当拓扑面与几何面方向不一致时,我们需要将方向反转,保证准确//遍历零件的面for (TopExp_Explorer e(workpiece, TopAbs_FACE); e.More(); e.Next()) { TopoDS_Face aFace = TopoDS::Face(e.Current()); //拓扑面和几何曲面的方向相反时反转 if (aFace.Orientation()原创 2021-06-04 21:19:54 · 2768 阅读 · 7 评论 -
opencascade绘制B样条插值曲线
opencascade绘制B样条插值曲线opencascade提供了B样条曲线曲面的绘制方法,涉及的类有下面以绘制B样条插值曲线为例: QVector<gp_Pnt> points; points.push_back(gp_Pnt(0,0,1)); points.push_back(gp_Pnt(0,1,1)); points.push_back(gp_Pnt(1,2,1)); points.push_back(gp_Pnt(1,3,1)); int原创 2021-06-03 14:46:34 · 1484 阅读 · 0 评论 -
opencascade获取四元数、旋转矩阵和欧拉角
opencascade获取四元数、旋转矩阵和欧拉角如图,计算结果与PowerMill中的结果进行对照在opencascade中当我们想要获取两个坐标轴之间的旋转关系时,如旋转矩阵、旋转四元数以及欧拉角等可以按照如下步骤进行:void angleTest(gp_Ax3 FromSystem, gp_Ax3 ToSystem)//变换前后的坐标系{ gp_Trsf trsf; trsf.SetTransformation(FromSystem, ToSystem); gp_Quaternion原创 2021-05-25 23:15:37 · 1008 阅读 · 0 评论 -
C++如何获取一段代码运行的时间
C++如何获取一段代码运行的时间 DWORD start_time = GetTickCount(); //开始计时 //代码块 DWORD end_time = GetTickCount(); //结束计时 cout << "The all run time is:" << (end_time - start_time) / 1000.0 << "s!" << endl; //输出时间...原创 2021-05-21 22:22:09 · 314 阅读 · 0 评论 -
opencascade如何用一个面裁剪另外一个面(2)
opencascade如何用一个面裁剪另外一个面(2)原文链接void split_plane_by_plane(TopoDS_Shape tool_face, TopoDS_Shape object_tool){ // Build section by the split plane for the cylinder. BRepAlgoAPI_Section aSection(object_tool, tool_face, Standard_False); aSection.Com转载 2021-05-21 22:02:29 · 747 阅读 · 0 评论 -
opencascade如何用一个面裁剪另外一个面
opencascade如何用一个面裁剪另外一个面void trim_plane_by_plane_2(TopoDS_Shape aS1, TopoDS_Shape aS2){ BRepAlgoAPI_Section sec(aS1, aS2, false); sec.ComputePCurveOn1(true); sec.Approximation(true); sec.Build(); TopoDS_Shape aInterCurve = sec.Shape()原创 2021-05-21 21:58:26 · 849 阅读 · 0 评论 -
opencascade用环来裁剪面
opencascade用环来裁剪面 gp_Pln plane(gp_Pnt(0.0, 0.0, 0.0), gp::DZ());//待裁剪平面 gp_Pnt p1(0, 0, 0); gp_Pnt p2(1, 0, 0); gp_Pnt p3(1, 1, 0); gp_Pnt p4(0, 1, 0); TopoDS_Edge edge1 = BRepBuilderAPI_MakeEdge(p1, p2); TopoDS_Edge edge2 = BR原创 2021-05-20 15:24:19 · 632 阅读 · 0 评论 -
opencascade对坐标系进行旋转操作
opencascade对坐标系进行旋转操作输入:原始坐标系的引用,绕哪根轴旋转,旋转的角度规定:x轴旋转标志为0,y轴旋转标值为1、z轴旋转为2void coordinateRotation(Handle(Geom_Axis2Placement) &coordinate,Standard_Integer flag,Standard_Real degree){ double PI = 3.1415926; Standard_Real deg = degree * PI / 180;//转角原创 2021-05-14 22:12:11 · 1748 阅读 · 1 评论 -
opencascade绘制球面,并进行裁剪
opencascade绘制球面,并进行裁剪 double Pi = 3.1415926;//建立球头半圆部分 gp_Ax3 ax(gp_Pnt(0, 0, 2), gp_Vec(0, 0, 1), gp_Vec(1, 0, 0)); Geom_SphericalSurface sphere(ax, 3.0); Handle(Geom_SphericalSurface) h_sphere = new Geom_SphericalSurface(sphere.Sphere()); H原创 2021-05-13 21:24:32 · 910 阅读 · 0 评论 -
opencascade设置模型的选择模式
opencascade设置模型的选择模式当视图中创建较多模型时,有时需要针对性的选择创建的点、面、线、壳体等;下面是OCC的选择过滤包,可以根据需要设置相应的选择模式:设置代码为: Handle(StdSelect_ShapeTypeFilter) solidFilter = new StdSelect_ShapeTypeFilter(TopAbs_SOLID); m_context->AddFilter(solidFilter);//以SOLID选择设置为例,其余可以参照设置..原创 2021-05-12 17:08:21 · 1118 阅读 · 1 评论 -
opencascade绘制自定义坐标系
opencascade绘制自定义坐标系 gp_Pnt oPnt(0, 0, 0);//原点 gp_Pnt xPnt(1, 1, 1); gp_Vec vX(oPnt, xPnt); gp_Dir aixX(vX / vX.Magnitude());//x方向 gp_Vec constructV(xPnt.X()+1, 1, 1); //给定过原点的任意一个向量,用来计算Z方向 gp_Vec vZ = vX.Crossed(constructV); gp_Dir aixZ = (vZ原创 2021-05-07 10:46:19 · 2078 阅读 · 0 评论 -
opencascade英文帮助文档与类使用指南
opencascade英文帮助文档与类使用指南opencascade帮助文档链接:https://dev.opencascade.org/doc/overview/html/官方网站全面地介绍了occ的几大模块,与安装使用指南,开始慢慢习惯阅读英文介绍opencascade类使用指南:https://dev.opencascade.org/doc/refman/html/在这里搜索所有的occ类,学习类的使用,是一个强大的学习助手...原创 2021-04-30 10:54:12 · 650 阅读 · 0 评论 -
opencascade中的几种类型转换
opencascade中的几种类型转换将Geom_BSplineSurface转化成TopoDS_Face:将TopoDS_Face 转化为Geom_Surface普通曲线转化为NURBS曲线Geom_Surface 转 Geom_BsplineSurface点云转 Geom_BsplineSurface————————————————版权声明:本文为CSDN博主「Damons_Sun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog转载 2021-04-30 09:52:23 · 1598 阅读 · 0 评论 -
opencascad常用Topology拓扑函数包
opencascad常用Topology拓扑函数包源自《opencascade使用指南》原创 2021-04-29 19:43:43 · 241 阅读 · 0 评论 -
opencascade获取拓扑形状包围盒尺寸
opencascade获取拓扑形状包围盒尺寸 Bnd_Box bBox; BRepBndLib repBnd; repBnd.Add(topo_shape, bBox); Standard_Real theXmin, theYmin, theZmin, theXmax, theYmax, theZmax; bBox.Get(theXmin, theYmin, theZmin, theXmax, theYmax, theZmax); cout <<原创 2021-04-28 21:09:28 · 975 阅读 · 0 评论 -
opencascade对topo线进行遍历,获取所有的线转换为几何类型,并且存储为裁剪几何曲线
opencascade对topo线进行遍历,获取所有的线转换为几何类型,并且存储为裁剪几何曲线/************************************************** *function: 对topo线进行遍历,获取所有的线并且存储为裁剪几何曲线 *input: *output: *adding: *author:Xu *date: 2021/4/26**************************************************/QVec原创 2021-04-26 22:55:16 · 1451 阅读 · 0 评论