基於OpenCASCADE自制三維建模軟件(七)立方體、圓柱、球、圓錐、圓環


Open CASCADE有現成的模型,包括立方體、圓柱、球、圓錐和圓環等,現製作點擊按鈕生成以上模型。

一、立方體

1.構造

通過OCC的 BRepPrimAPI_MakeBox 類去描述構建平行六面體盒的函數,它提供了四個構造函數:

  • 通過兩個位置確定立方體,一個爲(0,0,0),另一個爲(dx dy dz)
    BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const Standard_Real dx,
    const Standard_Real dy,
    const Standard_Real dz 
    )	
    
  • 通過位置P 和大小 dx, dy, dz 確定立方體
    BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const gp_Pnt& P,
    const Standard_Real dx,
    const Standard_Real dy,
    const Standard_Real dz 
    )	
    
  • 通過P1和P2的位置
    BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const gp_Pnt& P1,
    const gp_Pnt& P2 
    )	
    
  • 通過座標軸Ax2構造一個框,使其邊平行於Ax2
    BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const gp_Ax2& Axes,
    const Standard_Real dx,
    const Standard_Real dy,
    const Standard_Real dz 
    )	
    

2.實例

頭文件

//! 生成立方體
    void make_cube(Standard_Real _dx = 1.0, Standard_Real _dy = 1.0, Standard_Real _dz = 1.0);

實現

void C3DWidget::make_cube(Standard_Real _dx, Standard_Real _dy, Standard_Real _dz)
{
    TopoDS_Shape t_topo_box = BRepPrimAPI_MakeBox(_dx, _dy, _dz).Shape();
    Handle(AIS_Shape) t_ais_box = new AIS_Shape(t_topo_box);
    m_context->Display(t_ais_box, Standard_True);
    m_view->FitAll();
}

在這裏插入圖片描述

二、圓柱

1.構造

BRepPrimAPI_MakeCylinder 提供圓柱模型的構造:

  • 通過半徑R和高度H構造圓柱
    BRepPrimAPI_MakeCylinder::BRepPrimAPI_MakeCylinder(const Standard_Real 	R,
    const Standard_Real 	H 
    )
    

2.實例

頭文件

    //! 生成圓柱
    void make_cylinder(Standard_Real _R = 0.5,  Standard_Real _H = 2.0);

實現

void C3DWidget::make_cylinder(Standard_Real _R, Standard_Real _H)
{
    TopoDS_Shape t_topo_cylinder = BRepPrimAPI_MakeCylinder(_R , _H).Shape();
    Handle(AIS_Shape) t_ais_cylinder = new AIS_Shape(t_topo_cylinder);
    m_context->Display(t_ais_cylinder, Standard_True);
    m_view->FitAll();
}

在這裏插入圖片描述

三、球

1.構造

BRepPrim_Sphere 提供球體模型的構造:

  • 在原點創建一個半徑爲Radius的球體
    BRepPrim_Sphere::BRepPrim_Sphere(const Standard_Real Radius)
    
  • 創建圓心爲Center 半徑爲 Radius 的球體
    BRepPrim_Sphere::BRepPrim_Sphere(const gp_Pnt& Center,
    const Standard_Real Radius 
    )	
    

2.實例

頭文件

    //! 球體
    void make_sphere(Standard_Real _R = 1.0);

實現

void C3DWidget::make_sphere(Standard_Real _R)
{
    TopoDS_Shape t_topo_sphere = BRepPrimAPI_MakeSphere(_R).Shape();
    Handle(AIS_Shape) t_ais_sphere = new AIS_Shape(t_topo_sphere);
    m_context->Display(t_ais_sphere, Standard_True);
    m_view->FitAll();
}

在這裏插入圖片描述

四、圓錐

1.構造

BRepPrimAPI_MakeCone 提供圓錐模型的構造:

  • 構造一個圓錐,高度爲H,在Z=0的平面上半徑爲R1,在Z=H平面上,半徑爲R2,且R1和R2可以爲零
    BRepPrimAPI_MakeCone::BRepPrimAPI_MakeCone(const Standard_Real R1,
    const Standard_Real R2,
    const Standard_Real H 
    )	
    

2.實例

頭文件

    //! 生成圓錐
    void make_cone(Standard_Real _R1 = 1.0, Standard_Real _R2 = 0.0, Standard_Real _H = 2.0);

實現

void C3DWidget::make_cone(Standard_Real _R1, Standard_Real _R2, Standard_Real _H)
{
    TopoDS_Shape t_topo_cone = BRepPrimAPI_MakeCone(_R1,_R2,_H).Shape();
    Handle(AIS_Shape) t_ais_cone = new AIS_Shape(t_topo_cone);
    m_context->Display(t_ais_cone, Standard_True);
    m_view->FitAll();
}

在這裏插入圖片描述

五、圓環

1.構造

BRepPrimAPI_MakeTorus 提供圓環模型的構造:

  • 通過半徑R1和R2構造圓環
    BRepPrimAPI_MakeTorus::BRepPrimAPI_MakeTorus(const Standard_Real R1,
    const Standard_Real R2 
    )
    

2.實例

頭文件

    //! 生成圓環體
    void make_torus(Standard_Real _R1 =2.0, Standard_Real _R2 = 0.5);

實現

void C3DWidget::make_torus(Standard_Real _R1, Standard_Real _R2)
{
    TopoDS_Shape t_topo_torus = BRepPrimAPI_MakeTorus(_R1 ,_R2).Shape();
    Handle(AIS_Shape) t_ais_torus = new AIS_Shape(t_topo_torus);
    m_context->Display(t_ais_torus, Standard_True);
    m_view->FitAll();
}

在這裏插入圖片描述

項目倉庫

https://github.com/Jelatine/JellyCAD

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章