亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Construction of Primitives in Open Cascade

系統 1953 0

Construction of Primitives in Open Cascade

eryar @ 163 . com

一、創建基本圖元 Making Primitives

將用到如下的類創建基本圖元,包括長方體( Box )、楔形體( Wedge )、旋轉體( Revol )等。這些類提供 Shell Solid 函數來返回實體( solid )和殼( shell )。?

Construction of Primitives in Open Cascade

使用方法都是調用這些類的構造函數,輸入相應的參數,直接構造出基本圖元。構造函數的參數不同,創建的基本幾何實體的形狀也會不同。?

注:所有旋轉體的角度值都是弧度值。

1. 創建長方體 BRepPrimAPI _ MakeBox

使用 MakeBox 類創建一個長方體,結果以一個殼或體返回。創建長方體的方式有如下四種:?

Construction of Primitives in Open Cascade

以上創建方式對應類的 BRepPrimAPI _ MakeBox 的四種構造函數:

    Standard_EXPORT   BRepPrimAPI_MakeBox(
    
      const
    
     Standard_Real dx,
    
      const
    
     Standard_Real dy,
    
      const
    
     Standard_Real dz);


  
  
      Standard_EXPORT   BRepPrimAPI_MakeBox(
    
      const
    
     gp_Pnt& P,
    
      const
    
     Standard_Real dx,
    
      const
    
     Standard_Real dy,
    
      const
    
     Standard_Real dz);


  
  
      Standard_EXPORT   BRepPrimAPI_MakeBox(
    
      const
    
     gp_Pnt& P1,
    
      const
    
     gp_Pnt& P2);


  
  
      Standard_EXPORT   BRepPrimAPI_MakeBox(
    
      const
    
     gp_Ax2& Axes,
    
      const
    
     Standard_Real dx,
    
      const
    
     Standard_Real dy,
    
      const
    
     Standard_Real dz);


  

Construction of Primitives in Open Cascade

與上圖對應的創建長方體的代碼如下所示:

    BRepPrimAPI_MakeBox (200.,150.,100.);


  
    BRepPrimAPI_MakeBox (gp_Pnt(60, 60, 0), 200.,150.,100.);


  
    BRepPrimAPI_MakeBox (gp_Pnt(60, 60, 0), gp_Pnt(200.,150.,100.));


  
    BRepPrimAPI_MakeBox (gp_Ax2(gp_Pnt(100.,80.,70.),gp_Dir(1.,2.,1.)),80.,90.,120.);


  

2. 創建楔形體 BRepPrimAPI _ MakeWedge

使用類 BRepPrimAPI _ MakeWedge 來創建楔形體。楔形體就是帶斜面的長方體,即帶角度的長方體。楔形體的創建方式與長方體的創建方式相似。下圖所示為構造楔形體的兩種方式。一種是加入 ltx 尺寸來描述 dy 上的面,另一種是加入 xmin xmax zmin zmax 來描述 dy 上的面。?

第一種方式是第二種方式在滿足以下條件下的特例:?

xmin = 0 , xmax = ltx , zmin = 0 , zmax = dz

創建一個金字塔的楔形體可以用下面的方式:?

xmin = xmax = dx / 2 , zmin = zmax = dz / 2

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

生成上圖所示的程序如下所示:

    TopoDS_Shape S1 = BRepPrimAPI_MakeWedge(60.,100.,80.,20.); 


  
    TopoDS_Shape S2 = BRepPrimAPI_MakeWedge(gp_Ax2(gp_Pnt(100.,100.,0.),gp_Dir(0.,0.,1.)), 


  
                                        60.,50.,80.,25.,-10.,40.,70.); 


  

3. BRepPrimAPI _ MakeOneAxis

BRepPrimAPI _ MakeOneAxis 是所有旋轉體圖元的基類。旋轉體通過將曲線繞一個軸旋轉得到。它們有圓柱體、圓錐體、球體、圓環體等。?

這些旋轉體對于不同的圖元有不同的構造參數,但是它們也有共同的參數:?

l 一個坐標系統;?

l 一個角度,范圍為[ 0 , 2 * PI ];?

l 曲線的 vmin vmax 參數;?

OneAxis 構造的結果是體 Solid 、殼 Shell 或面 Face 。?

通常不會直接使用類 BRepPrimAPI _ MakeOneAxis ,而是使用它的派生類。?

Construction of Primitives in Open Cascade

如下圖所示描述了類的參數:?

Construction of Primitives in Open Cascade

4. 創建圓柱體 BRepPrimAPI _ MakeCylinder

