利用ACIS、HOOPS开发三维软件

利用ACISHOOPS开发三维软件

一、 ACIS相关知识

ACIS是基于英国剑桥大学博士论文提出的边界表示法生成三维实体的理论体系而开发的三维几何造型引擎,它采用面向对象的数据结构,集线框、曲面和实体造型于一体,并允许这三种表示共存于统一的数据结构中,为各种三维造型应用系统的开发提供了几何造型平台。许多著名的CAD/CAM系统都是以ACIS作为几何内核,如Auto CADTurbo CADCADKEY等。

几何、拓扑和属性是ACIS模型的三个基本类,三者统一由最基础的抽象类ENTITY派生。虽然ENTITY本身不代表任何对象,但在ENTITY中定义了它的所有子类应具有的数据和方法,如存储、恢复、回溯等。ACIS模型数据的ENTITY及派生类层次关系如图1所示。

1 ACIS数据的C++类层次结构图

1. 几何体。几何体是指模型的物理描述,如点(point)、曲线(curve)、曲面(surface)和直线(straight)等。这些元素之间不存在空间或拓扑关系。几何体的实现方式有两种:一是构造几何体,是含有几何体的数学定义的C++类,它主要用于数学计算,不被直接作为用户模型的一部分保存在模型中,但可以被包含在模型几何体中形成永久的实体对象,名称用小写字母表示,如coneellipsesphere等;二是模型几何体,是为构造几何体增加模型操作功能的C++类,它和模型一起被保存在SAT文件中。模型操作功能包括模型数据的保存和恢复、模型操作历史记录及其回溯、变换以及为模型附加系统定义属性和用户定义属性的功能。模型几何体派生于ENTITY类,名称用大写字母表示,如APOINTCONEELLIPSE等。

2. 拓扑。拓扑是指组成模型的各个对象之间的空间关系,也就是几何实体之间是如何连接的。ACIS的拓扑包括BODY()LUMP()SHELL()SUBSHELL(子壳)FACE()LOOP()WIRE(线框)COEDGE(有向边)EDGE()VERTEX(顶点)。它们继承了ENTITY的所有性质,并增加了专有的结构数据及访问这些数据的接口。各个拓扑对象之间的关系以及拓扑与几何之间的关系如图2所示。拓扑模型的遍历就是一个从上到下的循环查找的过程。

3. 实体属性。实体属性用来描述实体的非形状信息。实体可以有零个或者多个属性。ACIS中提供了ATTRIB类来描述属性,它提供了所有属性通用的数据和功能,包括用户自定义属性和系统属性。开发者可以从ATTRIB类派生自己的属性类,并以此为实体增加应用程序专用的数据。

2 ACIS中模型的数据结构

ACIS是建立在软件组件技术基础上的开放式体系结构,通过采用软件组件技术,用户可以根据实际开发的系统需要对组件进行自由选择、搭配和组合,用户也可以采用自己开发的组件取代ACIS的部分组件。ACISC++库由35DLL组成,这就为开发者开发3D应用提供了极大的柔性和功能基础。ACIS的组件包括核心组件和可选组件,可选组件可以集成到核心组件中。核心组件提供基本的造型功能,所有组件从根本上依赖于核心组件。其中,核心组件KERNEL提供了对基本实体和属性的支持,定义了拓扑和几何实体类、构造几何类、数学处理类、文件的保存及其恢复,支持历史和回溯;核心组件ACIS 3D Toolkit提供了在一致的、公共的数据结构之上的线框、曲面、实体的造型功能框架,具备三维造型的基本功能,如零件/模型管理、图形交互、基本显示、OpenGL显示等;组件BASE具有其它ACIS组件要用的基本通用功能。

ACIS的每个组件都包括ACIS类、API函数和DI函数。ACIS类描述实体模型的几何、拓扑和物理属性信息,用来定义实体模型的数据结构。在应用中,可直接通过类的公共数据成员和保护数据成员以及成员函数与ACIS相互作用。开发人员也可以根据自己系统的需要从ACIS类派生出自己的应用类,类接口在各版本中可能有变化。API函数作为ACIS和用户程序的接口,在用户程序开发中十分重要,几乎封装了所有实体模型数据的重要操作,包括创建几何模型、修改模型属性和提取模型信息。应用通过调用API函数来创建、修改或恢复数据,API函数将造型功能与应用支持特性集成起来,应用支持特性如变量错误检查和回溯。当在API例程中发生错误时,ACIS可立即自动回溯到调用此API例程前的状态,从而保证模型不会崩溃。无论ACIS底层的数据结构或函数如何修改,这些API函数在每一版本中均保持不变。DI函数提供了不依赖于API而对ACIS造型功能可直接访问的接口,与API不同的是,这些函数在各版本中可能有变化。因此,开发时尽量不采用DI函数,而是使用ACIS类和API函数。

二、HOOPS相关知识

HOOPS是建立在OpenGLDirect3D等图形编程接口之上的更高级别的应用程序框架。HOOPS为软件开发人员提供了强大的图形功能,包括高质量的模型显示、便捷的人机交互、OpenGLDirect3D在内的多种渲染管道的支持、高级渲染、3D图形的矢量化输出、动画、动态干涉检查以及图形数据流化处理等。

