OCCT命令集1

  • 一、生成点、线、面和 shell
      • BRepBuilderAPI_MakeEdge 点生成边命令
      • BRepBuilderAPI_MakeWire 边生成曲线命令
    • 生成面
      • 1、BRepBuilderAPI_MakeFace 根据闭合线生成面
      • 2、BRepFill::Face() wire生成face的函数。
    • 生成shell
      • 1、BRepFill::Shell() wire生成shell的函数。
      • 2、BRepBuilderAPI_Sewing 具体见下面
    • 生成Compound和solid
  • 二、创造模型
    • BRepPrimAPI_MakeCylinder 生成圆柱体命令
    • BRepPrimAPI_MakeBox 生成长方体命令
  • 三、格式转换
  • 四、变形命令
    • 拉伸,扫描,回转拉伸命令;
    • 倒圆角
    • 倒直角
    • 构建空心实体
    • 组装命令
    • 拔模命令
  • 五、布尔命令(并集,交集,差集)
  • 六、移动命令
  • 七、数据交互,导入导出
  • 八、辅助类 TopExp_Explorer

一、生成点、线、面和 shell

BRepBuilderAPI_MakeEdge 点生成边命令
//方法1gp_Pnt pt1(0,0,0);//gp_Pnt类定义点包含double的xyz。gp_Pnt pt2(1,1,1); TopoDS_Edge edge1 = BRepBuilderAPI_MakeEdge(pt1,pt2);
//方法2//TColgp_Array1OfPnt类定义点的数组。NCollection_Array1类定义了一个ArrayTColgp_Array1OfPnt array(1, num);for (int i = 1; i <= num; ++i) {array.SetValue(i, list[i - 1]);}GeomAPI_PointsToBSpline Approx(array);//GeomAPI_PointsToBSpline类用一组点近似得到BSpline曲线。***展开相关类Handle_Geom_BSplineCurve K = Approx.Curve();//Geom_BSplineCurve类是B_spline 曲线的定义TopoDS_Edge shape = BRepBuilderAPI_MakeEdge(K);//提供构建edge的方法。
BRepBuilderAPI_MakeWire 边生成曲线命令
         TopoDS_Edge edge1,edge2,edge3,edge4; TopoDS_Wire  wireSrc = BRepBuilderAPI_MakeWire(edge4);TopoDS_Wire  four_wire = BRepBuilderAPI_MakeWire(edge1, edge2, edge3, edge4);TopoDS_Face four_face = BRepBuilderAPI_MakeFace(four_wire);
 TopoDS_Edge edge1,edge2,edge3,edge4; BRepBuilderAPI_MakeWire wire;//导线,由边组成。wire.Add(edge1);wire.Add(edge2);wire.Add(edge3);wire.Add(edge4);if (!wire.IsDone())return false;wireRect = wire.Wire();

生成面

1、BRepBuilderAPI_MakeFace 根据闭合线生成面
TopoDS_Face face1 = BRepBuilderAPI_MakeFace(wire1);
 BRepBuilderAPI_MakeFace mf;mf.Init(face);mf.Add(holeWire);if (!mf.IsDone())return false;TopoDS_Face face2 = mf.Face();
 BRepBuilderAPI_MakeFace builder(gp_Pln(gp_Pnt(0,0,0), gp_Dir(0,0,1)));if (!builder.IsDone())return;TopoDS_Shape shape = builder.Shape();
2、BRepFill::Face() wire生成face的函数。
TopoDS_Face face = BRepFill::Face(TopoDS::Edge(shape1), TopoDS::Edge(shape2));

生成shell

1、BRepFill::Shell() wire生成shell的函数。
 TopoDS_Shell shell = BRepFill::Shell(TopoDS::Wire(shape1), TopoDS::Wire(shape2));
2、BRepBuilderAPI_Sewing 具体见下面

生成Compound和solid

 //构建 复合模型BRep_Builder builder;TopoDS_Compound comp;builder.MakeCompound(comp);
     BRepBuilderAPI_MakeSolid solid(*shell1);if (!solid.IsDone())return false;TopoDS_Shape coverSolid = solid.Solid();

二、创造模型

BRepPrimAPI_MakeCylinder 生成圆柱体命令
     gp_Ax2 ax2(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 30));TopoDS_Shape cylinder = BRepPrimAPI_MakeCylinder(ax2, radius, height).Shape();
BRepPrimAPI_MakeBox 生成长方体命令
TopoDS_Shape box = BRepPrimAPI_MakeBox(x, y, z);

三、格式转换

TopoDS::Face 相关。 TopoDS包 是用于定义拓扑信息。

//类型转换都类似,这里只是列举2个
TopoDS_Wire wire = TopoDS::Wire(shape);//类型转换
TopoDS_Face face = TopoDS::Face(mk.Shape());

四、变形命令

拉伸,扫描,回转拉伸命令;

注意: 扫描,拉伸,回转拉伸本质相同
拉伸命令
BRepPrimAPI_MakePrism类 。拓扑信息实体化,支持最简单的方体,锥形,圆柱,球体,还有基础形状的扫略拉伸
另外:dir给负数可以挖洞。