使用類 BRepPrimAPI _ MakeCylinder 來創建圓柱體。圓柱可以在默認的坐標系中被創建,也可以指定的坐標系( gp _ Ax2 )中創建。創建方式如下:?

l 半徑、高度創建一個完整的圓柱;?

l 半徑、高度及角度來創建部分圓柱;?

如下代碼所示為沿 X Y Z 偏移一定距離的四分之一的圓柱:

    Standard_Real X = 20;


  
    Standard_Real Y = 10;


  
    Standard_Real Z = 15;


  
    Standard_Real R = 10;


  
    Standard_Real DY = 30;


  
    
      // Make the system of coordinates.
    
  
    gp_Ax2 axes = gp::ZOX();


  
    axes.Translate(gp_Vec(X, Y, Z));


  
    TopoDS_Face F = BRepPrimAPI_MakeCylinder(axes, R, DY, PI/2.);


  

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

5. 創建圓錐體 BRepPrimAPI _ MakeCone

使用類 BRepPrimAPI _ MakeCone 來創建圓錐體。與圓柱體一樣,圓錐體可以在默認的坐標系中被創建,也可以指定的坐標系中被創建。創建方式如下:?

l 兩個半徑和高度來創建一個完整的圓錐。一個半徑可以為零,這樣就創建了一個尖頂的圓錐;?

l 半徑、高度和角度來創建部分圓錐。?

如下代碼創建的圓錐如下圖所示:

    TopoDS_Shape C1 = BRepPrimAPI_MakeCone (50.,25.,200.); 


  
    TopoDS_Shape C2 = BRepPrimAPI_MakeCone(gp_Ax2(gp_Pnt(100.,100.,0.), 


  
                                              gp_Dir(0.,0.,1.)), 


  
                                       605.,0.,150.,210.*PI180); 


  

Construction of Primitives in Open Cascade

6. 創建球體 BRepPrimAPI _ MakeSphere

使用類 BRepPrimAPI _ MakeSphere 來創建球體。與圓柱體一樣,球體可以在默認的坐標系中被創建,也可以指定的坐標系中被創建。有四種創建方式,如下圖所示:?

l 一個半徑值,創建一個完整的球體;?

l 半徑和角度,創建部分的球體;?

l 半徑和兩個角度值,創建緯度上的部分的球體。兩個角度 a1 a2 必須滿足如下條件: PI / 2 <= a1 < a2 <= PI / 2

l 一個半徑和三個角度值;?

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

實現上圖中球體的代碼如下:

    TopoDS_Shape S1 = BRepPrimAPI_MakeSphere(gp_Pnt(-200.,-250.,0.),80.); 


  
    TopoDS_Shape S2 = BRepPrimAPI_MakeSphere(100.,120.*PI180); 


  
    TopoDS_Shape S3 = BRepPrimAPI_MakeSphere(gp_Pnt(200.,250.,0.),100., 


  
                                         -60.*PI180, 60.*PI180); 


  
    TopoDS_Shape S4 = BRepPrimAPI_MakeSphere(gp_Pnt(0.,0.,-300.),150., 


  
                                         -45.*PI180, 45.*PI180, 45.*PI180);


  

7. 創建圓環體 BRepPrimAPI _ MakeTorus

使用類 BRepPrimAPI _ MakeTorus 來創建圓環體。與其它基本圖元類似,一個圓環體可以在默認的坐標系中創建,也可以在指定的坐標系中創建。創建與與球體創建方式類似:?

l 兩個半徑,創建一個完整的圓環體;?

l 兩個半徑和一個角度值,創建部分的圓環體;?

l 兩個半徑和兩個角度值,創建緯度上的部分圓環體;兩個角度必須滿足如下條件: 0 < a2 a1 < 2 * PI ;?

l 兩個半徑和三個角度值,創建部分的圓環體;?

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

    TopoDS_Shape S1 = BRepPrimAPI_MakeTorus(60.,20.); 


  
    TopoDS_Shape S2 = BRepPrimAPI_MakeTorus(gp_Ax2(gp_Pnt(100.,100.,0.),gp_Dir(1.,1.,1.)), 


  
                                        50.,20.,210.*PI180); 


  
    TopoDS_Shape S3 = BRepPrimAPI_MakeTorus(gp_Ax2(gp_Pnt(-200.,-150.,-100),gp_Dir(0.,1.,0.)), 


  
                                        60.,20.,-45.*PI180,45.*PI180,90.*PI180); 


  

8. 創建旋轉體 BRepPrimAPI _ MakeRevolution

使用類 BRepPrimAPI _ MakeRevolution 來根據一條曲線和軸創建旋轉體。曲線可以是任意的 Geom _ Curve ,有四種構造方式:?

