1.下载
1.1. 安装程序 OpenCASCADExxx.exe(xxx为最新版本号,下同):
http://www.opencascade.org/getocc/download/loadocc/
1.2.文档OCCTDocumentationxxx.exe(xxx为最新版本号,下同):
http://www.opencascade.org/getocc/download/loadocc/
2.安装
2.1. 安装在默认路径:
OpenCASCADExxx.exe > C:\OpenCASCADEx.x.x
OCCTDocumentationxxx.exe > C:\OCCTDocumentationx.x.x
2.2. 配置OpenCASCADE环境变量:
双击 C:\OpenCASCADE6.5.4\ros\env.bat 重启电脑
3.配置VS20xx:
3.1. 复制头文件:
C:\OpenCASCADEx.x.x\ros\inc 中所有文件复制到:X:\Program Files\Microsoft Visual Studio xx.0\VC\include
3.2. 复制库文件:
C:\OpenCASCADEx.x.x\ros\win32\vc9\lib 中所有文件复制到:C:\Program Files\Microsoft Visual Studio xx.0\VC\lib
3.3. 复制Bin文件:
C:\OpenCASCADEx.x.x\ros\win32\vc9\bin 中所有文件复制到:C:\Windows\System32
说明:用复制的方法可以省略VS中的部分配置工作,在OpenCASCADE版本升级之后要重新手动覆盖
4.建立测试MFC单文档程序:
4.1. 新建工程:
VS20xx新建MFC 单文档工程MyOcc。
(VS2012)工程右键 > 属性 > 配置属性 > C/C++ > 命令行 > 输入:/DWNT
4.2. 链接库文件:
(VS2008)工程右键 > 属性 > 配置属性 > Linker > Input > Additional Dependencies > 输入:
(VS2012)工程右键 > 属性 > 配置属性 > 链接器 > 输入 > 附加依赖项 > 输入:
- DRAWEXE.lib
- FWOSPlugin.lib
- PTKernel.lib
- TKAdvTools.lib
- TKBin.lib
- TKBinL.lib
- TKBinTObj.lib
- TKBinXCAF.lib
- TKBO.lib
- TKBool.lib
- TKBRep.lib
- TKCAF.lib
- TKCDF.lib
- TKDCAF.lib
- TKDraw.lib
- TKernel.lib
- TKFeat.lib
- TKFillet.lib
- TKG2d.lib
- TKG3d.lib
- TKGeomAlgo.lib
- TKGeomBase.lib
- TKHLR.lib
- TKIGES.lib
- TKLCAF.lib
- TKMath.lib
- TKMesh.lib
- TKMeshVS.lib
- TKNIS.lib
- TKOffset.lib
- TKOpenGl.lib
- TKPCAF.lib
- TKPLCAF.lib
- TKPrim.lib
- TKPShape.lib
- TKQADraw.lib
- TKService.lib
- TKShapeSchema.lib
- TKShHealing.lib
- TKStdLSchema.lib
- TKStdSchema.lib
- TKSTEP.lib
- TKSTEP209.lib
- TKSTEPAttr.lib
- TKSTEPBase.lib
- TKSTL.lib
- TKTObj.lib
- TKTObjDRAW.lib
- TKTopAlgo.lib
- TKTopTest.lib
- TKV2d.lib
- TKV3d.lib
- TKViewerTest.lib
- TKVoxel.lib
- TKVRML.lib
- TKXCAF.lib
- TKXCAFSchema.lib
- TKXDEDRAW.lib
- TKXDEIGES.lib
- TKXDESTEP.lib
- TKXMesh.lib
- TKXml.lib
- TKXmlL.lib
- TKXmlTObj.lib
- TKXmlXCAF.lib
- TKXSBase.lib
- TKXSDRAW.lib
说明:这里是C:\OpenCASCADE6.5.4\ros\win32\vc9\lib下的所有文件列表
4.3. 在StdAfx.h头文件中添加OpenCascade头文件:
- //////////////////////////////////////////////////////////////////////////
- #pragma warning( disable : 4244 ) // Issue warning 4244
- #pragma warning( disable : 4312 ) // Issue warning 4312
- #pragma warning( disable : 4267 ) // Issue warning 4312
- #include "Standard_ShortReal.hxx"
- #pragma warning( default : 4244 ) // Issue warning 4244
- #include <V2d_Viewer.hxx>
- #include <V2d_View.hxx>
- #include <AIS2D_InteractiveContext.hxx>
- #include <WNT_WDriver.hxx>
- #include <Standard.hxx>
- #include <AIS_InteractiveContext.hxx>
- #include <AIS_Shape.hxx>
- #include <Graphic3d_WNTGraphicDevice.hxx>
- #include <V3d_Viewer.hxx>
- #include <V3d_View.hxx>
- #include <WNT_Window.hxx>
- #include <AIS2D_InteractiveObject.hxx>
- #include <Graphic2d_SetOfCurves.hxx>
- #include <Geom2d_TrimmedCurve.hxx>
- #include <Prs2d_AspectLine.hxx>
- #include <Graphic2d_Array1OfVertex.hxx>
- #include <Graphic2d_Polyline.hxx>
- #include <Graphic2d_Text.hxx>
- #include <Prs3d_Drawer.hxx>
- #include <Prs3d_IsoAspect.hxx>
- #include <Prs3d_ShadingAspect.hxx>
- #include <BRepPrimAPI_MakeCylinder.hxx>
- #include <AIS_Drawer.hxx>
- #include <StdPrs_ShadedShape.hxx>
- #include <StdPrs_HLRPolyShape.hxx>
- #include <StdSelect_BRepSelectionTool.hxx>
- #include <StdPrs_WFDeflectionShape.hxx>
- #include <TopExp_Explorer.hxx>
- #include <BRep_Tool.hxx>
- #include <TopoDS.hxx>
- #include <Geom_Surface.hxx>
- #include <Geom_Plane.hxx>
- #include <TopTools_HSequenceOfShape.hxx>
- #include <BRepTools.hxx>
- #include <BRepBuilderAPI_NurbsConvert.hxx>
- #include <Graphic3d_AspectFillArea3d.hxx>
- #include <Aspect_PolygonOffsetMode.hxx>
- #include <Graphic3d_Group.hxx>
4.4. APP类:
4.4.1. 在App头文件中添加标准宏定义和Windows图形设备头文件:
- #include <Standard_Macro.hxx>
- #include <wnt_graphicdevice.hxx>
- protected:
- Handle_WNT_GraphicDevice m_GraphicDevice;
- public:
- Handle_WNT_GraphicDevice& GetGraphicDevice()
- {
- return m_GraphicDevice;
- }
4.4.3. 在APP的源文件中的构造函数中对设备环境生成并初始化:
- try
- {
- m_GraphicDevice = new WNT_GraphicDevice();
- }
- catch (Standard_Failure)
- {
- ExitProcess(1);
- }
此时编译提示错误信息:
error C2661: 'Standard_Transient::operator new' : no overloaded function takes 3 arguments
原因是因为OpenCascade对New操作符进行了重载,与VS中的定义存在冲突,屏蔽文件前面的以下代码就可以解决了:
- // #ifdef _DEBUG
- // #define new DEBUG_NEW
- // #endif
4.5. Document类
- protected:
- Handle_AIS2D_InteractiveContext m_AISInteractiveContext2D;
- Handle_V2d_Viewer m_2dViewer;
- public:
- Handle_V2d_Viewer Get2dViewer()
- {
- return m_2dViewer;
- }
- Handle(WNT_GraphicDevice)& hGD = ((CMyOccApp*)AfxGetApp())->GetGraphicDevice();
- TCollection_ExtendedString strName("2D Viewer");
- TCollection_AsciiString strDomain("My Domain");
- m_2dViewer = new V2d_Viewer(hGD, strName.ToExtString(), strDomain.ToCString());
- m_2dViewer->SetCircularGridValues(0, 0, 10, 8, 0);
- m_2dViewer->SetRectangularGridValues(0, 0, 10, 10, 0);
- m_AISInteractiveContext2D = new AIS2D_InteractiveContext(m_2dViewer);
4.6. View类
- private:
- Handle_V2d_View m_2dView;
- Handle(WNT_Window) hWindow;
- hWindow = new WNT_Window(((CMyOccApp*)AfxGetApp())->GetGraphicDevice(), GetSafeHwnd());
- hWindow->SetBackground(Quantity_NOC_SLATEBLUE2);
- Handle(WNT_WDriver) hDriver = new WNT_WDriver(hWindow);
- m_2dView = new V2d_View(hDriver, GetDocument()->Get2dViewer(), 0, 0, 50);
- Standard_Integer nWidth = 100, nHeight = 100;
- hWindow->Size(nWidth, nHeight);
- ::PostMessage(GetSafeHwnd(), WM_SIZE, SIZE_RESTORED, nWidth + nHeight * 65536);
4.6.3. 在View的析构函数中删除OpenCascade的Viewer,清理内存:
6.出现的问题及解决办法:
- call ../../ros/env.bat
- call %~dp0env.bat
- start "C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe" "All-vc10.sln"
- try
- {
- ...
- }
- catch(Standard_Failure sf)
- {
- const char* str = sf.GetMessageString();
- wchar_t msg[5000];
- MultiByteToWideChar(CP_ACP, 0, str,strlen(str)+1, msg, 5000/sizeof(msg[0]) );
- MessageBox(msg);
- }
7.参考:
7.1.OpenCascade学习笔记-创建一个简单的OpenCascade单文档:http://blog.csdn.net/Augusdi/article/details/5642368
转:https://blog.csdn.net/ljfblog/article/details/8545816