//height的正负是拉伸的方向。
TopoDS_Shape shapeRes = BRepPrimAPI_MakePrism(wireSrc, gp_Vec(0, -height, 0));
     BRepPrimAPI_MakePrism PrismMaker(from, Ltotal*gp_Vec(dir), 0, 1); // finite prismTopoDS_Shape shapeRes;if (PrismMaker.IsDone())shapeRes = PrismMaker.Shape();

旋转扫描命令
BRepPrimAPI_MakeRevol类 生成生成旋转扫描拓扑。

TopoDS_Shape shape= BRepPrimAPI_MakeRevol(wire, gp::OZ());
 BRepPrimAPI_MakeRevol mkRevol(mkFace.Face(), gp_Ax1(gp_Pnt(0,0,0), gp_Dir(0,0,1)),Base::toRadians<double>(angle3), Standard_True);TopoDS_Shape shape = mkRevol.Shape();
倒圆角

BRepFilletAPI_MakeFillet 描述在壳或实体的断裂边上构建圆角的函数

//edges为需要倒圆角的所有边;
//shapeSrc为需要倒圆角的源模型;BRepFilletAPI_MakeFillet fillet(shapeSrc);auto iter = edges.begin();while (iter != edges.end()){TopoDS_Edge& e = *iter;fillet.Add(radus, e);iter++;}TopoDS_Shape  shapeRes = fillet.Shape();if (shapeRes.IsNull())return false;return true;
倒直角

BRepFilletAPI_MakeChamfer 类 倒直角命令

构建空心实体

BRepOffsetAPI_MakeThickSolid 用于构建空心实体的函数。

 //构建空心实体(有厚度)BRepOffsetAPI_MakeThickSolid BodyMaker;TopoDS_Shape solidSrc;TopoDS_Shape  shapeRes;try{//solidSrc是实体;facesToRemove是被删除的面集;Thickness定义墙的厚度;//1.e-6定义了生成形状中重合的公差标准;BodyMaker.MakeThickSolidByJoin(solidSrc, facesToRemove, -3, 1.e-6);//,//BRepOffset_Skin, Standard_False, Standard_False, GeomAbs_Intersection);shapeRes= BodyMaker.Shape();}catch (Standard_Failure){return false;}
组装命令

BRepBuilderAPI_Sewing 类 组装不同shape、face。离心机的离线装配中用到了。

BRepBuilderAPI_Sewing sew;
sew.Add(shape1);
sew.Add(shape2);
sew.Add(shape3);
sew.Add(shape4);
sew.Perform();
TopoDS_Shape  shapeRes = sew.SewedShape();
拔模命令

拔模: 铸造件更好的脱离磨具,添加的角度。
BRepOffsetAPI_DraftAngle类 拔模命令,太高一个角度。

五、布尔命令(并集,交集,差集)

BRepAlgoAPI_Fuse 类为并集Fuse。

         BRepAlgoAPI_Fuse mkFuse;TopTools_ListOfShape shapeArguments,shapeTools;const TopoDS_Shape& shape = s.front();if (shape.IsNull())throw Base::RuntimeError("Input shape is null");shapeArguments.Append(shape);for (std::vector<TopoDS_Shape>::iterator it = s.begin()+1; it != s.end(); ++it) {if (it->IsNull())throw Base::RuntimeError("Input shape is null");shapeTools.Append(*it);}mkFuse.SetArguments(shapeArguments);mkFuse.SetTools(shapeTools);mkFuse.Build();if (!mkFuse.IsDone())throw Base::RuntimeError("MultiFusion failed");TopoDS_Shape resShape = mkFuse.Shape();
 BRepAlgoAPI_Common类为交集comm,BRepAlgoAPI_Cut类为差集Cut。 从一个体中裁剪去另一个体。剪切命令

六、移动命令

BRepBuilderAPI_Transform 平移旋转缩放命令。gp_Ax1类、gp_Trsf类实现绕轴旋转矩阵。
gp_Trsf 配合上面命令的平移旋转缩放矩阵,gp_Ax1 类是定义任意轴;

七、数据交互,导入导出

STEPControl_Writer 类和 STEPControl_Reader 类。
IGESControl_Writer 类和 IGESControl_Reader 类。

八、辅助类 TopExp_Explorer

TopExp_Explorer 函数可以用来探索该实体的edge,返回的结果为子形状(sub-shape);同时该函数的经常会使用其子函数More,Current,Next 放进循环中

//遍历for (TopExp_Explorer exp(shapSrc, TopAbs_FACE); exp.More(); exp.Next()){TopoDS_Face face = TopoDS::Face(exp.Current());Handle(Geom_Surface) geomSurface = BRep_Tool::Surface(face);//BRep_Tool类用于获取相关shape的几何信息。...}
   TopTools_IndexedMapOfShape anIndices;TopExp::MapShapes(s, type, anIndices);//  用于探索拓扑数据结构的工具。在地图<M>中存储<S>的所有子形状,类型<T>。

