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

屌炸天的3D引擎OpenCASCADE的用法及案例(转载之处:)的更多相关文章

  1. 炸天的3D引擎OpenCASCADE的用法及案例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3001.5502)

    What CASCADE?Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一.开 ...

  2. 支持Android 的几款开源3D引擎调研

    最近由于工作需要,对支持Android的一些开源3D引擎做了调研,结果如下: 1.Ogre 十分强大的一款3D引擎,号称工业级标准的开源项目,不仅可以用于游戏,还可以用于其他和3D相关的软件.大多数该 ...

  3. 从0开发3D引擎(四):搭建测试环境

    目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测 ...

  4. 关于如何学好游戏3D引擎编程的一些经验[转]

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...

  5. 万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》

    ds max文件夹,插件文件夹以及3ds max的可执行程序文件夹: 位的,这里要改成x64,否则启动程序后3ds max会提示"不是有效的win32程序"之类的对话框. 然后要将 ...

  6. 来手撸一个小小小小小"3D引擎"

    开始的唠叨 说是3D引擎确实有点过于博眼球了,其实就是实现了一个透视投影,当然也不是那么简单的. 此篇文章是纯粹给小白看的 高手请勿喷 .也称之为小向带你图形学入门基础 . 哇哈哈哈哈 一说到做一个3 ...

  7. Flash Alternativa 3D引擎-基础理论

    自由行走的花 网站设计,flash网站设计与动画制作,web,as3 2010-12-31 14:29 [转]Flash Alternativa 3D引擎-基础理论 <本文转载自:http:// ...

  8. 如何学好游戏3D引擎编程

    注:本文是网上看到的一篇文章,感觉写的很好,因此收藏了下来 <如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才 ...

  9. 转:典型开源3D引擎分类比较

    常见的3D引擎有:Unreal.Quake.Lithtech.OGRE.Nebula.Irrlicht.Truevision3D... 其中开源免费的有:OGRE.irrlicht.fly3d.Neo ...

随机推荐

  1. PureMVC学习笔记

    一.简介 PureMVC是基于MVC思想和一些基础设计模式建立的一个轻量级的应用框架,免费开源,最初是执行的ActionScript 3语言使用,现在已经移植到几乎所有主流平台.PureMVC官方网站 ...

  2. 简易计算器实现:while循环+switch语句

    个人练习: 写一个计算器,要求实现加减乘除功能,并且能循环接收新的数据,通过用户交互实现(即Scanner对象) 用到了 while循环 switch语句,实现了数据的循环输入并计算!!!!妙啊!!! ...

  3. Async Cow Python 七牛异步SDK

    # Async Cow Python 七牛异步SDK > gitee链接 >github链接本SDK基于官方SDK改造而成,但又对其进行了进一步封装,简化了相关操作例如:- 1.不需要使用 ...

  4. 使用KeepAlived来实现高可用的DR模型

    环境 VMware 16 CentOS8 相关软件 keepalived ipvsadm httpd 准备工作 准备四个节点,如上图,Node01 ~ Node04, 本文默认你会在VMWare上安装 ...

  5. 【剑指offer】9:变态跳台阶

    题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路: 先考虑最简单情况就是只有一级台阶,仅有一种跳法.两级台阶,有两种 ...

  6. JavaScript中的new,bind,call,apply的简易实现

    Function原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础扎实,绕 ...

  7. ssh+scp基本使用

    1 ssh ssh一般用于连接服务器,可以使用密码认证与密钥认证的方式. 1.1 密码认证 直接使用ssh即可: ssh username@xxx.xxx.xxx.xxx username为用户名,后 ...

  8. 大话数据结构.epub

    电子书资源:大话数据结构 书籍简介   本书为超级畅销书<大话设计模式>作者程杰潜心三年推出的扛鼎之作!通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体 ...

  9. 浅谈synchronized和volatitle实现线程安全的策略

    什么是线程不安全 我对线程安全的理解就是多个线程同时操作一个共享变量时会产生意料之外的情况,这种情况就是线程不安全.注意:只有写操作才可能出现线程不安全,对共享变量只进行读操作线程是绝对安全的. 具体 ...

  10. 『政善治』Postman工具 — 1、Postman介绍与安装

    目录 一.Postman介绍 二.Postman下载与安装 1.Postman下载 2.Postman安装 3.为什么要注册Postman账号 一.Postman介绍 Postman是一款非常流行的H ...