欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Construction of Primitives in Open Cascade

系統(tǒng) 2031 0

Construction of Primitives in Open Cascade

eryar @ 163 . com

一、創(chuàng)建基本圖元 Making Primitives

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

Construction of Primitives in Open Cascade

使用方法都是調(diào)用這些類的構(gòu)造函數(shù),輸入相應(yīng)的參數(shù),直接構(gòu)造出基本圖元。構(gòu)造函數(shù)的參數(shù)不同,創(chuàng)建的基本幾何實(shí)體的形狀也會不同。?

注:所有旋轉(zhuǎn)體的角度值都是弧度值。

1. 創(chuàng)建長方體 BRepPrimAPI _ MakeBox

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

Construction of Primitives in Open Cascade

以上創(chuàng)建方式對應(yīng)類的 BRepPrimAPI _ MakeBox 的四種構(gòu)造函數(shù):

    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

與上圖對應(yīng)的創(chuàng)建長方體的代碼如下所示:

    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. 創(chuàng)建楔形體 BRepPrimAPI _ MakeWedge

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

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

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

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

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 是所有旋轉(zhuǎn)體圖元的基類。旋轉(zhuǎn)體通過將曲線繞一個軸旋轉(zhuǎn)得到。它們有圓柱體、圓錐體、球體、圓環(huán)體等。?

這些旋轉(zhuǎn)體對于不同的圖元有不同的構(gòu)造參數(shù),但是它們也有共同的參數(shù):?

l 一個坐標(biāo)系統(tǒng);?

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

l 曲線的 vmin vmax 參數(shù);?

OneAxis 構(gòu)造的結(jié)果是體 Solid 、殼 Shell 或面 Face 。?

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

Construction of Primitives in Open Cascade

如下圖所示描述了類的參數(shù):?

Construction of Primitives in Open Cascade

4. 創(chuàng)建圓柱體 BRepPrimAPI _ MakeCylinder

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

l 半徑、高度創(chuàng)建一個完整的圓柱;?

l 半徑、高度及角度來創(chuàng)建部分圓柱;?

如下代碼所示為沿 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. 創(chuàng)建圓錐體 BRepPrimAPI _ MakeCone

使用類 BRepPrimAPI _ MakeCone 來創(chuàng)建圓錐體。與圓柱體一樣,圓錐體可以在默認(rèn)的坐標(biāo)系中被創(chuàng)建,也可以指定的坐標(biāo)系中被創(chuàng)建。創(chuàng)建方式如下:?

l 兩個半徑和高度來創(chuàng)建一個完整的圓錐。一個半徑可以為零,這樣就創(chuàng)建了一個尖頂?shù)膱A錐;?

l 半徑、高度和角度來創(chuàng)建部分圓錐。?

如下代碼創(chuàng)建的圓錐如下圖所示:

    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. 創(chuàng)建球體 BRepPrimAPI _ MakeSphere

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

l 一個半徑值,創(chuàng)建一個完整的球體;?

l 半徑和角度,創(chuàng)建部分的球體;?

l 半徑和兩個角度值,創(chuàng)建緯度上的部分的球體。兩個角度 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

實(shí)現(xiàn)上圖中球體的代碼如下:

    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. 創(chuàng)建圓環(huán)體 BRepPrimAPI _ MakeTorus

使用類 BRepPrimAPI _ MakeTorus 來創(chuàng)建圓環(huán)體。與其它基本圖元類似,一個圓環(huán)體可以在默認(rèn)的坐標(biāo)系中創(chuàng)建,也可以在指定的坐標(biāo)系中創(chuàng)建。創(chuàng)建與與球體創(chuàng)建方式類似:?

l 兩個半徑,創(chuàng)建一個完整的圓環(huán)體;?

l 兩個半徑和一個角度值,創(chuàng)建部分的圓環(huán)體;?

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

l 兩個半徑和三個角度值,創(chuàng)建部分的圓環(huán)體;?

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. 創(chuàng)建旋轉(zhuǎn)體 BRepPrimAPI _ MakeRevolution

使用類 BRepPrimAPI _ MakeRevolution 來根據(jù)一條曲線和軸創(chuàng)建旋轉(zhuǎn)體。曲線可以是任意的 Geom _ Curve ,有四種構(gòu)造方式:?

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 .?

??

二、創(chuàng)建掃掠體 Sweeping : Prism , Revolution and Pipe

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

l 點(diǎn)掃掠后得到邊; 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 中實(shí)現(xiàn)了三種掃掠體:稱線性掃掠體為 Prism ,稱旋轉(zhuǎn)掃掠體為 Revol 和通用的掃掠體叫作 Pipe 。?

1. BRepPrimAPI _ MakeSweep

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

Construction of Primitives in Open Cascade

2. 創(chuàng)建拉伸體 BRepPrimAPI _ MakePrism

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

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. 創(chuàng)建旋轉(zhuǎn)體 BRepPrimAPI _ MakeRevol

使用類 BRepPrimAPI _ MakeRevol 來創(chuàng)建旋轉(zhuǎn)掃掠體。旋轉(zhuǎn)掃掠體由一個形狀、軸和一個角度構(gòu)造而得。類 BRepPrimAPI _ MakeRevol 所有的構(gòu)造函數(shù)的最后一個參數(shù)是用來控制構(gòu)造的形狀與原形狀的關(guān)系,默認(rèn)為共享的方式。?

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美在线观看a | 伦理午夜电影免费观看 | 一区高清 | 久久999 | 精品久久久av | 成人欧美一区二区三区 | 日韩精品视频免费在线观看 | 小明永久成人一区二区 | 狠狠色婷婷丁香六月 | 国产一区久久 | 99久久精品久久久久久清纯 | 男人与女人做爰毛片A片 | 一区二区成人国产精品 | 国产午夜小视频 | 亚洲欧美中文日韩在线v日本 | 午夜影院在线播放 | 四虎永久免费网站入口2020 | 欧美视频一区 | 国产亚洲精品久久久久久久网站 | 久久无码人妻中文国产 | 国产九一精品 | 久久免费视频在线 | 奇米中文字幕 | 啪啪激情婷婷久久婷婷色五月 | 男女视频在线免费观看 | 久久99精品久久久久久 | 精品欧美成人高清视频在线观看 | 久久久久国产精品免费免费搜索 | 日韩亚洲人成网站在线播放 | 狠狠躁夜夜躁人人爽天天高潮 | 日本在线观看免费视频 | 毛片精品 | 亚洲午夜无码毛片AV久久 | 欧美中文在线观看 | 亚洲电影免费 | 亚洲免费在线视频 | 在线观看日韩 | 91在线视频 | 欧美受xxxx黑人xyx爽 | 天天在线综合网 | 一区二区欧美在线 |