OCC开源框架学习分享资料

合集下载

Open_CASCADE学习笔记-句柄

Open_CASCADE学习笔记-句柄

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源码架构

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作项目,但这方面的中文资料很少,瞧来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 的体系结构刘子建 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 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() 函数可以获取到创建好的几何模型。

OpenCascade入门教程

OpenCascade入门教程

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作项目,但这方面的中文资料很少,看来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空间的坐标系。

OpenCascade中文帮助文档

OpenCascade中文帮助文档
图 2.2 数据类型的两种处理方式
1.2.3 持久化和数据模式 数据模式是应用程序用来存储数据的一种结构,由一些持久类构成。 一个对象若可以被永久存储,则是持久的。持久对象可以被它的创建程序或
其它程序在以后的时间里再次使用。 要 想 使 一 个 对 象 在 CDL 中 是 持 久 的 , 必 须 声 明 它 的 类 型 继 承 自
例 2.1:
class Array1OfReal instantiates Array1 from TCollection (Real);
这 个 声 明 位 于 TColStd 包 的 一 个 CDL 文 件 中 。 它 定 义 了 一 个 新 的 类 TColStd_Array1OfReal。该类是通用类 TCollection_Array1 的一个实例,并且参 数类型指定为实型。
通过值处理的类型首先有基本类型,如布尔类型、字符型、整型、实型等。 通过句柄处理的类型变量,如果它不指向任何对象,那我们就说它是空的。要引 用一个对象,我们就得用它的一个构造函数实例化该对象,如例 2.3。
例 2.3:
Handle(myClass) m = new myClass;
在 OCC 中,句柄是一些特殊类,它们以引用的方式对动态存储对象进行安 全处理。句柄提供了一种引用计算机制,通过这种机制,当对象不被引用时,可 以自动析构对象。
1.3 本章小结
本章用面向对象方法和软件工程思想从整体上分析了 OCC 的体系结构。整 个 OCC 包含五个模块;模块中包含工具箱;工具箱中包含包;包中包含类;类 是 OCC 软件的最基本要素。
本章还介绍了 OCC 的几个基本概念:类、泛化、数据类型的分类、持久化 和数据模式。与 C++类的命名不同,OCC 有自己的命名方法。OCC 中类分为普 通类、推迟类和通用类三种,分别对应 C++中的具体类、抽象类和模板类。OCC 的数据可以分为句柄处理类型和值处理类型两种。OCC 的持久化和数据模式与 一般软件的原理相同,不同的是:为了使对象持久化,需要声明该对象是由 Standard_Persistent 类或其派生类派生的。

occ布尔运算源码

occ布尔运算源码

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,并将需要执行布尔求交的两个形状作为参数传递给该对象的构造函数。

Open_CASCADE学习笔记-曲面建模

Open_CASCADE学习笔记-曲面建模
让我们来看看利用 OCC 都能够使用什么建模技术。对于基本曲面生成的技术没 有什么好讲的,只看看文档和头文件就足够了。下面讲 OCC 中更为高级的话题。
直纹曲面(Ruled surfaces) 直纹曲面是通过将两条曲线利用直线连接起来生成的(例如连接这两条曲线上的 点,在另一种说法中直纹曲面是通过直线沿着两条曲线上的点运动生成的)。平 面是直纹曲面的特例(平面可以在两条平行直线的基础上通过直线连接生成)。假 如沿着两个平行的圆上的点用直线连接起来,就可以生成圆柱面或者锥面。

在 OpenCascade 的论坛上知道了 Roman Lygin 在他的博客上写了 Open CASCADE notes Geometry 和 Surface Modeling 两篇文章,拜读之后获益良多。如果大家发现文中翻译有错 误或不足之处,望不吝赐教,可以发到我的邮箱 fenghongkui@,十分感谢。
曲面对象只包含有最终的几何表示,而且不提供任何关于曲面是如何生成的信 息。这使得它相对于其他 CAD 核心部分显得很特别,例如 ACIS 使用一种非常 著名的过程曲面(procedural surface),其中不但包含生成曲面的技术,也有可供 选择的最终逼近(an optional final approximation)曲面。例如,蒙皮曲面(a skin surface)由一组截曲线(section curves)生成,整个曲面被扫过(skinned),从而生 成逼近 NURBS 的曲面。这要求建模软件支持更多的实体类型,也使得支持这些 模型的建模算法变得复杂。这也使我不得不在软件 CAD Exchanger 的转换器 (translator)中额外开发一些类来表示所有的这些变体(variety),并将它们转换到 OCC 中。我可以将 OCC 中导出的 SAT 文件再重新导入到 OCC 中,但是到目前 为止还不能支持所有的 SAT 类型。顺便说一下,如果有谁对 ACIS 非常熟悉, 就可以对 OCC 和 ACIS 做一个非常有价值对比测试报告。

OCC学习

OCC学习

图形对象的显示:在屏幕上显示一个对象需要由三种实体协作完成,即:可显像的交互对象、浏览器和交互环境,在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中文参考手册

pythonocc中文参考手册

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学习笔记-并行程序开发

Open_CASCADE学习笔记-并行程序开发

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库中创建几何体的方式_概述说明

occ库中创建几何体的方式_概述说明

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开发手册

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 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平台分析

基于OpenCASCADE的CAD平台分析