l From a curve , use the full curve and make a full rotation ;?

l From a curve and an angle of rotation ;?

l From a curve and two parameters to trim the curve . The two parameters must be growing and within the curve range ;?

l From a curve , two parameters , and an angle . The two parameters must be growing and within the curve range .?

??

二、創建掃掠體 Sweeping : Prism , Revolution and Pipe

掃掠體( Sweeps )就是一條截面( profile )沿任意軌道線( path )掃掠后得到的體。截面可以是任意的拓樸結構。軌道線通常是曲線( curve or wire )。創建掃掠體的規則如下:?

l 點掃掠后得到邊; Vertices generate Edges ;?

l 邊掃掠后得到面; Edges generate Faces ;?

l 線掃掠后得到殼; Wires generate Shells ;?

l 面掃掠后得到體; Faces generate Solids ;?

l 殼掃掠后得到組合體; Shells generate Composite Solids ;?

l A Compound generates a Compound with the sweep of all its elements ;?

體( Solids )和組合體( Composite Solids )的掃掠是禁止的。?

Construction of Primitives in Open Cascade

BRepPrimAPI 中實現了三種掃掠體:稱線性掃掠體為 Prism ,稱旋轉掃掠體為 Revol 和通用的掃掠體叫作 Pipe 。?

1. BRepPrimAPI _ MakeSweep

BRepPrimAPI _ MakeSweep 是掃掠體的基類。對用戶來說,沒有什么實質的用途。?

Construction of Primitives in Open Cascade

2. 創建拉伸體 BRepPrimAPI _ MakePrism

使用類 BRepPrimAPI _ MakePrism 來創建線性拉伸體 prism 。拉伸體可從一個形狀及一個向量或一個方向來創建。從一個向量可以創建一個有限拉伸體,而從一個方向可以創建一個無限的或半無限的拉伸體。一個布爾的函數參數用來控制半無限和全無限的拉伸體。所有的構造函數都有一個布爾值來控制構造的拉伸體與原拉伸體是否共享,默認是共享方式構造。如下代碼為使用一個面,一個方向和一個長度來創建一個有限的、無限的和半無限的拉伸體。?

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

