日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OCCT命令集1(速查笔记)

發布時間:2023/12/18 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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(速查笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。