Open Cascade安装心得

最近导师要求开学前学习一下这个库,说实话一开始看着一头包,完全一头雾水,不过最终安下来了,总体来说一定要胆大心细!

1.下载opencascade和VS2017,安装包(百度云)贴在下面:

opencascade链接:https://pan.baidu.com/s/1UbhkF5Na5420gIsUb4VP1Q 
提取码:cqr7

下载好以后就是这样:

Open Cascade安装心得_第1张图片

VS2017链接:https://pan.baidu.com/s/1l9DejZhBaCPdFOgHEvkJWw 
提取码:e6wi 

VS安装教程百度一堆,主要要注意的就是安装过程中要把ALT,MFC勾选上,如下:

Open Cascade安装心得_第2张图片

2.配置系统环境变量

把下载好的opencascade里每个文件夹的bin目录都放到环境变量的PATH里,尤其注意tbb开头的文件夹中,路径要具体到bin目录下的版本号目录里,我分享的安装包版本号是vc14,可以参考我下面的截图:

Open Cascade安装心得_第3张图片

Open Cascade安装心得_第4张图片

然后在将bin文件夹内的dll文件全部复制一份放在C:\Windows\SysWOW64里(注意我这里是64位的),一定要一个一个文件夹找,tbb开头的就存vc14里的8个dll就行了,其他版本不用存。

3.打开VS2017

文件->新建->项目->MFC应用(随便选个存储路径)->确定->应用程序类型选择单文档->完成

Open Cascade安装心得_第5张图片

Open Cascade安装心得_第6张图片

4.接下来配置一下VS2017的项目属性

点击上方菜单栏的项目->最下方项目属性->VC++目录->修改一下包含目录和库目录(我的opencascade存在E盘,如果存在其他地方可以对应改一下路径)

Open Cascade安装心得_第7张图片

我的包含目录是:E:\OpenCASCADE-7.4.0-vc14-64\opencascade-7.4.0\inc

我的库目录是:E:\OpenCASCADE-7.4.0-vc14-64\opencascade-7.4.0\win64\vc14\lib

接下来打开cmd,进入库目录E:\OpenCASCADE-7.4.0-vc14-64\opencascade-7.4.0\win64\vc14\lib,在此输入命令dir /b>libName.txt,把弹出来的所有lib文件名复制

点项目属性里的连接器->输入->附加依赖项,把上面复制的粘贴到这里(如果第一行粘贴上libName.lib,记得删除)

Open Cascade安装心得_第8张图片

5.修改项目文件内容

打开头文件中的pch.h(或者叫stdafx.h,这是一个预编译源文件)

把下面内容复制到头文件

#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include
#include
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include

Open Cascade安装心得_第9张图片

然后在项目名.h文件的类里添加:

Handle(Graphic3d_GraphicDriver) m_GraphicDriver;
Handle(Graphic3d_GraphicDriver) GetGraphicDriver() { return m_GraphicDriver; }

和头文件

#include
#include

Open Cascade安装心得_第10张图片Open Cascade安装心得_第11张图片

项目名.cpp的构造函数里加上:

try {
        Handle(Aspect_DisplayConnection) aDisplayConnection;
        m_GraphicDriver = new OpenGl_GraphicDriver(aDisplayConnection);
    }
    catch (Standard_Failure) {
        AfxMessageBox(L"(Error Ocured in Initializing the Opencascade graphic variable.)");
    }

Open Cascade安装心得_第12张图片Open Cascade安装心得_第13张图片

接着在项目名Doc.h文件类里添加:

Handle(AIS_InteractiveContext) myAISContext;  
Handle(V3d_Viewer) myViewer;  
Handle(V3d_Viewer) GetViewer(void) {return myViewer;}

Open Cascade安装心得_第14张图片

接着去实现文档项目名Doc.cpp中类的构造函数中添加:

Handle(Graphic3d_GraphicDriver) theGraphicDriver = ((C项目名App*)AfxGetApp())->GetGraphicDriver();

    myViewer = new V3d_Viewer(theGraphicDriver);
    myViewer->SetDefaultLights();
    myViewer->SetLightOn();

    myAISContext = new AIS_InteractiveContext(myViewer);

    myAISContext->SetDisplayMode(AIS_Shaded,true);
    myAISContext->SetAutomaticHilight(Standard_False);

Open Cascade安装心得_第15张图片

然后去去项目名View.h定义类里添加:

Handle(V3d_View) myView;  

和添加要重写的这个函数:

virtual void OnInitialUpdate();  

并在实现中声明这个方法(如果已经有了就不用新建了):

void FitAll() { if (!myView.IsNull()) myView->FitAll();  myView->ZFitAll(); };

Open Cascade安装心得_第16张图片

然后去项目名View.cpp文件里添加下面这个实现函数(随便添加在哪里):

void C项目名View::OnInitialUpdate()

{

    CView::OnInitialUpdate();



    myView = GetDocument()->GetViewer()->CreateView();
    myView->SetShadingModel(V3d_GOURAUD);
    Handle(Graphic3d_GraphicDriver) theGraphicDriver = ((C项目名App*)AfxGetApp())->GetGraphicDriver();
    Aspect_Handle aWindowHandle = (Aspect_Handle)GetSafeHwnd();
    Handle(WNT_Window) aWntWindow = new WNT_Window(GetSafeHwnd());
    myView->SetWindow(aWntWindow);
    if (!aWntWindow->IsMapped()) {
        aWntWindow->Map();
    }
    Standard_Integer w = 100;
    Standard_Integer h = 100;
    aWntWindow->Size(w, h);
    ::PostMessage(GetSafeHwnd(), WM_SIZE, SIZE_RESTORED, w + h * 65536);
    myView->FitAll();

    myView->ZBufferTriedronSetup(Quantity_NOC_RED, Quantity_NOC_GREEN, Quantity_NOC_BLUE1, 0.8, 0.05, 12);
    myView->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_WHITE, 0.2, V3d_ZBUFFER);
}

Open Cascade安装心得_第17张图片

然后在这个文件中的OnDraw()函数中添加:

myView->MustBeResized();  
myView->Update(); 
 

编译运行!Open Cascade安装心得_第18张图片

参考来源:OpenCASCADE(一) VS2017+OpenCASCADE+MFC +win10下载配置安装运行单文档程序画个基本图形 - aircraft - 博客园

以下几种易错情况可以注意一下:

1.运行按钮左边的x86如果没改成x64会报错

2.VS的项目属性有时候会恢复初始化状态,如果莫名报错可以检查一下项目属性是不是没修改成功

3.没有与参数列表匹配的“XXX”重载实例/没有重载函数接收3个参数

这是因为opencascade对new进行了重载,我们将每个new报错文件顶部的:

#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif

这几行代码注释就行了

3.最近我引用了opencascade的Demo,其中让我修改了符号设置,在工具-》选项-》调试-》符号里勾选了Microsoft符号服务器,这种情况下运行上文的项目会一直卡在启动项目,要记得取消勾选。

你可能感兴趣的:(occ,visual,studio,几何学)