OCC开源框架学习分享资料
- 格式:ppt
- 大小:214.50 KB
- 文档页数:26
OPEN CASCADE学习笔记——句柄著: Roman Lygin译:George Feng这是一篇关于开源三维建模软件O P E N C A S C A D E内核的博文:R O M A N L Y G I N是O P E N C A S C A D E的前程序开发员和项目经理,曾经写过许多关于该开源软件开发包的深入文章,可以在他的博客(H T T P://O P E N C A S C A D E.B L O G S P O T.C O M)上面找到这些文章。
序在OpenCascade的论坛上知道了Roman Lygin在他的博客上写了Open CASCADE notes系列文章,但是却无法访问他的博客,幸而百度文库已经收录了Topology and Geometry和Surface Modeling两篇文章,拜读之后获益良多。
如果大家发现文中翻译有错误或不足之处,望不吝赐教,可以发到我的邮箱fenghongkui@,十分感谢。
2012年6月28日星期四译者案:句柄是某个对象的一种标号,它是一个数值,它不是指针,根据指针可以知道对象在内存中的位置,但是通过句柄却不能直接更改内存中的对象,这事实上对于内存中的对象形成了一种保护。
中文中句柄这个词应该是来源于手柄的演化,利用手柄可以拎起来皮箱、包裹、茶壶等,就是说通过手柄可以控制一个对象,而计算机语言中的句柄却是用来“拎”(间接访问)内存中或者其他设备对象的。
我的第一篇文章,引言我也成为一个博友了,这是我第一次发博文,所以我对这种发文方式没有概念,也不知道是否有效。
让我们走着瞧吧。
我曾经在Open CASCADE(OCC)工作了7年时间,2004年离开,然后去了Intel,在那一直工作到现在。
在OCC的那些年的经历是非常珍贵的,我做过软件开发和项目管理,客户关系维护,与来自于各地和具有各种文化背景的人一起工作。
从1997年开始,我就在CAD数据交换小组作为软件开发工程师工作,我觉得这非常幸运,因为这使我可以学习到很多OCC代码,因为数据交换使用了大量的OCC算法。
Opencascade源码架构解析一、概述Opencascade是一个开源的CAD/CAM/CAE建模内核,它提供了一整套用于3D模型创建和处理的工具。
其源码架构设计精良,涵盖了多个关键模块,包括几何构建、模型修剪、模型显示、数据交换等,为用户提供了丰富的功能和灵活的扩展性。
在本文中,我们将深入分析Opencascade的源码架构,以帮助读者更好地理解其内部机制和设计理念。
二、核心模块1. 几何构建模块Opencascade的几何构建模块是其核心部分,负责处理3D模型的构建和基本几何运算。
该模块包括了诸多子模块,如曲面建模、实体建模、几何算法等,各子模块之间通过良好定义的接口进行耦合,使得模块之间的协作更加灵活。
2. 模型修剪模块模型修剪模块主要用于处理几何模型之间的相交、相切、相离等关系,通过实现布尔运算、平移旋转等操作,为模型的进一步处理和展示提供了基础支撑。
3. 模型显示模块模型显示模块负责将构建好的3D模型呈现在用户面前。
它包括了模型渲染、光照效果、阴影效果等多项功能,以提供精美的图形展示效果。
4. 数据交换模块Opencascade的数据交换模块具有强大的能力,可以与多种格式的文件进行交互,包括STEP、IGES、STL等。
这使得Opencascade成为一个理想的CAD/CAM/CAE建模内核,在工程设计过程中起到了重要的作用。
三、源码实现细节1. 设计模式Opencascade的源码架构采用了多种设计模式,如工厂模式、观察者模式、策略模式等,以实现关注点分离、复用性和扩展性。
这些设计模式的运用使得Opencascade的源码更具健壮性和灵活性。
2. 抽象数据结构Opencascade中采用了丰富的抽象数据结构,用于描述几何实体、曲面、多边形等。
这些数据结构的设计具有良好的通用性和扩展性,使得Opencascade能够应对不同的建模需求。
3. 精巧的算法源码中涵盖了多种精巧的几何算法,用于处理曲面的构建、实体的操作等。
一直在用OCC作项目,但这方面的中文资料很少,瞧来OCC在中国还不就是十分普及;后来,项目中使用OCC与DirectX结合使用,取得了很好的效果;随着OCC6、3版本的推出,Open CASCADE在速度方面已有了很大的改变。
以下为一些OCC 的基础知识,愿与各位OCC爱好者共同学习;一:OCC中的基础类:gp_Pnt在OCC中,gp_Pnt表示一个顶点,gp_Vec表示一个向量,可以用两个顶点来生成一个向量。
比如:gp_Pnt P1(0,0,0);gp_Pnt P2(5,0,0);gp_Vec V1 (P1,P2);向量有一个方法、IsOpposite(),可以用来测试两个向量的方向就是相对还就是平行;比如:gp_Pnt P3(-5,0,2);gp_Vec V2(P1,P3);Standard_Boolean result =V1、IsOpposite(V2,Precision::Angular());另外向量还有一些重要方法:--Standard_Real Magnitude() const;计算向量的大小;--Standard_Real SquareMagnitude() const;计算向量的平方;--向量的加减乘除操作;--向量的单位化;--通过一个点,线,面得出其镜像的向量;--向量的旋转,平移,缩放;具体的函数名称可以瞧OCC的头文件说明;有时需要决定一组空间点就是位于一个点;一条直线,或一个平面,或一个空间:OCC中提供了相应的算法;比如:TColgp_Array1OfPnt array (1,5); // sizing arrayarray、SetValue(1,gp_Pnt(0,0,1));array、SetValue(2,gp_Pnt(1,2,2));array、SetValue(3,gp_Pnt(2,3,3));array、SetValue(4,gp_Pnt(4,4,4));array、SetValue(5,gp_Pnt(5,5,5));GProp_PEquation PE (array,1、5 );if (PE、IsPoint()){ } //就是否就是同一个点gp_LinL;if (PE、IsLinear()) { L = PE、Line(); } //就是否位于一条直线上;if (PE、IsPlanar()){ } //就是否在一个平面内;if (PE、IsSpace()) { }gp_Dir类:此类用来描述3D空间中的一个单位向量;常用方法:(1):IsEqual(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量就是否相等;(2):IsNormal(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量的夹角就是否就是PI/2;(3):IsOpposite(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量就是否方向相反;(4):IsParallel(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量夹角O或PI;(5):Angle(const gp_Dir& Other) const;求两个向量之间的夹角;(6):void CrossCross(const gp_Dir& V1,const gp_Dir& V2) ;计算三个向量之间的叉积;(7):Standard_Real Dot(const gp_Dir& Other) const;计算点积;(8):Standard_Real DotCross(const gp_Dir& V1,const gp_Dir& V2) const;计算叉积再点积;(9):gp_Dir Reversed() const;得到反方向,在OCC中用gp_Lin2d 类,来生成一个二维空间的直线,有它的原点与单位向量;gp_Ax2d 类:通过原点与X方向单位与Y方向单位建立一个二维坐标系;利用sense参数可以决定就是右手系还就是左手系;可以利用平移、旋转、缩放、镜像来更改坐标系;类似地,gp_Ax3类:用来描述一个3D空间的坐标系。
产品信息建模原理与方法课程讲义之Open CASCADE 的体系结构刘子建 2012-3-6第一部分:基本结构描述在Open CASCADE (以下简称OCC )中,三维形体采用了基于B-Rep (边界表示,Boundary Representation ,B-Rep )的模型,系统包括拓扑(Topologic )和几何(Geometric )两种主要结构,如图1所示。
的sub_Shape 索引链表的sub_Shape 索引链表的sub_Shape 索引链表的Shape 索引链表的sub_Shape 索引链表的sub_Shape 索引链表的sub_Shape 链表图1. OCC 模型的几何拓扑结构OCC定义了9种基本拓扑结构,由该9种基本拓扑结构可以表示一个任意复杂模型的拓扑结构。
它们的定义如下:COMPOUNDA group of any type of topological object.COMPSOLIDA composite solid is a set of solids connected by their faces. It expands the notions of WIRE and SHELL to solids.SOLIDA part of space limited by shells. It is three dimensional.SHELLA set of faces connected by their edges. A shell can be open or closed.FaceIn 2D it is part of a plane; in 3D it is part of a surface. Its geometry is constrained (trimmed) by contours. It is two dimensional.WireA set of edges connected by their vertices. It can be an open or closed contour depending on whether the edges are linked or not.EdgeA topological element corresponding to a restrained curve. An edge is generally limited by vertices. It has one dimension.VERTEXA topological element corresponding to a point. It has zero dimension.SHAPEA generic term covering all of the above.第二部分:数据结构基础OCC定义了拓扑元素的两个基类TopoDS_Shape和TopoDS_TShape,统一处理有关拓扑的共有事物,再由这两个类派生出具体的拓扑元素类。
open cascade occ 几何模型创建与删除操作-回复Open Cascade OCC (Open Cascade Technology) 是一个开源的CAD/CAE/PLM 开发框架,它提供了一套丰富的工具和算法,用于处理和操作几何模型。
本文将逐步回答如何使用Open Cascade OCC 进行几何模型的创建与删除操作。
第一步: 安装Open Cascade OCC要使用Open Cascade OCC,首先需要将它安装在计算机上。
可以从官方网站下载最新版本的Open Cascade Technology。
第二步: 引入OCC 头文件和命名空间在代码中引入OCC 头文件,并使用OCC 的命名空间。
例如,在C++ 中,可以使用以下语句引入OCC 头文件和命名空间:cpp#include <TopoDS_Shape.hxx>#include <BRepBuilderAPI_MakeBox.hxx>#include <BRepAlgoAPI_Common.hxx>#include <BRepTools.hxx>#include <Standard_Failure.hxx>#include <Standard_ErrorHandler.hxx>#include <iostream>using namespace std;第三步: 创建几何模型使用OCC 的几何建模算法,可以创建各种类型的几何模型。
例如,下面的代码片段演示了如何创建一个简单的立方体模型:cppTopoDS_Shape box = BRepBuilderAPI_MakeBox(10.0, 20.0,30.0).Shape();这里使用BRepBuilderAPI_MakeBox 函数来创建一个立方体,参数分别是立方体的宽度、高度和深度。
通过 .Shape() 函数可以获取到创建好的几何模型。
TutorialMy First ApplicationVersion 6.3 / September 2008Table of Contents1.PROJECT OVERVIEW (4)1.1.P REREQUISITES (4)1.2.T HE PROJECT (4)1.3.P ROJECT S PECIFICATIONS (4)2.BUILDING THE PROFILE (6)2.1.D EFINING S UPPORT P OINTS (6)2.2.P ROFILE:D EFINING THE G EOMETRY (7)2.3.P ROFILE:D EFINING THE T OPOLOGY (8)2.4.P ROFILE:C OMPLETING THE P ROFILE (10)3.BUILDING THE BODY (12)3.1.P RISM THE P ROFILE (12)3.2.A PPLYING F ILLETS (13)3.3.A DDING THE N ECK (15)3.4.C REATING A H OLLOWED S OLID (16)4.BUILDING THE THREADING (19)4.1.C REATING S URFACES (19)4.2.D EFINING 2D C URVES (19)4.3.B UILDING E DGES AND W IRES (23)4.4.C REATING T HREADING (24)5.BUILDING THE RESULTING COMPOUND (26)6.APPENDIX (27)4 Project Overview1. Project OverviewThis tutorial will teach you how to use Open CASCADE services to model a 3D object. The purpose ofthis tutorial is not to describe all Open CASCADE classes but to help you to start thinking in terms of the Open CASCADE tool.1.1. PrerequisitesThis tutorial assumes that you have experience in using and setting up C++.From a programming standpoint, Open CASCADE is designed to enhance your C++ tools with high performance modeling classes, methods and functions. The combination of all these resources will allow you to create substantial applications.1.2. The projectTo illustrate the use of classes provided in the 3D geometric modeling toolkits, you will create a bottle as shown:In the tutorial we will create, step-by-step, a function that will model a bottle as shown above. You will find the complete source code of this tutorial, including the very function MakeBottle in the distribution of Open CASCADE. The function body is provided in the file Tutorial/src/MakeBottle.cxx.1.3. Project SpecificationsWe first define the bottle specifications as follows:Object Parameter ParameterName Parameter Value Bottle height MyHeight 70mmBottle width MyWidth 50mm Bottle thickness MyThickness30mm为了演示3D 几何模型工具箱中类的使用丆你可以创建一个如下的瓶子。
一直在用OCC作项目,但这方面的中文资料很少,看来OCC在中国还不是十分普及;后来,项目中使用OCC和DirectX结合使用,取得了很好的效果;随着OCC6.3版本的推出,Open CASCADE在速度方面已有了很大的改变。
以下为一些OCC 的基础知识,愿与各位OCC爱好者共同学习;一:OCC中的基础类:gp_Pnt在OCC中,gp_Pnt表示一个顶点,gp_Vec表示一个向量,可以用两个顶点来生成一个向量。
比如:gp_Pnt P1(0,0,0);gp_Pnt P2(5,0,0);gp_Vec V1 (P1,P2);向量有一个方法.IsOpposite(),可以用来测试两个向量的方向是相对还是平行;比如:gp_Pnt P3(-5,0,2);gp_Vec V2(P1,P3);Standard_Boolean result =V1.IsOpposite(V2,Precision::Angular());另外向量还有一些重要方法:--Standard_Real Magnitude() const;计算向量的大小;--Standard_Real SquareMagnitude() const;计算向量的平方;--向量的加减乘除操作;--向量的单位化;--通过一个点,线,面得出其镜像的向量;--向量的旋转,平移,缩放;具体的函数名称可以看OCC的头文件说明;有时需要决定一组空间点是位于一个点;一条直线,或一个平面,或一个空间:OCC中提供了相应的算法;比如:TColgp_Array1OfPnt array (1,5); // sizing arrayarray.SetValue(1,gp_Pnt(0,0,1));array.SetValue(2,gp_Pnt(1,2,2));array.SetValue(3,gp_Pnt(2,3,3));array.SetValue(4,gp_Pnt(4,4,4));array.SetValue(5,gp_Pnt(5,5,5));GProp_PEquation PE(array,1.5 );if (PE.IsPoint()){ } //是否是同一个点gp_LinL;if (PE.IsLinear()) { L = PE.Line(); } //是否位于一条直线上;if (PE.IsPlanar()){ } //是否在一个平面内;if (PE.IsSpace()) { }gp_Dir类:此类用来描述3D空间中的一个单位向量;常用方法:(1):IsEqual(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量是否相等;(2):IsNormal(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量的夹角是否是PI/2;(3):IsOpposite(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量是否方向相反;(4):IsParallel(const gp_Dir& Other,const Standard_Real AngularTolerance) const;两个单位向量夹角O或PI;(5):Angle(const gp_Dir& Other) const;求两个向量之间的夹角;(6):void CrossCross(const gp_Dir& V1,const gp_Dir& V2) ;计算三个向量之间的叉积;(7):Standard_Real Dot(const gp_Dir& Other) const;计算点积;(8):Standard_Real DotCross(const gp_Dir& V1,const gp_Dir& V2) const;计算叉积再点积;(9):gp_Dir Reversed() const;得到反方向,在OCC中用gp_Lin2d 类,来生成一个二维空间的直线,有它的原点和单位向量;gp_Ax2d 类:通过原点和X方向单位和Y方向单位建立一个二维坐标系;利用sense参数可以决定是右手系还是左手系;可以利用平移、旋转、缩放、镜像来更改坐标系;类似地,gp_Ax3类:用来描述一个3D空间的坐标系。
occ布尔运算源码OCC (Open CASCADE Technology) 是一个开源的几何建模库,它提供了大量的几何算法和数据结构,用于进行几何建模、计算和可视化。
OCC 提供了大量的几何算法和数据结构,包括点、线、面、几何变换等,同时也提供了很多几何建模的工具,如布尔运算、曲线拟合、曲面重建等。
OCC 的布尔运算源码主要在BRepAlgo 模块中实现。
该模块提供了许多用于执行布尔运算的函数和类,例如求交、求差、求并等。
以下是OCC 中布尔运算的一些基本类和方法:1.BRepAlgoAPI_MakeShape:用于创建几何形状的类,可以通过该类的方法创建各种类型的几何形状,如圆柱体、球体、长方体等。
2.BRepAlgoAPI_Section:用于执行布尔运算的类,可以通过该类的方法进行两个形状之间的布尔运算,如求交、求差、求并等。
3.BRepAlgoAPI_Fuse:用于执行两个形状之间的布尔求并运算的类。
4.BRepAlgoAPI_Common:用于执行两个形状之间的布尔求交运算的类。
5.BRepAlgoAPI_Cut:用于执行两个形状之间的布尔求差运算的类。
在OCC 中,布尔运算通常通过创建一个BRepAlgoAPI_Section 对象,并将需要执行布尔运算的两个形状作为参数传递给该对象的构造函数来完成。
例如,以下代码演示了如何使用BRepAlgoAPI_Section 类执行两个圆柱体之间的布尔求交运算:// 创建两个圆柱体TopoDS_Shape Cylinder1 = BRepPrimAPI_MakeCylinder(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1), 1.0, 2.0).Shape();TopoDS_Shape Cylinder2 = BRepPrimAPI_MakeCylinder(gp_Pnt(2, 0, 0), gp_Dir(0, 0, 1), 1.0, 2.0).Shape();// 创建布尔求交运算对象BRepAlgoAPI_Section Section(Cylinder1, Cylinder2);// 执行布尔求交运算TopoDS_Shape Result = Section.Shape();在上述代码中,首先创建了两个圆柱体对象Cylinder1 和Cylinder2,然后创建了一个BRepAlgoAPI_Section 对象Section,并将需要执行布尔求交的两个形状作为参数传递给该对象的构造函数。
图形对象的显示:在屏幕上显示一个对象需要由三种实体协作完成,即:可显像的交互对象、浏览器和交互环境,在OCC 中分别由三种类实现,AIS_InteractiveObject、Viewer和AIS_InteractiveContext.1.可显像的交互对象类:可显像的交互对象类的用途就是提供给要显示对象的Graphic2d 或Graphic3d 图形结构。
首先,根据显示请求,可显像的交互对象类会调用合适的算法来产生这种结构并保持结构框架,为显示做好准备。
在StdPrs 和Prs3d 包中已提供了标准的显示算法。
然而,我们也可以自定义一些具体的显示算法,然后在Graphic2d 或Graphic3d 包中创建对象的结构。
我们也可以为单个可显像的交互对象创建一些显示算法,但对于每一个可视化模式的算法是一定要支持应用程序的。
当然,显示的对象要具有可显像的特性或与可显像的交互对象相关。
2、浏览器类:允许用户交互地管理对象的视图。
当在一个视图中进行缩放、转换或旋转等操作时,浏览器不关心所应用的数据模型,只考虑可显像对象的Graphic2d 和Graphic3d 图形结构。
在OCC 中,2D 和3D 浏览器就是用来对显示算法产生的Graphic2d 和Graphic3d 图形结构进行操作的。
3、交互环境类:通常,交互环境类会接受一个高级的API 信号,然后对整个显示过程进行控制。
当应用程序请求显示一个对象时,交互环境的作用就是请求将可显像的交互对象的图形结构发送给浏览器,用以对象的显示。
4、显示包:显示包有AIS、PrsMgr、StdPrs、V3d 和V2d,另外,如果需要执行自定义的显示算法,还需要Prs3d、Graphic3d 和Graphic2d 等包。
5、选取包:选取包有SelectBasics、Select2D、Select3D、SelectMgr 和StdSelect。
SelectBasics 包含了选取的基础类,其中,SensitiveEntity 类定义感知图元,EntityOwner 类定义感知图元的所有者,SortAlgo 类中定义用于分类包围框的算法。
PythonOCC(OpenCascade Community Edition)是一个基于Python的开源CAD/CAE/PLM软件开发评台,它提供了一系列功能强大的工具和库,可以帮助用户快速实现CAD(Computer-Aided Design,计算机辅助设计)、CAE(Computer-Aided Engineering,计算机辅助工程)、PLM(Product Lifecycle Management,产品生命周期管理)等相关领域的开发需求。
PythonOCC中文参考手册是PythonOCC的重要文档之一,它为用户提供了全面的PythonOCC相关信息,帮助用户更好地理解和应用PythonOCC。
一、PythonOCC简介PythonOCC是基于开源CAD内核OpenCascade的Python封装,它提供了一系列可以用于CAD/CAE/PLM软件开发的Python接口和工具。
PythonOCC的主要特点包括开源免费、功能强大、易于学习和使用等。
通过PythonOCC,用户可以利用Python语言的简单易用和OpenCascade内核的强大功能,快速开发出符合自身需求的CAD/CAE/PLM软件,为工程设计和制造领域的开发者提供了一个高效便捷的开发评台。
二、PythonOCC中文参考手册的重要性PythonOCC中文参考手册是PythonOCC的冠方文档,它包含了PythonOCC库的详细说明、使用方法、示例代码等。
PythonOCC中文参考手册的重要性主要体现在以下几个方面:1.为用户提供了全面的PythonOCC相关信息PythonOCC中文参考手册为用户提供了全面的PythonOCC相关信息,涵盖了PythonOCC库的所有内容和功能。
用户可以通过阅读PythonOCC中文参考手册,了解PythonOCC的各种功能和接口,并快速掌握如何使用PythonOCC进行CAD/CAE/PLM软件开发。
OPEN CASCADE学习笔记——并行程序开发著: Roman Lygin译:George Feng这是一篇关于开源三维建模软件O P E N C A S C A D E内核的博文:R O M A N L Y G I N是O P E N C A S C A D E的前程序开发员和项目经理,曾经写过许多关于该开源软件开发包的深入文章,可以在他的博客(H T T P://O P E N C A S C A D E.B L O G S P O T.C O M)上面找到这些文章。
序在Open Cascade的论坛上知道了Roman Lygin在他的博客上写了Open Cascade notes系列文章,考虑到Open Cascade的学习资料并不多,于是从他的博客上下载了其中绝大部分文章,将其翻译过来以方便大家学习交流。
如果大家发现文中翻译有错误或不足之处,望不吝赐教,可以发到我的邮箱fenghongkui@,十分感谢。
2012年11月22日星期四第1节并行程序开发综述正如在之前的文章中提到的,我正在开发CAD Exchanger的ACIS导入部分,并且将其开发成并发执行的。
到目前为止结果非常理想(除了STL的流解析,因为之前文章中提到的Microsoft的bug,我安装了VS2008SP1正在检测这个错误是否得到了修正)。
所以我准备在这篇文章中分享我的经验,希望能够对其他开发人员有帮助(有关并行性问题在论坛上讨论的也越来越多)。
也希望Open CASCADE小组能够从我的发现中受益。
我之前已经简短介绍过几次并行应用程序开发了,再强调一下在多核时代并行应用程序将在某个时期成为主流,你最好现在就准备好应对这个趋势。
这对你的职业路线是非常有助的,这些能力将增强你的竞争力。
最近发布的Intel Parallel Studio(它已经成为我的工具箱的很重要的部分)可以调试多线程应用程序,简化开发人员的工作。
关于并行程序开发这个方面有很多基础书籍。
occ库中创建几何体的方式概述说明1. 引言1.1 概述本文旨在探讨OCC库中创建几何体的方式,并对其进行概述和说明。
通过详细介绍OCC库的概念和结构,以及几何体在该库中的作用,读者可以了解到OCC库的基础知识。
此外,本文还将深入探讨不同类型几何体的创建方法,包括基本几何体、组合几何体和复杂几何体的创建方式。
同时,我们还将探讨如何设置和修改几何体的属性,以及进行几何体的变换操作。
最后,在总结文章内容后,我们将对OCC库中几何体创建方式进行评价和展望未来的发展方向提出一些建议。
1.2 文章结构本文共分为五个部分:引言、OCC库简介、创建几何体的方式、几何体属性设置与修改、结论与展望。
每个部分都有相应的子标题,以便读者更好地了解文章脉络。
1.3 目的本文旨在给读者提供关于OCC库中创建几何体方式的全面指导。
通过学习OCC库概述、不同类型几何体创建方法以及属性设置与修改技术等内容,读者可以在开发过程中灵活运用OCC库创建几何体,满足不同的需求。
此外,我们还希望通过对OCC库的评价和展望,为未来OCC库的发展提供有益建议,并促进几何体建模技术的进一步创新和应用。
2. OCC库简介2.1 OCC库概述OCC(Open Cascade Technology)是一个开源的三维几何建模库,由一系列C++类组成,用于处理、创建和修改三维几何体。
该库提供了丰富的功能和算法来支持几何体的操作,包括创建、编辑、可视化以及导入导出等。
2.2 几何体在OCC库中的作用几何体在OCC库中起着核心的作用。
它们是构建三维物体的基本元素,可以代表各种形状、结构和属性。
通过使用OCC库提供的函数和方法,我们可以根据需要创建不同类型的几何体,并对其进行各种操作和变换。
2.3 OCC库的发展历程OCC库源于之前由法国航空航天工程师组成的Matra Datavision公司开发的CAD/CAM软件套件-ShapeWorks。
自1999年起,ShapeWorks逐渐演变为开源项目,并更名为Open CASCADE(Open CAE System for Computation in Engineering)。
occ开发手册
OCC(OpenChain Curriculum)开发手册是一个详细的指南,用于指导开发人员如何创建和发布OCC课程。
以下是该手册的一些关键内容:
1. 课程概述:这部分简要介绍了OCC开发手册的目标和结构,以及如何使
用该手册来创建和发布OCC课程。
2. 课程规划:这部分涵盖了制定课程计划的过程,包括确定课程目标、选择主题、设计课程结构等。
3. 内容制作:这部分提供了编写课程内容、制作课程材料、创建课程示例等方面的指导。
4. 课程发布:这部分详细介绍了如何发布OCC课程,包括选择合适的发布渠道、制定价格策略、设置版权保护等。
5. 课程评估与改进:这部分讨论了如何评估OCC课程的成功程度,并根据反馈和评估结果进行改进。
6. 社区参与:这部分介绍了如何利用OCC社区资源,与其他开发人员合作,共同推广和改进OCC课程。
7. 常见问题与解答:这部分提供了一些常见问题和解答,以帮助开发人员解决在OCC课程开发过程中遇到的问题。
总的来说,OCC开发手册是一个非常实用的指南,可以帮助开发人员创建和发布高质量的OCC课程。
通过遵循该手册的指导,开发人员可以确保其课程符合OCC的标准和要求,并与其他OCC课程建立一致性。
open cascade occ 几何模型创建与删除操作Open Cascade Technology (abbreviated as OCC) is an open-source library that offers a wide range of functionalities for 3D geometric modeling. In this article, we will explore how to create and delete geometric models using OCC. We will provide a step-by-step guide to help you understand the process thoroughly.1. Introduction to Open Cascade Technology (OCC)Before diving into creating and deleting geometric models, let us have a brief overview of OCC. OCC is a powerful framework that provides tools for 3D modeling, visualization, and simulation. It is widely used in various industries like mechanical engineering, architecture, and computer graphics.2. Installing Open Cascade TechnologyTo get started with OCC, you need to install it on your system. OCC is available for Windows, Linux, and macOS. You can download the latest version from the official OCC website. Follow the installation instructions provided there to set up OCC on your machine.3. Setting up an OCC projectAfter the installation, let us begin by setting up a new OCC project. Create a new directory on your system and open your preferred Integrated Development Environment (IDE). We will assume you are using C++ for this article, but OCC also supports other programming languages like Java and C#.In your IDE, create a new project and configure it to include the OCC header files and link against the OCC library. Refer to the OCC documentation for detailed instructions on setting up the project in your specific IDE.4. Creating a geometric modelNow that we have a project set up, we can start creating geometric models. OCC provides a wide range of classes and functions to define and manipulate various geometric entities like points, lines, curves, and surfaces. Let's take a simple example of creating a 3D box.a. Include the necessary OCC header files in your source code: cpp#include <TopoDS_Shape.hxx>#include <BRepPrimAPI_MakeBox.hxx>#include <TopoDS.hxx>b. Write the code to create a box:cppTopoDS_Shape box = BRepPrimAPI_MakeBox(10.0, 20.0,30.0).Shape();In this code, we first declare a variable `box` of type`TopoDS_Shape`, which represents a generic shape in OCC. We then use the `BRepPrimAPI_MakeBox` class to create a box with dimensions 10.0 units in the X direction, 20.0 units in the Y direction, and 30.0 units in the Z direction. Calling the `Shape()` function on the `BRepPrimAPI_MakeBox` object returns the actual OCC shape.5. Modifying the geometric modelOnce we have created a geometric model, OCC allows us to modify it by adding, removing, or changing its components. Let's continue with the previous example of the box and demonstrate some modifications.a. Extend the code from step 4:cpp#include <BRepBuilderAPI_Transform.hxx>#include <gp_Trsf.hxx>...Create a transformation to move the box 5 units in the X directiongp_Trsf translation;translation.SetTranslation(gp_Vec(5.0, 0.0, 0.0));Apply the transformation to the boxBRepBuilderAPI_Transform transform(box, translation); TopoDS_Shape modifiedBox = transform.Shape();In this code, we include additional header files for transforming the shape. We create a `gp_Trsf` object `translation` that represents a translation transformation with a 5.0 unit displacement in the X direction. We then use the`BRepBuilderAPI_Transform` class to apply the translation to the `box` shape. Finally, calling the `Shape()` function on the transformed object returns the modified shape `modifiedBox`.6. Deleting a geometric modelTo delete or destroy a geometric model in OCC, we can simply release its memory by calling the appropriate OCC functions. Let's extend the previous example and demonstrate how to delete the shapes.a. Extend the code from step 5:cpp#include <TopExp.hxx>#include <ShapeFix_Shape.hxx>...Delete the modifiedBoxShapeFix_Shape::Disconnect(modifiedBox);Alternatively, delete all the components of modifiedBox explicitly TopExp_Explorer explorer(modifiedBox, TopAbs_FACE); ChangeTopAbs_FACE to the desired component typefor (; explorer.More(); explorer.Next()) {const TopoDS_Shape& component = explorer.Current();ShapeFix_Shape::Disconnect(component);}In this code, we include additional header files for exploring and disconnecting the components of the shape. We use the`ShapeFix_Shape` class to disconnect the components of the`modifiedBox` shape. This frees the memory associated with the shape and removes it from the geometric model.7. ConclusionIn this article, we have explored how to create and delete geometric models using Open Cascade Technology (OCC). OCC provides a powerful framework for 3D modeling and manipulation. By following the step-by-step guide provided, you should now have a good understanding of how to use OCC to create, modify, and delete geometric models. Practice these concepts with other types of entities and explore the vastcapabilities of OCC to enhance your 3D modeling projects.。
基于OpenCASCADE的CAD平台分析摘要Open CASCADE (简称OCC)是⼀开源的⼏何造型引擎。
基于该建模引擎发展了若⼲CAD/CAE/CAM软件,如国外的FreeCAD、HeeksCAD,国内的AnyCAD。
本技术报告主要分析OpenCASCADE的在开源软件中的应⽤现状以及利⽤开源软件在861项⽬应⽤的可⾏性分析。
关键词:OpenCASCADE, FreeCAD,AnyCAD, CAD, 建模平台1. ⼏何造型引擎⽐较分析商业的⼏何造型引擎⽬前,商业的⼏何造型引擎主要有ACIS和Parasolid ,⽽ACIS在国内应⽤相对⽐较多。
国内有⼏所⾼校(如重庆⼤学、华中科⼤、清华⼤学等)有使⽤ACIS进⾏项⽬应⽤,并且由若⼲硕⼠、博⼠论⽂发表。
ACIS学习曲线⽐较陡峭,公开资料⽐较稀缺,需要购买单独的技术⽀持服务。
考虑到成本因素,在项⽬开发初期不建议使⽤该平台。
⽐较适合有充⾜资⾦的项⽬。
开源的⼏何造型引擎Open CASCADE(简称OCC)为开源社区⽐较成熟的基于BREP结构的建模引擎,能够满⾜⼆维三维实体造型和曲⾯造型,国内研究和使⽤它的单位也越来越多。
OCC可以分为建模、可视化和数据管理(OCAF)三⼤模块。
其中建模为核⼼组件;可视化组件基于OpenGL,相对其他的三维可视化OpenGL平台(如Coin3d,OpenInventor,Ogre3d,OSG,VTK等),功能简单,并且显⽰效果⽐较差,不能充分利⽤GPU硬件加速;OCAF采⽤树的⽅式管理数据,使⽤⽐较复杂,效率⽐较低,并且不适合⾃定义扩展。
因此,不推荐使⽤OCC的可视化和数据管理组件。
2. 基于Open CASCADE的开源CAD软件⽐较分析国外的开源CAD软件FreeCADFreeCAD是⼀款基于Open CASCADE和Coin3d的CAD软件,⽀持2d和3d。
优点:⽀持Python,跨平台,使⽤简单缺点缺少清晰的软件架构,代码组织⽐较杂乱,不易读懂。
o c介绍模板Objective-C 是一种面向对象的计算机语言,由 Brad J. Cox 在 1980s 设计。
它基于 Smalltalk-80,并被用于开发 NEXTSTEP 和 OPENSTEP 系统。
苹果公司开始支持 NeXT,并将 NEXTSTEP/OPENSTEP 用于 MacOS X 操作系统开发,其版本和开发环境被称为 Cocoa,使用 Objective-C 作为基础语言,开发工具 XCode 和 InterfaceBuilder。
Objective-C 是 MacOS X和 iOS 开发的基础语言。
Foundation框架是Objective-C中处理用户界面之下层(Layer)特性的重要技术集合,包括数据结构和通讯机制等。
每个框架通常包含数十个甚至上百个头文件,通常每一个框架都有一个主头文件,它包含了该框架内所有的头文件。
在 Objective-C 中,可以使用 import 指令来避免使用复杂的条件编译指令。
Objective-C 的类型补充包括 BOOL(布尔类型),其值有 YES 和 NO 两个。
由于 Objective-C 是基于 C 的语言,所以其语法和 C 语言相似,但在某些方面有所扩展和改进。
例如,Objective-C 引入了面向对象的概念,支持类、继承、封装和多态等特性。
Objective-C 的编译和运行过程包括编写源文件(.m 或 .c 文件),然后使用编译器(如 gcc)进行编译,链接生成可执行文件,最后运行程序。
在Objective-C 中,可以使用预处理器指令 import 来包含头文件,这可以避免头文件的重复包含和链接问题。
以上是对 Objective-C 的简要介绍,如果您需要更多关于 Objective-C 的信息,建议查阅相关书籍或在线教程。