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.链接器-输入-附加依赖项输入如下项
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文件中创建三维引擎句柄,
4.mfcocccDoc.h文件中声明上下文和显示view句柄,绘图函数声明
Handle(V3d_View) myView;6.实现代码较多,这里就不一一列出来了
7.案例达到的效果如下,是一个立体的空瓶子。
源码载地址:https://download.csdn.net/download/xipengbozai/18884650
————————————————
版权声明:本文为CSDN博主「卷积神经网络」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xipengbozai/article/details/117044032