HOOPS组件按功能可分为HOOPS/3dAFHOOPS/Stream以及HOOPS/NET三个子组件。HOOPS/3dAF组件是一个3D图形应用程序框架,是3D产品组的核心组件,采用了保留模式的图形数据库和多种渲染管道来管理和绘制图形对象。HOOPS/3dAF提供了一个基于一系列模块应用组件的灵活的架构基础,提供了非常全面的应用程序开发接口供用户选用或根据用户特定需求进行定制,这能促使快速开发和维持高性能的设计、可视和工程包。HOOPS/Stream是平台和GUI均独立的C++类的集合,它能使应用程序通过互联网和各种带宽的网络有效地流出高压缩的文件,包括巨大的2D3D和自定义数据。这个功能使得它成为开发工程软件、CAD /CAM /CAE、分析、数字模仿、仿真和科学可视化应用的理想组件。它也允许开发者创建仅有的真正开放的可视化标准(HSF),这对于工程和网络用途都是最优的。HOOPS/NET组件则可以用于网络协同。这三个子组件既可以单独授权,也可以结合在一起使用。

HOOPS中,场景是通过“片段”树的形式来描绘的。图3为一典型的“片段”树结构,位于最顶层的是根“片段”,树中的每个结点代表一个“片段”。构造一个模型时,首先要产生一个根“片段”,再根据具体要求从根“片段”产生一级子“片段”,二级子“片段”等。图3中的根“片段”有4个一级子“片段”,即DriverModelIncludeLibraryStyleLibraryDriver“片段”是HOOPS/3dGS自动创建的设备驱动“片段”,用来实现图形的显示与打印,针对不同的输出设备和显示平台,系统自动产生Type“片段”作为Driver的子“片段”。这些子“片段”实质上是一些抽象的C++类,不能直接调用,可通过生成类的对象实例来完成任务。若要在此窗口中显示模型,则需要把模型的“片段”插入窗口“片段”中。Model“片段”可看作是总装配体,包含part1“片段”、part2“片段”等零件。其中part1“片段”包含body1“片段”和body2“片段”两个零件,body2包含shell“片段”和line“片段”等实体“片段”。IncludeLibrary“片段”可以看作是零件库,在此“片段”下创建子“片段”构建标准零件库。图3中,part2“片段”是通过从此零件库复制子“片段”而得到。StyleLibrary“片段”可看作是属性库,某个“片段”的属性可通过复制其内部的属性子“片段”获得。

3 HOOPS“片段”结构

三、BRIDGE相关知识

3D应用程序通过HOOPS/GUIACISHOOPS组件建立连接,从而实现利用ACIS内核进行造型,并利用HOOPS组件进行可视化和人机交互。ACISHOOPS之间通过HOOPS/ACIS桥进行通信,从而实现文档和视图分开。ACISHOOPS采用不同的数据结构来描述模型,需要经过转换才能将ACIS实体加入到HOOPS数据结构中。SpaHBridge动态库是连接ACISHOOPS的桥梁,用来完成实体转换和ID映射。在SpaHBridge中,HA_Render_Entities()函数可以读入ACIS实体列表,根据列表调用IEntityConverter类把ACIS的实体转换为HOOPS的实体“片段”并插入到HOOPS的“片段”树结构中加以渲染。

为了实现在HOOPS显示窗口中点选几何元素,实现对相应的ACIS实体进行操作,需要在HOOPS几何元素与ACIS实体元素之间建立映射关系。HA_Compute_Geometry_Keys()ACIS实体指针作为参数来获取对应的实体“片段”的键值。相反,HA_Compute_Entity_Pointer ()可以获得与HOOPS实体“片段”对应的ACIS实体的指针。HOOPS/MVO的操作类通过键值访问“片段”,再通过调用HA_Compute_Entity_Pointer ()函数获得指针对ACIS实体进行操作.

四、开发过程总结

利用ACISHOOPS来开发三维图形软件,主要有以下几点:

1. 软件采用vc2005开发,主要内容是完成交互系统、造型系统和渲染系统的设计与实现。

2. 明确应用程序的开发框架,如图4所示。

4 3D应用程序的开发框架

3. 通过HOOPS/MFC,建立MFCHOOPS的接口,接收键盘/鼠标事件,并传递到HOOPS/MVO中。在HOOPS/MVO中,实现人机交互的控制。包括接受用户输入,对模型的渲染和显示控制,模型拾取操作等。

4. 通过HOOPS/ACIS桥,调用ACISAPI函数创建或修改3D几何对象,并存储在SAT文件中。对象的各种属性(几何属性和物理属性)存储在各自的属性表中。不论是简单几何体还是复杂几何体(通过布尔运算、拉伸、旋转等创建的物体)都通过ACIS来创建和修改。

5. ACIS来创建和管理几何模型,通过HOOPS/ACIS桥同步将其存放在HOOPS数据库的segment段中,最后通过各种渲染引擎渲染成几何实体。

