Opencascade建立单文档

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Opencascade建立OCAF单文档图1为MFC单文档应用程序界面;图2为OCAF单文档应用程序界面。

图1
图2
基于MFC单文档建立OCAF单文档的步骤:
1、创建一个MFC单文档应用程序。

在项目的头文件(或包含文件)和库文件路径里添加Open cascade 的所有头文件和库文件路径(具体操作参见<<Opencascade 6.60调试总结>>文档);将需要使用的头文件添加到stdafx.h里;打开工程属性,在链接器选项卡中的输入项的附加依赖项中添加OpenCascade 库文件;
2、APP类中OpenCascade图形设备环境变量添加和设置。

在SWFZ.h头文件里添加:
#include<Standard_Macro.hxx>
#include<Graphic3d_GraphicDriver.hxx>
CSWFZApp类中添加成员和用法:
protected:
Handle_Graphic3d_GraphicDriver myGraphicDriver;
Handle_Graphic3d_GraphicDriver GetGraphicDriver() const
{
return myGraphicDriver;
}
CSWFZApp类的构造函数添加:
try
{
Handle(Aspect_DisplayConnection) aDisplayConnection;
myGraphicDriver = Graphic3d::InitGraphicDriver (aDisplayConnection);
}
catch (Standard_Failure)
{
ExitProcess(1);
}
注意:需要注释
//#ifdef _DEBUG
//#define new DEBUG_NEW
//#endif
原因是因为OpenCascade对New操作符进行了重载,与VS中的定义存在冲突。

3、Document类中添加OpenCascade间接设备环境和图形接口
在CSWFZDoc头文件中添加OpenCascade成员变量和引用方法:protected:
Handle(V3d_Viewer) myViewer;
Handle(AIS_InteractiveContext) myAISContext;
public:
Handle(AIS_InteractiveContext)& GetAISContext() { return myAISContext; }
Handle(V3d_Viewer) GetViewer() { return myViewer; }
在CSWFZDoc类的构造函数中对OpenCascade变量初始化设置:Handle(Graphic3d_GraphicDriver) aGraphicDriver =
((CSWFZApp*)AfxGetApp())->GetGraphicDriver();
myViewer = new V3d_Viewer (aGraphicDriver, Standard_ExtString("Visu3D") );
myViewer->SetDefaultLights();
myViewer->SetLightOn();
myAISContext = new AIS_InteractiveContext (myViewer);
此时还需要注释New的那段代码!!!
4、View类Opencascade变量设置和图形显示设置
在CSWFZView头文件中添加OpenCascade变量:
public:
Handle_V3d_View myView;
在CSWFZView类中添加OnInitialUpdate虚函数(类的重写里添加)设置OpenCascade显示,在OnInitialUpdate函数中添加以下代码:myView = GetDocument()->GetViewer()->CreateView();
// store for restore state after rotation (which is in Degenerated mode)
myView->SetComputedMode (Standard_False);
Handle(Graphic3d_GraphicDriver) aGraphicDriver =
((CSWFZApp*)AfxGetApp())->GetGraphicDriver();
Handle(WNT_Window) aWNTWindow = new WNT_Window(GetSafeHwnd());
myView->SetWindow(aWNTWindow);
if (!aWNTWindow->IsMapped()) aWNTWindow->Map();。

相关文档
最新文档