Opencascade6.5.3+VS2010的使用初步

这几天开始学习OpenCascade,很迷茫,不知道从哪儿开始!下载了软件装上之后就百度+google一下,发现很多文章都是说要编译啊神马的,搞得我很不知所措!

后来才知道,我如果只是简单的使用这个库去编程的话那就不需要去编译了。

我认为,这个OpenCascade跟OpenCv是差不多的,是一个第三方的库,只需要把一些头文件了,库啊神马的包含进去就可以使用了。那我就开始试试喽,发现有很多稀奇古怪的错误,不过现在都忘了是什么了,现在自己弄出来了,贴出来分享一下,高手勿喷啊!

 

 首先,创建一个单文档应用程序

头文件加入OpenCascade的目录:

D:\OpenCASCADE6.5.3\ros\inc是我的安装目录。

库文件同样加入OpenCascade的目录:

D:\OpenCASCADE6.5.3\ros\win32\vc9\lib是我的安装目录。

 

然后,修改stdafx.h直接在后面加上

#pragma warning(  disable : 4244 )        // Issue warning 4244
#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>


打开工程属性,在链接器选项卡中的输入项的附加依赖项中添加OpenCascade库文件

TKVrml.lib
TKStl.lib
TKBrep.lib
TKIGES.lib
TKShHealing.lib
TKStep.lib
TKXSBase.lib
TKShapeSchema.lib
FWOSPlugin.lib
PTKernel.lib
TKBool.lib
TKCAF.lib
TKCDF.lib
TKDraw.lib
TKernel.lib
TKFeat.lib
TKFillet.lib
TKG2d.lib
TKG3d.lib
TKGeomAlgo.lib
TKGeomBase.lib
TKHLR.lib
TKMath.lib
TKOffset.lib
TKPCAF.lib
TKPrim.lib
TKPShape.lib
TKService.lib
TKTopAlgo.lib
TKMesh.lib
TKV2d.lib
TKV3d.lib
TKBO.lib//千万别忘了这个啊

**APP类中OpenCascade图形设备环境变量添加和设置

在App头文件中添加标准宏定义和Windows图形设备头文件:

#include <Standard_Macro.hxx>
#include <wnt_graphicdevice.hxx>
 
 
在类中添加成员变量和引用方法。
 
protected:
  Handle_Graphic3d_WNTGraphicDevice m_GraphicDevice;
public:
 Handle_Graphic3d_WNTGraphicDevice GetGraphicDevice() const { return m_GraphicDevice; } ;
 
 
在APP的源文件中的构造函数中对设备环境生成并初始化:
 
 
try
 {
  m_GraphicDevice = new Graphic3d_WNTGraphicDevice();
 }
 catch (Standard_Failure)
 {
  ExitProcess(1);
 }
 

 此时,需要将

//#ifdef _DEBUG
//#define new DEBUG_NEW
//#endif

注释掉,原因是因为OpenCascade对New操作符进行了重载,与VS中的定义存在冲突。

**Document类中添加OpenCascade间接设备环境和图形接口

在Doc头文件中添加OpenCascade成员变量和引用方法

Handle_AIS_InteractiveContext& GetAISContext(){ return myAISContext; };
Handle_V3d_Viewer GetViewer()  { return myViewer; };
Handle_V3d_Viewer myViewer;
Handle_AIS_InteractiveContext myAISContext;


Doc类源文件中构造函数中对OpenCascade变量初始化设置

Handle(Graphic3d_WNTGraphicDevice) theGraphicDevice = 
  ((COpenCascadeApp*)AfxGetApp())->GetGraphicDevice();
 
 myViewer = new V3d_Viewer(theGraphicDevice,(short *) "Visu3D");
 myViewer->SetDefaultLights();
 myViewer->SetLightOn();
 myAISContext =new AIS_InteractiveContext(myViewer);

 

此时还需要注释New的那段代码!!!


**View类Opencascade变量设置和图形显示设置

在View头文件中添加OpenCascade变量

public:
	Handle_V3d_View& GetView() { return myView; }


添加OnInitialUpdate虚函数设置OpenCascade显示,在OnInitialUpdate函数中添加以下代码

myView =GetDocument()->myViewer->CreateView();
myView->SetDegenerateModeOn();
myView->SetBackgroundColor(Quantity_TOC_RGB,0.1,0.,0.1);
Handle(Graphic3d_WNTGraphicDevice) theGraphicDevice = ((COpenCascadeApp*)AfxGetApp())->GetGraphicDevice();
Handle(WNT_Window) aWNTWindow = new WNT_Window(theGraphicDevice,GetSafeHwnd ());
myView->SetWindow(aWNTWindow);
if (!aWNTWindow->IsMapped()) aWNTWindow->Map();

 

在View的析构函数中删除OpenCascade的Viewer,清理内存。

if (myView)
   myView->Remove();


 

在OnDraw()函数添加:

if ( !myView.IsNull() )//别人的代码没加这个判断,我的不加就不对 
   myView->Redraw();  


OK!此时应该能够运行成功了,如果你想要显示一个瓶子,那么应该添加一个菜单或者工具栏,然后添加消息响应函数:

TopoDS_Shape aBottle = MakeBottle(50,70,30);
Handle(AIS_Shape) AISBottle=new AIS_Shape(aBottle);
GetDocument()->myAISContext->SetMaterial(AISBottle,Graphic3d_NOM_GOLD);
GetDocument()->myAISContext->SetDisplayMode(AISBottle,1,Standard_True);
GetDocument()->myAISContext->Display(AISBottle,1, Standard_True);
GetDocument()->myAISContext->SetCurrentObject(AISBottle,Standard_False);

Quantity_Color CSFColor ;
CSFColor = Quantity_Color (0.3,0.5,0.2,Quantity_TOC_RGB); 
GetDocument()->myAISContext->SetColor(AISBottle,CSFColor.Name());

myView->FitAll();//使瓶子最大化;

这样你就能看到显示的瓶子了!

 

然后就是自己往下深究Opencascade的其他功能了!

 

参考:

http://blog.csdn.net/Augusdi/article/details/5642368

http://blog.csdn.net/astrosky

http://blog.csdn.net/dandanCool
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Opencascade是一个开源的3D几何建模库,为开发者提供了丰富的工具和功能,用于处理和操作三维几何图形。VS2015是微软公司推出的一个集成开发环境,专门用于开发Windows应用程序。 OpencascadeVS2015可以一起使用来开发三维几何图形应用程序。Opencascade提供了各种各样的几何图形处理和建模功能,包括创建、编辑和显示三维对象、进行几何运算和模型分析等。使用Opencascade,开发者可以方便地处理复杂的三维图形,并实现各种几何相关的算法和操作。 VS2015作为一个集成开发环境,提供了丰富的工具和功能来支持开发过程。它包括一个强大的代码编辑器、调试器、编译器和图形界面设计工具。使用VS2015,开发者可以编写和调试应用程序,并通过图形界面设计工具快速构建用户界面。 将OpencascadeVS2015一起使用,可以充分发挥它们各自的优势。开发者可以使用Opencascade的几何建模功能创建和操作三维图形,然后使用VS2015的开发工具进行应用程序的编写、调试和界面设计。通过这种组合,开发者可以高效地开发出功能强大、界面友好的三维几何图形应用程序。 总结来说,Opencascade是一个强大的3D几何建模库,VS2015是一个集成开发环境,它们可以一起使用来开发三维几何图形应用程序。这种组合可以充分发挥它们各自的优势,使开发过程更加高效和便捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值