6. 几何模型数据存放格式为hsfhmf

7. 开发时的一些基本程序代码。

启动:

      api_start_modeller(0);

HA_Init(0);

      unlock_spatial_products_1494();

……

造型:

      HC_Open_Segment_By_Key(m_pHView->GetViewKey());

BODY* sphere_body;

api_make_sphere(radius, sphere_body);

api_transform_entity(sphere_body, delta_transf);

……

转换:

HA_Set_Rendering_Option();

HA_Render_Entity(ENTITY*) sphere_body);

HC_Close_Segment();

……

终止:

HA_Close();

      api_stop_modeller();

……

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ACIS CAD是AutoCAD的三维建模软件开发包,它提供了一套完整的API,用于创建、编辑和分析三维对象。ACIS CAD开发类库9是ACIS CAD的第九版开发类库,它具有更先进的功能和性能,可以为开发者提供更好的开发体验和更丰富的功能选项。 ACIS CAD开发类库9的主要特点包括以下几点: 1. 高性能:ACIS CAD开发类库9具有更高的性能,可以更快地处理三维对象和进行复杂的几何计算。这使开发者能够更高效地进行三维建模和数据分析,提高开发效率。 2. 全面的功能:ACIS CAD开发类库9提供了一系列功能强大的工具和方法,可用于创建、修改和操作三维模型。开发者可以利用这些功能来实现各种要求,如绘图、建筑设计、工程分析等。 3. 跨平台支持:ACIS CAD开发类库9可以在多个平台上使用,如Windows、Linux等,帮助开发者更方便地进行跨平台的软件开发。这使得开发者能够更广泛地应用ACIS CAD开发类库,并满足不同平台的用户需求。 4. 接口丰富:ACIS CAD开发类库9支持多种编程语言和开发环境,如C++、.NET等,提供了丰富的接口和开发工具,方便开发者根据自己的需求进行二次开发和定制。 总之,ACIS CAD开发类库9是一款功能强大、性能高效的三维建模软件开发包,它的出现为软件开发者提供了更好的工具和资源,使他们能够更轻松地开发出高质量的三维建模软件。 ### 回答2: ACIS CAD开发类库(ACIS)是一种用于构建CAD(Computer-Aided Design,计算机辅助设计)软件的二维和三维几何建模引擎。ACIS CAD开发类库9(ACIS 9)是该引擎的第9个版本。 ACIS 9提供了一套强大的工具和功能,可以帮助开发人员在他们的CAD应用程序中实现高效的几何建模。该类库支持在平面和空间中进行精确的二维和三维几何操作,例如点、线、曲线、多边形、曲面和固体的创建、修改和分析。 ACIS 9具有出色的性能和稳定性,能够处理大规模的复杂几何模型和操作。它提供了一系列强大的API(Application Programming Interface,应用程序编程接口),以便开发人员可以使用C++、C#、Java等编程语言来访问和操作ACIS的功能。这使得开发人员可以根据其应用程序的需求自定义和扩展ACIS的功能。 ACIS 9还支持多种CAD数据格式的导入和导出,例如DWG、DXF和STEP。这使开发人员能够与其他CAD软件进行无缝集成,并与其他文件格式进行互操作。 总之,ACIS CAD开发类库9是一种先进的几何建模引擎,为开发人员提供了强大的工具和功能,可以在CAD应用程序中实现高效的几何操作。通过使用ACIS 9,开发人员可以创建功能强大且性能卓越的CAD软件,并实现与其他CAD软件的互操作。 ### 回答3: ACIS CAD开发类库9是一款CAD(计算机辅助设计)开发类库的第九个版本。ACIS是一种用于创建、修改和分析3D几何模型的软件开发工具包。ACIS CAD开发类库9提供了一系列工具和函数,帮助开发人员在他们的应用程序中集成各种CAD功能。 ACIS CAD开发类库9具有多种功能和特点。首先,它支持多种不同的CAD数据格式,包括2D和3D模型。开发人员可以使用这个类库读取和写入各种CAD文件,如DWG、DXF等。 其次,ACIS CAD开发类库9提供了一套强大的几何操作函数,使开发人员能够创建、修改和分析CAD模型。这些操作包括布尔操作(如并、交和差)、旋转、缩放、镜像等。开发人员可以根据自己的需求使用这些函数进行几何操作,从而实现复杂的CAD功能。 此外,ACIS CAD开发类库9还提供了一套高级几何算法,用于解决CAD中的几何问题。开发人员可以使用这些算法来计算曲线和曲面之间的交点、切线、曲率等。这些算法能够帮助开发人员更精确地分析和操作CAD模型。 最后,ACIS CAD开发类库9还支持各种编程语言,如C++、C#、Java等,方便开发人员根据自己的喜好和需求来进行开发。同时,这个类库还提供了丰富的文档和示例代码,方便开发人员学习和使用。 总的来说,ACIS CAD开发类库9是一个功能强大的CAD开发工具,可以帮助开发人员快速集成各种CAD功能,并提供丰富的几何操作和算法支持。它广泛应用于建筑、制造、航空等领域,为CAD开发提供了强大的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值