OCCT命令集1(速查笔记)
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(速查笔记)相关推荐
- XML 语法速查笔记
相比起 Json,XML 是一种相对古老和复杂.但功能更加强大的数据存储/传输格式.也因为其复杂,有一些语法需要记录一下,在使用多种语言进行 XML 操作的时候备查. 范例 下面是一个相对比较完整的 ...
- mysql generator 命令_MyBatis Generator速查手册
前言 从Eclipse到idea都一直都在用Mybatis Generator, 也完整翻阅过官方文档, 可是看完就没有那回事了. 这次决定要记录下来, 以备不时之需. 以下根据mybatis-gen ...
- 速查笔记(Linux Shell编程上)
零.shell中的内部变量: 1. $?: 表示shell命令的返回值. 2. $$: 表示当前shell的pid. 3. $!: 最后一个放入后台作业的PID值. ...
- git add remote_收藏向 | Git命令与原理速查手册
Git简单介绍 Git是一个分布式版本控制软件,最初由Linus Torvalds创作,于2005年以GPL发布.最初目的是为更好地管理Linux内核开发而设计. Git工作流程以及各个区域 Work ...
- linux shell 函数 格式化,速查笔记(linux shell编程)
零.shell中的内部变量: 1. $?: 表示shell命令的返回值. 2. $$: 表示当前shell的pid. 3. $!: 最后一个放入后台作业的PID值. 4. $0: ...
- mysql嵌入式语句_MySQL/MariaDB 语句速查笔记
平时实际开发的时候,其实并不太依赖 MySQL 作为 关系型数据库 中的 "关系" 这一属性,更多地只是把 MySQL 作为数据存储的介质.因此 MySQL 语句其实很少写,所以本 ...
- pandas 根据列名索引多列数据_Pandas 数据聚合与分组运算[groupby+apply]速查笔记
利用Pandas将数据进行分组,并将各组进行聚合或自定义函数处理. Pandas中Groupby分组与聚合过程 导入模块 import pandas as pd 缩写 df表示Dataframe对象 ...
- 密码学速查笔记(一)-- 分组对称加密
一.定义 分组加密又称块加密Block Cipher,就是把大段的plaintext,分块加密传输.而One-key Block Cipher通常是以发送方和接收方共享一个Key作为加解密密钥.数学定 ...
- vim移动、定位命令与快捷键速查表(简练通俗)
光标位置移动(方向) 位置 键 使用频率 左 h ★★★★★★ 下 j ★★★★★★ 上 k ★★★★★★ 右 l ★★★★★★ 注:也可用小键盘区的方向键移动光标方向,但不建议,因为离得太远了 光标 ...
- 渗透测试各阶段工具速查(持续更新)
文章来源:Leticia's Blog 文章作者:Leticia 前言 本文是渗透测试各阶段工具和快速用法速查笔记,将会持续更新. 站点信息收集 1 2 3 4 5 6 7 8 Google Fofa ...
最新文章
- 一个程序员的小笑话.(纯属虚构)
- html5option的js代码,ng-option(示例代码)
- 移动端网页宽度值(未加meta viewport标签)
- 定义与声明c语言,c语言定义与声明.ppt
- java白皮书关键术语
- 鬼谷子72术,完整收藏
- python高级编程总结
- 在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法
- 编程疑难杂症の真的非常一样的文本?!
- Win10打开nvidia控制面板闪退怎么解决
- 蒙特卡罗方法计算圆周率C语言,用蒙特卡罗方法计算圆周率
- 2021年PAT乙级春季真题
- 联想拯救者y7000p2022款 配置
- POI和EasyExcel操作Excel
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-SumGNN:通过有效的KG聚集进行多类型DDI预测
- android.nfc.tech圈存,荣耀7使用nfc功能教程及注意事项,亲测可以刷公交卡
- android蘑菇街架构,蘑菇街Android单元测试框架 – natasha
- 2021新泰一中高考成绩查询,山东泰安赫赫有名的4所高中,成绩一目了然,第一名花落谁家?...
- 驱动及驱动开发的简单理解
- echarts name 坐标轴_从零打造Echarts —— v1 ZRender和MVC