zoukankan      html  css  js  c++  java
  • 屌炸天的3D引擎OpenCASCADE的用法及案例(转载之处:)

    What CASCADE?
    Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。开源OCC对象库是一个面向对象C++类库,用于快速开发设计领域的专业应用程序。

    用它可以做很多三维模型,如下面两种。简单地说它可以开发三维CAD或者Solidworks等等软件,可以说强大无比。

    OpenCASCADE的下载与安装
    1.OpenCASCADE下载。
    1)去官网下载:https://dev.opencascade.org/release

    2)去CSDN下载:https://download.csdn.net/download/xipengbozai/18883824

    3)下载你需要的版本,推荐下载安装版,比较省事:https://download.csdn.net/download/xipengbozai/18883824

    2.OpenCASCADE安装。
    1)匹配VS版本,我的是VS2017 64位版本,所以安装的是opencascade-7.4.0-vc14-64.exe

    2)单机安装,选择下一步

    3)然后安装full版本,也就是完全版,单击安装直到完成即可。

    4)安装完的目录效果,opencascade-7.4.0是主目录,其他是附加库

    OpenCASCADE的用法
    1.建立项目工程,包含目录

    2.添加库目录,如下所示

    3.链接器-输入-附加依赖项输入如下项

    TKBin.lib
    TKBinL.lib
    TKBinTObj.lib
    TKBinXCAF.lib
    TKBO.lib
    TKBool.lib
    TKBRep.lib
    TKCAF.lib
    TKCDF.lib
    TKD3DHost.lib
    TKDCAF.lib
    TKDFBrowser.lib
    TKDraw.lib
    TKernel.lib
    TKFeat.lib
    TKFillet.lib
    TKG2d.lib
    TKG3d.lib
    TKGeomAlgo.lib
    TKGeomBase.lib
    TKHLR.lib
    TKIGES.lib
    TKIVtk.lib
    TKIVtkDraw.lib
    TKLCAF.lib
    TKMath.lib
    TKMesh.lib
    TKMeshVS.lib
    TKOffset.lib
    TKOpenGl.lib
    TKPrim.lib
    TKQADraw.lib
    TKRWMesh.lib
    TKService.lib
    TKShapeView.lib
    TKShHealing.lib
    TKStd.lib
    TKStdL.lib
    TKSTEP.lib
    TKSTEP209.lib
    TKSTEPAttr.lib
    TKSTEPBase.lib
    TKSTL.lib
    TKTInspector.lib
    TKTInspectorAPI.lib
    TKTObj.lib
    TKTObjDRAW.lib
    TKToolsDraw.lib
    TKTopAlgo.lib
    TKTopTest.lib
    TKTreeModel.lib
    TKV3d.lib
    TKVCAF.lib
    TKView.lib
    TKViewerTest.lib
    TKVInspector.lib
    TKVRML.lib
    TKXCAF.lib
    TKXDEDRAW.lib
    TKXDEIGES.lib
    TKXDESTEP.lib
    TKXMesh.lib
    TKXml.lib
    TKXmlL.lib
    TKXmlTObj.lib
    TKXmlXCAF.lib
    TKXSBase.lib
    TKXSDRAW.lib

    4.添加头文件,一定要注意添加位置,#include <afxdisp.h>        // MFC 自动化类之后,#ifndef _AFX_NO_OLE_SUPPORT之前的中间。

    include <BRepTools.hxx>

    include <Standard_DefineHandle.hxx>

    include <DsgPrs_LengthPresentation.hxx>

    include <GCPnts_TangentialDeflection.hxx>

    include <Geom_Axis2Placement.hxx>

    include <Geom_CartesianPoint.hxx>

    include <Geom_Line.hxx>

    include <Geom_Surface.hxx>

    include <BRepAdaptor_Surface.hxx>

    include <GeomAbs_CurveType.hxx>

    include <GeomAdaptor_Curve.hxx>

    include <GeomTools_Curve2dSet.hxx>

    include <gp_Vec.hxx>

    include <Graphic3d_NameOfMaterial.hxx>

    include <MMgt_TShared.hxx>

    include <OSD_Environment.hxx>

    include <Precision.hxx>

    include <Prs3d_IsoAspect.hxx>

    include <Prs3d_LineAspect.hxx>

    include <Prs3d_Projector.hxx>

    include <Prs3d_Text.hxx>

    include <Quantity_Factor.hxx>

    include <Quantity_Length.hxx>

    include <Quantity_NameOfColor.hxx>

    include <Quantity_PhysicalQuantity.hxx>

    include <Quantity_PlaneAngle.hxx>

    include <Quantity_TypeOfColor.hxx>

    include <SelectMgr_EntityOwner.hxx>

    include <SelectMgr_SelectableObject.hxx>

    include <SelectMgr_Selection.hxx>

    include <SelectMgr_SelectionManager.hxx>

    include <SelectMgr_ListOfFilter.hxx>

    include <SelectMgr_Filter.hxx>

    include <StdSelect_EdgeFilter.hxx>

    include <StdSelect_ShapeTypeFilter.hxx>

    include <Standard_Boolean.hxx>

    include <Standard_CString.hxx>

    include <Standard_ErrorHandler.hxx>

    include <Standard_Integer.hxx>

    include <Standard_IStream.hxx>

    include <Standard_Macro.hxx>

    include <Standard_NotImplemented.hxx>

    include <Standard_OStream.hxx>

    include <Standard_Real.hxx>

    include <StdPrs_Curve.hxx>

    include <StdPrs_Point.hxx>

    include <StdPrs_PoleCurve.hxx>

    include <TCollection_AsciiString.hxx>

    include <TColgp_Array1OfPnt2d.hxx>

    include <TColgp_HArray1OfPnt2d.hxx>

    include <TCollection_AsciiString.hxx>

    include <TColStd_HSequenceOfTransient.hxx>

    include <TColStd_MapIteratorOfMapOfTransient.hxx>

    include <TColStd_MapOfTransient.hxx>

    include <TopExp_Explorer.hxx>

    include <TopoDS.hxx>

    include <TopoDS_Compound.hxx>

    include <TopoDS_Shape.hxx>

    include <TopoDS_Solid.hxx>

    include <TopoDS_Vertex.hxx>

    include <TopExp.hxx>

    include <TopTools_HSequenceOfShape.hxx>

    include <UnitsAPI.hxx>

    include <V3d_View.hxx>

    include <V3d_Viewer.hxx>

    include <WNT_Window.hxx>

    include <Prs3d_PointAspect.hxx>

    include <AIS_Point.hxx>

    include <AIS_InteractiveContext.hxx>

    include <AIS_Shape.hxx>

    include <BRep_Tool.hxx>

    include <BRepAlgoAPI_Fuse.hxx>

    include <BRepBuilderAPI_MakeEdge.hxx>

    include <BRepBuilderAPI_MakeFace.hxx>

    include <BRepBuilderAPI_MakeWire.hxx>

    include <BRepBuilderAPI_MakeVertex.hxx>

    include <BRepBuilderAPI_Transform.hxx>

    include <BRepPrimAPI_MakeCone.hxx>

    include <BRepPrimAPI_MakeRevol.hxx>

    include <BRepFilletAPI_MakeFillet.hxx>

    include <BRepBuilderAPI_Copy.hxx>

    include <BRepBuilderAPI_MakePolygon.hxx>

    include <BRepLib.hxx>

    include <BRepOffsetAPI_MakeThickSolid.hxx>

    include <BRepOffsetAPI_ThruSections.hxx>

    include <BRepPrimAPI_MakeCylinder.hxx>

    include <BRepPrimAPI_MakePrism.hxx>

    include <BRepPrimAPI_MakeTorus.hxx>

    include <BRepAlgoAPI_Section.hxx>

    include <BRepPrimAPI_MakeSphere.hxx>

    include <BRepFeat_SplitShape.hxx>

    include <TColgp_HArray1OfPnt.hxx>

    include <GeomAPI_Interpolate.hxx>

    include <GC_MakeArcOfCircle.hxx>

    include <GC_MakeSegment.hxx>

    include <GC_MakeCircle.hxx>

    include <GCE2d_MakeSegment.hxx>

    include <gp.hxx>

    include <gp_Ax1.hxx>

    include <gp_Ax2.hxx>

    include <gp_Ax2d.hxx>

    include <gp_Dir.hxx>

    include <gp_Dir2d.hxx>

    include <gp_Pnt.hxx>

    include <gp_Pnt2d.hxx>

    include <gp_Trsf.hxx>

    include <gp_Vec.hxx>

    include <Geom_CylindricalSurface.hxx>

    include <Geom_Plane.hxx>

    include <Geom_Surface.hxx>

    include <Geom_TrimmedCurve.hxx>

    include <Geom2d_Ellipse.hxx>

    include <Geom2d_TrimmedCurve.hxx>

    include <TopExp_Explorer.hxx>

    include <TopoDS.hxx>

    include <TopoDS_Edge.hxx>

    include <TopoDS_Face.hxx>

    include <TopoDS_Wire.hxx>

    include <TopoDS_Shape.hxx>

    include <TopoDS_Compound.hxx>

    include <GCPnts_AbscissaPoint.hxx>

    include <BRepAdaptor_Curve.hxx>

    include <GeomLib.hxx>

    include <GeomConvert_CompCurveToBSplineCurve.hxx>

    include <TopTools_ListOfShape.hxx>

    include <TopTools_ListIteratorOfListOfShape.hxx>

    include <TopTools_DataMapOfShapeInteger.hxx>

    include <TopTools_DataMapOfShapeReal.hxx>

    include <TopTools_IndexedDataMapOfShapeAddress.hxx>

    include <V3d_PositionalLight.hxx>

    include <V3d_DirectionalLight.hxx>

    include <V3d_AmbientLight.hxx>

    include <IGESControl_Controller.hxx>

    include <IGESControl_Writer.hxx>

    include <Interface_Static.hxx>

    include <OpenGl_GraphicDriver.hxx>

    include <Graphic3d_GraphicDriver.hxx>

    OpenCASCADE开发案例
    1.建立MFC工程

    2.stdafx.h头文件中包含OpenCASCADE头文件

    // stdafx.h : 标准系统包含文件的包含文件,
    // 或是经常使用但不常更改的
    // 特定于项目的包含文件

    pragma once

    ifndef VC_EXTRALEAN

    define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料

    endif

    include "targetver.h"

    define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的

    // 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏

    define _AFX_ALL_WARNINGS

    include <afxwin.h> // MFC 核心组件和标准组件

    include <afxext.h> // MFC 扩展

    include <afxdisp.h> // MFC 自动化类

    include <BRepTools.hxx>

    include <Standard_DefineHandle.hxx>

    include <DsgPrs_LengthPresentation.hxx>

    include <GCPnts_TangentialDeflection.hxx>

    include <Geom_Axis2Placement.hxx>

    include <Geom_CartesianPoint.hxx>

    include <Geom_Line.hxx>

    include <Geom_Surface.hxx>

    include <BRepAdaptor_Surface.hxx>

    include <GeomAbs_CurveType.hxx>

    include <GeomAdaptor_Curve.hxx>

    include <GeomTools_Curve2dSet.hxx>

    include <gp_Vec.hxx>

    include <Graphic3d_NameOfMaterial.hxx>

    include <MMgt_TShared.hxx>

    include <OSD_Environment.hxx>

    include <Precision.hxx>

    include <Prs3d_IsoAspect.hxx>

    include <Prs3d_LineAspect.hxx>

    include <Prs3d_Projector.hxx>

    include <Prs3d_Text.hxx>

    include <Quantity_Factor.hxx>

    include <Quantity_Length.hxx>

    include <Quantity_NameOfColor.hxx>

    include <Quantity_PhysicalQuantity.hxx>

    include <Quantity_PlaneAngle.hxx>

    include <Quantity_TypeOfColor.hxx>

    include <SelectMgr_EntityOwner.hxx>

    include <SelectMgr_SelectableObject.hxx>

    include <SelectMgr_Selection.hxx>

    include <SelectMgr_SelectionManager.hxx>

    include <SelectMgr_ListOfFilter.hxx>

    include <SelectMgr_Filter.hxx>

    include <StdSelect_EdgeFilter.hxx>

    include <StdSelect_ShapeTypeFilter.hxx>

    include <Standard_Boolean.hxx>

    include <Standard_CString.hxx>

    include <Standard_ErrorHandler.hxx>

    include <Standard_Integer.hxx>

    include <Standard_IStream.hxx>

    include <Standard_Macro.hxx>

    include <Standard_NotImplemented.hxx>

    include <Standard_OStream.hxx>

    include <Standard_Real.hxx>

    include <StdPrs_Curve.hxx>

    include <StdPrs_Point.hxx>

    include <StdPrs_PoleCurve.hxx>

    include <TCollection_AsciiString.hxx>

    include <TColgp_Array1OfPnt2d.hxx>

    include <TColgp_HArray1OfPnt2d.hxx>

    include <TCollection_AsciiString.hxx>

    include <TColStd_HSequenceOfTransient.hxx>

    include <TColStd_MapIteratorOfMapOfTransient.hxx>

    include <TColStd_MapOfTransient.hxx>

    include <TopExp_Explorer.hxx>

    include <TopoDS.hxx>

    include <TopoDS_Compound.hxx>

    include <TopoDS_Shape.hxx>

    include <TopoDS_Solid.hxx>

    include <TopoDS_Vertex.hxx>

    include <TopExp.hxx>

    include <TopTools_HSequenceOfShape.hxx>

    include <UnitsAPI.hxx>

    include <V3d_View.hxx>

    include <V3d_Viewer.hxx>

    include <WNT_Window.hxx>

    include <Prs3d_PointAspect.hxx>

    include <AIS_Point.hxx>

    include <AIS_InteractiveContext.hxx>

    include <AIS_Shape.hxx>

    include <BRep_Tool.hxx>

    include <BRepAlgoAPI_Fuse.hxx>

    include <BRepBuilderAPI_MakeEdge.hxx>

    include <BRepBuilderAPI_MakeFace.hxx>

    include <BRepBuilderAPI_MakeWire.hxx>

    include <BRepBuilderAPI_MakeVertex.hxx>

    include <BRepBuilderAPI_Transform.hxx>

    include <BRepPrimAPI_MakeCone.hxx>

    include <BRepPrimAPI_MakeRevol.hxx>

    include <BRepFilletAPI_MakeFillet.hxx>

    include <BRepBuilderAPI_Copy.hxx>

    include <BRepBuilderAPI_MakePolygon.hxx>

    include <BRepLib.hxx>

    include <BRepOffsetAPI_MakeThickSolid.hxx>

    include <BRepOffsetAPI_ThruSections.hxx>

    include <BRepPrimAPI_MakeCylinder.hxx>

    include <BRepPrimAPI_MakePrism.hxx>

    include <BRepPrimAPI_MakeTorus.hxx>

    include <BRepAlgoAPI_Section.hxx>

    include <BRepPrimAPI_MakeSphere.hxx>

    include <BRepFeat_SplitShape.hxx>

    include <TColgp_HArray1OfPnt.hxx>

    include <GeomAPI_Interpolate.hxx>

    include <GC_MakeArcOfCircle.hxx>

    include <GC_MakeSegment.hxx>

    include <GC_MakeCircle.hxx>

    include <GCE2d_MakeSegment.hxx>

    include <gp.hxx>

    include <gp_Ax1.hxx>

    include <gp_Ax2.hxx>

    include <gp_Ax2d.hxx>

    include <gp_Dir.hxx>

    include <gp_Dir2d.hxx>

    include <gp_Pnt.hxx>

    include <gp_Pnt2d.hxx>

    include <gp_Trsf.hxx>

    include <gp_Vec.hxx>

    include <Geom_CylindricalSurface.hxx>

    include <Geom_Plane.hxx>

    include <Geom_Surface.hxx>

    include <Geom_TrimmedCurve.hxx>

    include <Geom2d_Ellipse.hxx>

    include <Geom2d_TrimmedCurve.hxx>

    include <TopExp_Explorer.hxx>

    include <TopoDS.hxx>

    include <TopoDS_Edge.hxx>

    include <TopoDS_Face.hxx>

    include <TopoDS_Wire.hxx>

    include <TopoDS_Shape.hxx>

    include <TopoDS_Compound.hxx>

    include <GCPnts_AbscissaPoint.hxx>

    include <BRepAdaptor_Curve.hxx>

    include <GeomLib.hxx>

    include <GeomConvert_CompCurveToBSplineCurve.hxx>

    include <TopTools_ListOfShape.hxx>

    include <TopTools_ListIteratorOfListOfShape.hxx>

    include <TopTools_DataMapOfShapeInteger.hxx>

    include <TopTools_DataMapOfShapeReal.hxx>

    include <TopTools_IndexedDataMapOfShapeAddress.hxx>

    include <V3d_PositionalLight.hxx>

    include <V3d_DirectionalLight.hxx>

    include <V3d_AmbientLight.hxx>

    include <IGESControl_Controller.hxx>

    include <IGESControl_Writer.hxx>

    include <Interface_Static.hxx>

    include <OpenGl_GraphicDriver.hxx>

    include <Graphic3d_GraphicDriver.hxx>

    ifndef _AFX_NO_OLE_SUPPORT

    include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持

    endif

    ifndef _AFX_NO_AFXCMN_SUPPORT

    include <afxcmn.h> // MFC 对 Windows 公共控件的支持

    endif // _AFX_NO_AFXCMN_SUPPORT

    include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持

    ifdef _UNICODE

    if defined _M_IX86

    pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"")

    elif defined _M_X64

    pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'"")

    else

    pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='' publicKeyToken='6595b64144ccf1df' language=''"")

    endif

    endif

    3.mfcoccc.h文件中创建三维引擎句柄,

    Handle(Graphic3d_GraphicDriver) m_GraphicDriver;
    Handle(Graphic3d_GraphicDriver) GetGraphicDriver() { return m_GraphicDriver; }
    

    4.mfcocccDoc.h文件中声明上下文和显示view句柄,绘图函数声明

    Handle(AIS_InteractiveContext) myAISContext;
    Handle(V3d_Viewer) myViewer;
    Handle(V3d_Viewer) GetViewer(void) { return myViewer; }
    
    void DrawSphere(double Radius);  
    
    void DrawBox(double MyHeight,double MyWidth,double MyThickness);  //画盒子
    

    5.mfcocccView.h中声明视图句柄

    Handle(V3d_View) myView;
    6.实现代码较多,这里就不一一列出来了

    7.案例达到的效果如下,是一个立体的空瓶子。

    源码下载地址:https://download.csdn.net/download/xipengbozai/18884650

    需要程序源码的可以加我微信x241602私聊。
  • 相关阅读:
    二十四种设计模式:观察者模式(Observer Pattern)
    二十四种设计模式:工厂方法模式(Factory Method Pattern)
    Java迷题:等于,还是不等于?
    UCenter创始人、Discuz!创始人、管理员账号的认知(转)
    Internet Explorer 无法启用 JavaScript 怎么办?
    IIS配置PHP环境(快速最新版)(转载+自创)
    零基础学php的自学
    PHP实体层基础类
    PHP数据库链接类(PDO+Access)
    C# Memcached 缓存
  • 原文地址:https://www.cnblogs.com/huipengbo/p/14801030.html
Copyright © 2011-2022 走看看