揚げ3DエンジンOpenCASCADEの使い方と事例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3...)

何のカスケード?
Open CASCADE (略して OCC) プラットフォームは、フランスの Matra Datavision 社によって開発された CAD/CAE/CAM ソフトウェア プラットフォームであり、世界で最も重要な基本的な幾何モデリング ソフトウェア プラットフォームの 1 つと言えます。オープン ソースの OCC オブジェクト ライブラリは、設計分野でプロフェッショナルなアプリケーションを迅速に開発するためのオブジェクト指向 C++ クラス ライブラリです。

以下の 2 つのような多くの 3D モデルの作成に使用できます。簡単に言うと、3D CADやSolidworksなどのソフトウェアを開発することができ、非常に強力だと言えます。

 OpenCASCADE のダウンロードとインストール
1. OpenCASCADE をダウンロードします。
1) 公式 Web サイトにアクセスしてダウンロードします: 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) 次に、完全版であるフルバージョンをインストールし、完了するまで「インストール」をクリックします。

 

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
————————————————
版权声明:本文为CSDN博主「卷积神经网络」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xipengbozai/article/details/117044032

おすすめ

転載: blog.csdn.net/xipengbozai/article/details/117211031