ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

屌炸天的3D引擎OpenCASCADE的用法及案例(转载之处:)

2021-05-23 14:04:31  阅读:642  来源: 互联网

标签:MFC Handle lib 炸天 OpenCASCADE download include 3D


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

标签:MFC,Handle,lib,炸天,OpenCASCADE,download,include,3D
来源: https://www.cnblogs.com/huipengbo/p/14801030.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有