生成上圖所示形狀的代碼如下所示:

    
      //--- Prism a vertex -> result is an edge --- 
    
  
    TopoDS_Vertex V1 = BRepBuilderAPI_MakeVertex(gp_Pnt(-200.,-200.,0.)); 


  
    TopoDS_Shape S1 = BRepBuilderAPI_MakePrism(V1,gp_Vec(0.,0.,100.)); 


  
    
      //--- Prism an edge -> result is a face --- 
    
  
    TopoDS_Edge E = BRepBuilderAPI_MakeEdge(gp_Pnt(-150.,-150,0.), gp_Pnt(-50.,-50,0.)); 


  
    TopoDS_Shape S2 = BRepPrimAPI_MakePrism(E,gp_Vec(0.,0.,100.)); 


  
    
      //--- Prism an wire -> result is a shell --- 
    
  
    TopoDS_Edge E1 = BREpBuilderAPI_MakeEdge(gp_Pnt(0.,0.,0.), gp_Pnt(50.,0.,0.)); 


  
    TopoDS_Edge E2 = BREpBuilderAPI_MakeEdge(gp_Pnt(50.,0.,0.), gp_Pnt(50.,50.,0.)); 


  
    TopoDS_Edge E3 = BREpBuilderAPI_MakeEdge(gp_Pnt(50.,50.,0.), gp_Pnt(0.,0.,0.)); 


  
    TopoDS_Wire W = BRepBuilderAPI_MakeWire(E1,E2,E3); 


  
    TopoDS_Shape S3 = BRepPrimAPI_MakePrism(W,gp_Vec(0.,0.,100.)); 


  
    
      //--- Prism a face or a shell -> result is a solid --- 
    
  
    gp_Circ c = gp_Circ(gp_Ax2(gp_Pnt(200.,200.,0.gp_Dir(0.,0.,1.)), 80.); 


  
    TopoDS_Edge Ec = BRepBuilderAPI_MakeEdge(c); 


  
    TopoDS_Wire Wc = BRepBuilderAPI_MakeWire(Ec); 


  
    TopoDS_Face F = BRepBuilderAPI_MakeFace(gp::XOY(),Wc); 


  
    TopoDS_Shape S4 = BRepBuilderAPI_MakePrism(F,gp_Vec(0.,0.,100.)); 


  

3. 創建旋轉體 BRepPrimAPI _ MakeRevol

使用類 BRepPrimAPI _ MakeRevol 來創建旋轉掃掠體。旋轉掃掠體由一個形狀、軸和一個角度構造而得。類 BRepPrimAPI _ MakeRevol 所有的構造函數的最后一個參數是用來控制構造的形狀與原形狀的關系,默認為共享的方式。?

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

Construction of Primitives in Open Cascade

生成上圖所示形狀的代碼如下所示:

    
      //--- Revol of a vertex -> result is an edge ---
    
  
    TopoDS_Vertex V1 = BRepBuilderAPI_MakeVertex(gp_Pnt(-200.,-200.,0.));


  
    gp_Ax1 axe = gp_Ax1(gp_Pnt(-170.,-170.,0.),gp_Dir(0.,0.,1.));


  
    TopoDS_Shape S1 = BRepPrimAPI_MakeRevol(V1,axe);


  
    
      //--- Revol of an edge -> result is a face --- 
    
  
    TopoDS_Edge E = BRepBuilderAPI_MakeEdge(gp_Pnt(-120.,-120,0.), gp_Pnt(-120.,-120,100.)); 


  
    axe = gp_Ax1(gp_Pnt(-100.,-100.,0.),gp_Dir(0.,0.,1.));


  
    TopoDS_Shape S2 = BRepPrimAPI_MakeRevol(E,axe);


  
    
      //--- Revol of a wire -> result is a shell ---
    
  
    TopoDS_Edge E1 = BRepBuilderAPI_MakeEdge(gp_Pnt(0.,0.,0.), gp_Pnt(50.,0.,0.));


  
    TopoDS_Edge E2 = BRepBuilderAPI_MakeEdge(gp_Pnt(50.,0.,0.), gp_Pnt(50.,50.,0.));


  
    TopoDS_Edge E3 = BRepBuilderAPI_MakeEdge(gp_Pnt(50.,50.,0.), gp_Pnt(0.,0.,0.));


  
    TopoDS_Wire W = BRepBuilderAPI_MakeWire(E1,E2,E3);


  
    axe = gp_Ax1(gp_Pnt(0.,0.,30.),gp_Dir(0.,1.,0.));


  
    TopoDS_Shape S3 = BRepPrimAPI_MakeRevol(W,axe, 210.*PI180);


  
    
      //--- Revol of a face -> result is a solid --- 
    
  
    gp_Circ c = gp_Circ(gp_Ax2(gp_Pnt(200.,200.,0.),gp_Dir(0.,0.,1.)), 80.);


  
    TopoDS_Edge Ec = BRepBuilderAPI_MakeEdge(c);


  
    TopoDS_Wire Wc = BRepBuilderPI_MakeWire(Ec);


  
    TopoDS_Face F = BRepBuilderAPI_MakeFace(gp_Pln(gp::XOY()),Wc);


  
    axe = gp_Ax1(gp_Pnt(290,290.,0.),gp_Dir(0.,1,0.));


  
    TopoDS_Shape S4 = BRepPrimAPI_MakeRevol(F,axe, 90.*PI180); 


  

?

Construction of Primitives in Open Cascade


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 奇米影视亚洲狠狠色777不卡 | 立即播放免费毛片一级 | 国产精品人成福利视频 | 天天做天天爱夜夜爽毛片毛片 | 天天爽天天碰狠狠添 | 国产99精品在线观看 | 日本免费一区二区三区中文 | 大色香蕉色视频大全 | 99青青青精品视频在线 | 精品在线播放 | 精品视频国产 | 国产香蕉免费精品视频 | 亚洲国产成人精品激情 | 国内精品久久久久久久星辰影视 | 色综合合久久天天给综看 | 国产首页精品 | 夜夜艹日日艹 | 欧美黑人激情性久久 | 亚洲国产日产韩国欧美综合 | 四虎www成人影院观看 | 日韩美一区二区 | 一级a欧美毛片 | 奇米最新视频 | 国产日韩一区二区三区在线播放 | 国产www在线观看 | www.亚洲视频| 美女精品 | 九月婷婷综合婷婷 | 国产亚洲欧美久久久久 | 综合久久国产对白 | 日韩成人国产精品视频 | 天天做天天爱夜夜爽女人爽宅 | 日日干夜夜拍 | 狠狠色噜噜| 日日摸夜夜添夜夜添久久 | 亚洲欧洲日韩国产aa色大片 | 我爱52avαv永久网站 | 免费精品国产自产拍观看 | 国产一级精品毛片 | 亚洲欧美香蕉在线日韩精选 | 2022国内精品免费福利视频 |