OCCT命令集1(速查笔记)相关推荐

  1. XML 语法速查笔记

    相比起 Json,XML 是一种相对古老和复杂.但功能更加强大的数据存储/传输格式.也因为其复杂,有一些语法需要记录一下,在使用多种语言进行 XML 操作的时候备查. 范例 下面是一个相对比较完整的 ...

  2. mysql generator 命令_MyBatis Generator速查手册

    前言 从Eclipse到idea都一直都在用Mybatis Generator, 也完整翻阅过官方文档, 可是看完就没有那回事了. 这次决定要记录下来, 以备不时之需. 以下根据mybatis-gen ...

  3. 速查笔记(Linux Shell编程上)

    零.shell中的内部变量: 1.    $?:    表示shell命令的返回值. 2.    $$:    表示当前shell的pid. 3.    $!:    最后一个放入后台作业的PID值. ...

  4. git add remote_收藏向 | Git命令与原理速查手册

    Git简单介绍 Git是一个分布式版本控制软件,最初由Linus Torvalds创作,于2005年以GPL发布.最初目的是为更好地管理Linux内核开发而设计. Git工作流程以及各个区域 Work ...

  5. linux shell 函数 格式化,速查笔记(linux shell编程)

    零.shell中的内部变量: 1. $?:    表示shell命令的返回值. 2. $$:    表示当前shell的pid. 3. $!:    最后一个放入后台作业的PID值. 4. $0:   ...

  6. mysql嵌入式语句_MySQL/MariaDB 语句速查笔记

    平时实际开发的时候,其实并不太依赖 MySQL 作为 关系型数据库 中的 "关系" 这一属性,更多地只是把 MySQL 作为数据存储的介质.因此 MySQL 语句其实很少写,所以本 ...

  7. pandas 根据列名索引多列数据_Pandas 数据聚合与分组运算[groupby+apply]速查笔记

    利用Pandas将数据进行分组,并将各组进行聚合或自定义函数处理. Pandas中Groupby分组与聚合过程 导入模块 import pandas as pd 缩写 df表示Dataframe对象 ...

  8. 密码学速查笔记(一)-- 分组对称加密

    一.定义 分组加密又称块加密Block Cipher,就是把大段的plaintext,分块加密传输.而One-key Block Cipher通常是以发送方和接收方共享一个Key作为加解密密钥.数学定 ...

  9. vim移动、定位命令与快捷键速查表(简练通俗)

    光标位置移动(方向) 位置 键 使用频率 左 h ★★★★★★ 下 j ★★★★★★ 上 k ★★★★★★ 右 l ★★★★★★ 注:也可用小键盘区的方向键移动光标方向,但不建议,因为离得太远了 光标 ...

  10. 渗透测试各阶段工具速查(持续更新)

    文章来源:Leticia's Blog 文章作者:Leticia 前言 本文是渗透测试各阶段工具和快速用法速查笔记,将会持续更新. 站点信息收集 1 2 3 4 5 6 7 8 Google Fofa ...

最新文章

  1. 一个程序员的小笑话.(纯属虚构)
  2. html5option的js代码,ng-option(示例代码)
  3. 移动端网页宽度值(未加meta viewport标签)
  4. 定义与声明c语言,c语言定义与声明.ppt
  5. java白皮书关键术语
  6. 鬼谷子72术,完整收藏
  7. python高级编程总结
  8. 在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法
  9. 编程疑难杂症の真的非常一样的文本?!
  10. Win10打开nvidia控制面板闪退怎么解决
  11. 蒙特卡罗方法计算圆周率C语言,用蒙特卡罗方法计算圆周率
  12. 2021年PAT乙级春季真题
  13. 联想拯救者y7000p2022款 配置
  14. POI和EasyExcel操作Excel
  15. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-SumGNN:通过有效的KG聚集进行多类型DDI预测
  16. android.nfc.tech圈存,荣耀7使用nfc功能教程及注意事项,亲测可以刷公交卡
  17. android蘑菇街架构,蘑菇街Android单元测试框架 – natasha
  18. 2021新泰一中高考成绩查询,山东泰安赫赫有名的4所高中,成绩一目了然,第一名花落谁家?...
  19. 驱动及驱动开发的简单理解
  20. echarts name 坐标轴_从零打造Echarts —— v1 ZRender和MVC

热门文章

  1. excel表格操作之数据分级统计
  2. wincap网络数据包的捕获
  3. 微机——微型计算机系统组成及工作原理
  4. mysql 如何分组统计个数_mysql 怎样统计分组数
  5. 【洛谷P3554】LUK-Triumphal arch【树形dp】【二分】
  6. 二维码的生成细节和原理源码
  7. 标识符——C语言基础知识
  8. 你别不信,安卓机用户才是苹果机涨价的最大受害者
  9. GAE(Generalized Advantage Estimation) PPO
  10. 揭秘淘宝搜索量快速暴增的秘密