基于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介绍模板

o c介绍模板

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 的信息,建议查阅相关书籍或在线教程。

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

4.OCC基础数据
1.Abstraction 主要分两类
Basic:gp,例如gp_Pnt,gp_Circle…… Advance(句柄操作):Geom,Geom2d,例如 Geom_Pnt,Geom2d_Pnt ……
4.OCC基础数据
2.Control
4.OCC基础数据
3.Presentation
Presentation Packages Selection packages
Basic Management
PrsMgr
SelectMgr
2D objects 3D objects
V2d and Graphic2d
SelectBasics, Select2d, Select3d and StdSelect
OCC开源框架学习分享
目录
1.研究方法 2.总体描述 3.OCC与MFC框架 4.OCC的基础数据 5.OCC的显示 6.OCC与Smart Electrical数据的设计
1.研究方法(重点研究2D)
1.阅读ppt英文文档,不清楚的地方再参考OCCT帮助文 档。(达到对occ有个大致了解的目的)
3. Graphic Attributes Manager,用来设置交互实体的图形属性。置。
重点:熟练掌握
2.总体描述
Data Exchange(数据交互) 1. STEP等标准的数据结构。(免费) 2. DXF等标准的数据结构。(扩展,收费) 稍后研究
3.OCC与MFC框架
它是OCAF在MFC上的实现
CWinApp->OCC_App->MyApp
CDocument->OCC_BaseDoc->OCC_2dDoc->My2dDoc
Cview->OCC_BaseView->OCC_2dView->My2dView
pDocTemplateForView2d = new CMultiDocTemplate( IDR_2DTYPE, RUNTIME_CLASS(My2dDoc), RUNTIME_CLASS(MyFrame2D), // custom MDI child frame RUNTIME_CLASS(MyView2D));
3.OCC与MFC框架
主要功能
1.Doc完成图形数据的构建,图形数据的处理(移动,拷贝 等)。视图自动更新。 2.View接收事件的消息,并调用doc中的方法来完成响应。
3.OCC与MFC框架
学习方法 仔细读例子代码,理清逻辑关系。
4.OCC基础数据
一个图形数据(component)分为以下三部分,并分在不 同的package和class下面: Abstaction:图形的数据抽象(极简) Control:图形的各种创建方法 Presetation:图形的显示
2.总体描述
OCAF(应用程序框架)
1. 结合mfc,App,doc,view的建立。 2. 主要工作在doc和view上,doc建立数据,view完成交互。 3. 其他一些功能,拷贝,黏贴,回退,前进,外部数据交换,
文档保存等。
逐步仔细研究
3.OCC与MFC框架
它是OCAF在MFC上的实现
CDocument->OCC_BaseDoc->OCC_2dDoc
2.总体描述
MESS(3D网格呈现) 主要用于3D实体网格化显示,包括各种工具和方法 暂时可不研究
2.总体描述
Visualization(图形显示和交互)
1. Interactive Context 及AIS对象,最重要的显示及交互的环境, 所有的显示和交互由它来完成。
2. Interactive Objects,即交互实体,只有交互实体才能在交互环 境中显示。
2.重新建立一个OCC工程,在视图窗口中画一个死的基 本元素。 (能处理各种编译问题,了解occ架构和基本 运行原理)
3.在此基础上,参考occtry,OCAF的例子,完成对视图 中对象的动态绘制及交互处理。 (对occ的整个操作模 式有个基本的感受,基本入门)
4.仔细研究OCAF,在OCAF上实现cad的一些基础功能, 包括绘图,插入,移动,拷贝,回退,前进等操作。 (达到可以进行Smart Electrical开发的要求)
Cview->OCC_BaseView->OCC_2dView
pDocTemplateForView2d = new CMultiDocTemplate( IDR_2DTYPE, RUNTIME_CLASS(CMy2dDoc), RUNTIME_CLASS(CMyFrame2D), // custom MDI child frame RUNTIME_CLASS(CMyView2D));
2.总体描述
选取occ作为底层框架的原因:
1.基于C++ 2.易于实现CAD技术框架,2D,3D扩展性 3.支持windows,android,mac 4.发展多年,较为成熟,功能完善 5.EPLAN等商业软件也采用OCC
2.总体描述
2.总体描述
Foundation Classes(基本类)
1.基本的类型,变量,特殊字符串等定义,比如Standard_Integer 2.自动内存管理(handle管理机制) 3.对象集合的管理 4.基本的数学对象和运算定义,包括矢量,矩阵运算 5.内存对象的ACSII码存储?????
3.OCC与MFC框架
视图初始化过程
1.在app构造函数中得到opengl连接句柄。
2.在doc的构造函数中,用opengl连接创建viewer(仅创建 视图指针,而非视图窗口),并作初始化设置。同时通过 viewer再得到AISContext交互环境句柄。
3.在view的OnInitialUpdate()中,创建窗口(window),完 成显示设置。
知识零散,前3条必须掌握
2.总体描述
Modeling Data(数据类) 1.建立2D,3D几何对象 2.各种几何对象建立工具 3.建立3D(2D)的TOPO对象
重点:必须熟练运用
2.总体描述
Modeling Algorithms(几何计算类) 各种几何计算工具,包括插值,曲面计算等等,,,, 暂时可不研究
相关文档
最新文档