1.前言
以下文本简要概述了 ACIS 中的几何建模功能和 Open CASCADE Technology (OCCT) 几何内核。本质上,这两个库都是在解决与 CAD/CAM/CAE 领域相关的类似技术问题时具有相似性。
然而,它们的功能可能在一定程度上有所不同。本文档旨在提供一个简短的分析 OCCT 和 ACIS 之间的当前差异。对由于 ACIS 内核的专有性质,它具有挑战性。此外,为了充分理解每个指定几何内核的优缺点,无疑需要利用两者的实践经验。因此,我们将本研究仅限于对各种工具,而无需深入研究它们的有效性和弹性。
ACIS [1] 是 Spatial Corp(自 2000 年以来一直是 Dassault Systemes 的一个部门)开发的 SDK。此外,值得注意的是,Spatial Corp 提供了另一个几何内核,称为 CGM(CATIA/Convergence Geometric Modeler)。文章“Spatial、ACIS、CGM 和几何建模器的未来”[2] 简要概述了这两种产品。本报告不包含有关 CGM 的信息。值得一提的是,数据交换功能独立于 ACIS 建模器,可通过 InterOp 产品访问。尽管如此,我们建议将 InterOp 组件归类为与 ACIS 本身相同的类别,因此暗示数据交换功能不排除在本次检查之外。
本文档与以下版本的 ACIS 和 OCCT 相关:
• 3D ACIS Modeler 和 3D InterOp R24 (SP2),2014 年 2 月。
• Open CASCADE Technology(开发版本;初步比较于 2014 年 8 月进行,更新于 2023 年 12 月)。
当前分析不包括以下功能:
• 直接编辑,例如推/拉或面调整操作。
• 隐藏线移除 (HLR) 算法。
• 在 ACIS 评估期间(ACIS 文档公开访问期间)未观察到的一些高级算法。
• OCC 提供的商业软件包(API 扩展),未在开源中提供。
• 钣金加工 API。
我们承认,自 2014 年进行初步评估以来,ACIS 的 API 在其整合功能方面可能已发生重大变化。截至 2023 年,Quaoar Studio 团队不再能够获得最新的 ACIS 二进制文件和文档。尽管如此,我们认为目前的列间比较对于更深入地了解 OpenCascade 功能的范围仍然很重要。这种比较为评估 OpenCascade 提供了不同的视角,有助于更彻底地评估其功能范围。
2.范围
ACIS 和 OCCT 都提供了广泛认可的 B-rep(边界表示)实体建模范例的实现,因此其基本原理非常相似。这些原理包括几何和拓扑之间的区别,以及使用传统建模技术和其他基本数学方法。因此,我们可以通过检查库的基本特征并逐步采用更复杂的建模方法来评估这些库。正在考虑以下功能类别:
生态系统 | 作为建模者基本基础的基本工具和课程。 |
---|---|
基础数学 | 基本数学运算的程序,例如线性代数、优化、定位函数根等。 |
基本几何 | 可用的几何图元包括圆锥曲线、二次曲面、参数曲线和曲面。该模块还可能包括低级评估技术,例如用于样条评估的 De-Boor 算法等。 |
基本几何工具 | 用于构造、修改和分析几何图元的工具。例如曲率分析、曲面延伸、插值、近似、相交等。 |
基本拓扑 | 拓扑结构的内容、公差的使用、等距变换的应用、装配。 拓扑学是一门数学学科,主要研究当物体以连续方式变形(不会撕裂或粘合)时保持不变的空间特征。 这些特征称为拓扑不变量。拓扑学,笼统地说,描述了一种在空间中没有固定位置的“橡胶”模型。 例如,圆形边缘和椭圆形边缘具有相同的拓扑结构,但在几何上有所不同。 同样,方形面和梯形面在拓扑上是相同的,这意味着它们具有相同数量的边和顶点, 但它们在形状和比例方面在几何上并不等同。当拓扑实体链接到几何实体时, 其形状、位置和方向将在空间中永久定义。在 ACIS、OCCT 和其他广泛使用的建模器中, 拓扑是指模型内不同对象之间的相邻和连通性关系。这是边界表示 (B-rep) 的基础。 |
基本建模 | 核心建模功能已成为任何 B-rep 内核的既定标准。 |
高级工具 | 在特定工程领域很有用的高级建模功能。 |
数据交换 | 与其他 CAD 内核和平台的互操作功能。 |
应用程序基础设施 | 最终用户的应用程序开发 API。 |
3.分析
3.1生态系统
ACIS | OCCT | |
---|---|---|
编程语言 | C++ | C++ 可以使用基于 SWIG 的包装器来使用不同的语言(Java、C#、Python 等)运行 OCCT 功能。 |
标准 C++ 类型 | 类型别名很少使用。但是,ACIS 通常倾向于使用小对象,而不是合并内置类型(例如,曲线或曲面上的参数用不同的 C++ 类定义)。 ACIS 主要尝试最大程度地利用标准 C++ 类型和函数。如果程序员了解传统的 C++ 功能(包括 STL),他就不需要花费过多的时间来研究 ACIS 环境。 | 使用类型别名:int = Standard_Integer,double = Standard_Real 等等。 |
单位 | 无单位。CAD 转换器支持单位转换。 | 默认情况下,毫米是测量单位。但是,建模功能不受此选择的影响。CAD 翻译人员可以进行单位转换。 |
内存管理 内存分配/释放是建模操作中常见的热点。通常,重型算法更喜欢使用“内存竞技场”而不是“新建/删除”函数。不同类型的“竞技场”通过内存分配器类实现。 | ACIS 内存管理系统能够监控内存泄漏、收集内存使用情况数据,并允许自定义内存分配和释放。配置参数允许激活内存泄漏审计。 | OCCT 的旧式内存管理可有效处理多个 C++ 对象的分配和释放。内核的 Standard_Transient 类的子类启用了自动内存管理。除了旧式内存管理器外,还可以利用 Intel TBB (c) 提供的标准操作系统分配/释放功能和可扩展分配器。这些管理策略的选择是通过配置变量确定的。没有对内存泄漏的审计。 |
隐式初始化和终止 一些库需要明确初始化和终止其内部资源。 | 需要使用函数 “api_start_modeller” 和 “api_stop_modeller” 进行显式初始化。 | 无需显式初始化。OpenCascade 中不存在“建模范围”或“会话”的概念。 |
异常 建模者如何处理异常。 | ACIS 力求做到异常安全。它嵌入了错误跟踪功能:每个 API 函数都会返回一个错误代码(用名为“结果”的值对象包装)。 | OpenCascade 不具备异常安全性。只要其功能使用不当,就会引发异常。所有异常均源自基类 Standard_Failure。某些情况下也会使用错误代码。 |
脚本 建模器的入口点。 | Scheme ACIS 接口驱动程序扩展 (AIDE):命令行应用程序,通过基于 Scheme 的命令为库提供接口(Lisp 方言) 主观上,我们发现 Scheme AIDE 不如 OpenCascade 的 DRAW 控制台符合人体工程学:与 Tcl 相比,类似 Lisp 的语法更为复杂;相机行为不太友好(旋转未围绕模型中心进行校准);查看者 ID 不易追踪;即使在简单的场景中,FPS 似乎也更差。 | 测试工具绘制:基于 Tcl 的命令行应用程序为库提供接口。 |
高级“强大”API 几何建模库通常需要编写大量 C++(或脚本)代码,即使对于简单的操作也是如此。为了增强可用性,知名的建模者经常提供“超级层”API,它既简单又强大,封装了底层低级功能的很大一部分。此外,此类 API 通常管理输入验证和错误报告。 | ACIS 拥有一个 API,其中包含名称以“api_”为前缀的全局方法。除了 API 之外,还有可访问的“直接接口”函数,这些函数可以是全局函数,也可以是类级函数。 | OCCT 完全面向类。全局函数很少使用。API 可通过专用类获得(例如,在 BRepPrimAPI 包中)。 |
可以使用低级结构 有时,现有 API 可能包含过多的智能,因此使用较低级别的函数是更好的选择。例如,用于放样的 API 可能会使用在纯几何用例中冗余的拓扑结构(轮廓)的重建。在这种情况下,可以更有效地使用较低级别的几何程序。 | 可用的 API 在为典型几何建模应用程序提供的功能方面存在局限性。基于 ACIS 的代码的通常“样式”遵循与此类似的结构: API_BEGIN api_*(…) api_*(…) … API_END 例如,要创建一个实体框,可以编写以下代码: API_BEGIN BODY* body; api_make_cuboid(…, body); API_END OCCT 提供了与“api_make_cuboid”等同的功能,但它还允许从基本对象构建“盒子”形状,让您完全控制其内容和关系。当涉及到不寻常的使用场景时,ACIS 似乎有更严格的规则。 | 所有低级函数和数据结构均可用,即使它们仅由 OCCT 内部使用。不过,从这些实体自下而上地组成形状是一个费力且容易出错的过程。 |
全局(静态)变量 全局变量在整个工作会话期间保留其值。这些变量可用于模态地影响库的行为,直到其值随后被改变。 | 可用的。 甚至拓扑正确性规则也可能因全局选项而略有不同。例如,根据“periodic_no_seam”选项,ACIS 将要求或不要求在具有底层周期性表面的面上存在接缝边缘。因此,圆柱面可能具有两个断开的边界环,中间没有接缝。 | 可用的。 通常使用全局变量(例如,测量单位)来配置互操作性选项。 |
3.2基本数学
ACIS | OCCT | |
---|---|---|
线性代数 | ACIS 使用 Eigen 库。 由于 ACIS 是专有产品,因此我们无法分析这种依赖性有多深。 | 所有必要的基本线性代数子程序 (BLAS) 都是内部实现的。OpenCascade 使用自己的线性代数,确保完全独立于第三方库。与此同时,人们承认,与 Eigen 等知名且受支持的库相比,OpenCascade 固有的 BLAS 实现可能不太准确和高效。 |
数值方法 | ACIS Laws 组件为一系列数值工具提供了统一的接口。除了与 Laws 相关的评估方法外,还提供多种数值函数: 查找全局最大值和最小值; 查找多维局部最小值; 执行数值积分; 查找函数根; 数值微分。 | OCCT 的数学包(TKernel + TKMath 库对)中提供了涵盖相同问题的数值方法。 |
3.3基本几何
ACIS | OCCT | |
---|---|---|
3D 精度 两点被视为重合的最小可感知距离。 | SPAresabs(1.0E-6) | Confusion (1.0E-7) |
连续性要求 几何所需的最小平滑度阶数。代码 G0-GN 用于表示几何连续性,不受参数化的影响。另一方面,代码 C0-CN 用于表示参数连续性,由所选的参数化决定。 | G0 是可以接受的,但强烈不建议使用,因为在非 G1 不连续区域中无法评估点垂线。 | G0 一般被接受,但有些算法(例如偏移)需要 G1 或 C1 连续性。 |
解析曲线 曲线的特殊情况。 | 直线、椭圆和螺旋线。 ACIS 中不显示圆形:而是使用椭圆形的特殊情况。 | 直线、所有圆锥曲线(圆、椭圆、抛物线、双曲线)。 |
其他曲线类型 自由形式的参数曲线和特殊类型曲线。 | 复合曲线、B 样条曲线。 | B 样条曲线、贝塞尔曲线、偏移曲线。 |
规范曲面 表面的特殊情况。 | 平面、圆锥、球体、圆环。 | 平面、圆锥体、球体、圆环体、圆柱体。 |
其他表面类型 自由形式参数曲面和特殊类型曲面。 | B 样条曲面、混合曲面、直纹曲面、和曲面、偏移曲面、旋转曲面、蒙皮曲面、净曲面、扫掠曲面、由法则定义的曲面。 | B 样条曲面、贝塞尔曲面、直纹曲面、旋转曲面、扫掠曲面、偏移曲面。 |
参数曲线和曲面 参数曲线和曲面以声明方式定义为程序。没有明确的参数方程可供评估。例如,曲线可以精确地描述为两个曲面之间的交点。曲面可以定义为滚动球与两个支撑面接触时扫过的路径。 | 此类定义通常比样条近似更紧凑、更精确。此外,与相关近似相比,程序定义更不可变,因为它们建立了一种创建几何图形的理想方法(可以以选定的精度级别恢复)。尽管如此,程序几何对第三方建模者提出了很高的要求,因为他们提供的建模功能必须足够强大才能处理如此复杂的几何图形。通常的做法是从这些声明中得出标准(样条)近似值并省略原始声明。 | API 级别不支持程序几何。通过使用适配器,可以定义各种参数曲线和曲面。一些算法在内部使用此方法,但结果通常以 NURBS 近似值提供。 我们不认为偏移曲线、偏移曲面、旋转曲面等实体是程序性的,因为它们具有确定性的参数方程。 |
点云 点云在计量、逆向工程、可视化和其他工程领域有着广泛的应用。 | ACIS 提供专用于处理点云的工具。这些工具不仅可以存储点的 3D 位置,还可以执行布尔运算和压缩。 | OCCT 不提供任何专门用于点云处理的工具(某些 AIS 类除外)。但是,大多数所需功能都可以使用现有的常用工具来实现。 |
3.4基本几何工具
ACIS | OCCT | |
---|---|---|
几何验证 | 每个几何图元都可通过专用方法进行自我检查。结果将返回无效列表。 | 有效性检查通常在整个原始构造阶段进行。如果定义的属性不一致,则会抛出异常,例如,如果 B 样条曲线中的极点数与 B 样条度和节点向量不对应。除此之外,布尔运算可能带有自己的临时检查。此外,高级 BRepCheck_Analyzer 类包含基本的有效性检查(此工具实现的检查表是 OpenCascade 库中的核心检查表)。 |
3.5拓扑模型
ACIS | OCCT | |
---|---|---|
造型类型 实体建模、曲面建模、线框建模、CSG(构造实体几何)等 | 实体、曲面和线框建模。 还允许基于使用体积和片块表示的几何形状的细胞建模(见下文)。 | 实体和曲面造型。 |
拓扑模型的完备性 支持的拓扑实体的类型及其关系(包括迭代器和循环器)。 | 如下图所示: #子实体存储对其父实体的引用。对下一个和上一个实体的引用也会保留(例如,循环中给定实体的下一个 COEDGE)。几何图形可以在多个拓扑实体之间共享。例如,两个面可能引用同一个表面。这有利于最大限度地减少内存使用量。 | 如下图所示: #子实体不存储对父实体的引用。需要使用专门的探索工具来定位所提供子实体的父实体。实体不存储对其自身级别的下一个和前一个实体的引用。几何图形可以在拓扑实体之间共享,尽管大多数算法生成的形状中每个对象都有其自己的底层几何图元的单独副本。这可能有利于防止并行计算中的数据竞争,尽管这种逻辑和相应的检查不是“开箱即用”的。 OCCT 的拓扑模型基本上受到 ISO 10303-42 的启发。 |
变换 正交变换(不假设几何形状的修改)。 | 应用于体层面。 | 可以将变换与任何拓扑基元关联起来,但强烈建议不要将它们用于除“体”之外的基元。 |
容错建模 可靠的几何建模系统的一个重要方面是有效处理几何不精确性。 | 99% 的几何比较仅使用一种公差,即 SPAresabs。此外,还有一个专门的精度值,称为 SPAresnor,专门用于角度比较。此公差由 SPAresabs 的值和模型中两点之间的最大距离决定。根据 ACIS 文档,不建议修改此值。 数值方法的收敛标准使用不同于公差的精度:例如,SPAresfit 值用于 B 样条近似。 在某些情况下,例如在数据交换工作流中,单一的全局公差似乎不够。 在处理这种情况时,ACIS 采用所谓的“公差实体”:具有相应局部公差值的边和顶点。表现出局部公差的实体用专门的数据结构表示,例如 TCOEDGE 而不是 COEDGE、TEDGE 而不是 EDGE 和 TVERTEX 而不是 VERTEX。如果 ACIS 认为这种转换是必要的,它能够从非公差实体转换为公差实体。B-rep 面没有特定的公差。 | 在 ACIS 术语中,OCCT 中的所有拓扑实体都被视为容差实体,这意味着为顶点、边和面分配了特定的容差值。下级实体的容差必须超过相应上级实体的容差。例如,顶点的容差不应小于其所属边的容差。 数值方法的收敛标准使用专用的精度。例如,Precision::Approximation() 用于 B 样条近似。 |
蜂窝拓扑 已经开发了 B-pep 的附录,以便使用一组体积 (3D) 或片 (2D) 单元来表示模型。在单元表示方案中,不使用与电线相关的信息。特定于应用程序的数据可以链接到单个单元,提供有关材料、边界条件等的信息。 | ACIS 提供专为细胞拓扑设计的替代数据结构。体积和片状细胞均可使用。2D 细胞可能在其内部围绕空腔。这些结构通过属性连接到 B-rep 模型。后者绑定使得在整个建模过程中保留细胞数据结构成为可能。 | OpenCascade 的范围仅限于 B-rep 表示方案。但是,在库的过去版本中可能存在一些遗留的体素化 API。 |
3.6基本建模
ACIS | OCCT | |
---|---|---|
平面草图的挤压 通过沿直线扫描到给定的距离,从 2D 草图生成 3D 模型。 | 可用。此外,ACIS 还提供了专用 API,用于挤压仅由直线段和圆弧组成的基本平面。后者允许在电子设计自动化 (EDA)、计算机辅助工程 (CAE) 和建筑、工程和施工 (AEC) 领域实现更好的性能。 | |
布尔运算 切割、融合、公共、相交。 | 可用。允许非流形拓扑作为结果。表面可以非常接近。ACIS 采用了“模糊布尔”的概念,这是对传统布尔运算的增强,在输入“模糊”参数时激活。模糊参数指定一个接近范围,其中来自不同主体的实体被视为重叠。此参数的值必须超过全局分辨率(SPAresabs)。否则,它将被忽略。 | 可用。允许使用非流形拓扑作为结果。表面可以非常接近。OpenCascade 引入了“模糊布尔”的概念,以便为调用者代码提供对所用公差的更好控制。当未指定“模糊值”时,布尔依赖于子形状的局部公差。OpenCascade 中布尔的“模糊”模式的实现受到 ACIS 中相同功能的影响。 |
放样 与蒙皮相同,但可以直接控制定义曲线上的曲面切线。 | 可用。支持以下放样类型: 曲面间放样、 使用法则放样、 使用引导曲线放样、 放样到某一点。 | 可用。大多数类型的放样都可以使用 GeomFill 包或较低级别的插值和近似工具(例如,使用 AdvApprox 包)来实现。 |
填补空白 构建一个面(表面贴片)来填充一个由边(曲线)组成的回路所表示的洞。 | 可用于覆盖组件。 | 可通过约束填充工具 (PLATE) 使用。 |
修改历史 | 通过所谓的“历史流”实现复杂的处理。ACIS 自动跟踪每个实体的修改。 | 在建模 API 级别上受支持。修改历史记录可以映射到 OCAF(开放 CASCADE 应用程序框架)。但是,跟踪每个拓扑实体的修改链应该由程序员手动完成(使用 BRepTools_History 类) |
3.7高级工具
ACIS | OCCT | |
---|---|---|
模型简化 通过移除不可访问的区域来加速碰撞检测;为 FEA 求解器准备模型(特征消除);压缩数据以进行 Web 可视化等。此类移除功能是“直接建模”理念的一部分。 | 删除小的特征:具有给定面积的面、给定高度的凸起和凹陷等。所有拓扑约束都得到满足(模型不会崩溃)。 | 有限的功能:移除小边(删除或与邻居合并)、移除孤立面、移除与邻居面重新相交的面。 |
几何简化 从 B 样条几何到解析形式的转换。 | 删除多余的样条结/极点和类似的原始级别功能。将样条转换为解析几何是 Analysis Situs 的一项功能。 | |
Facets 粗糙面通常用于可视化,并在某些其他范围内用于简化计算(例如,间隙分析)。 | Faceter 组件 (FCT) 用于生成粗视图独立网格。面信息不存储在拓扑结构和 SAT 文件中。但是,面可以通过网格管理器输出到特定于应用程序的数据结构。 | B-rep Mesh 组件用于生成面。生成的离散模型与相应的拓扑实体(作为特定类型的几何体)绑定,并存储在 OpenCascade 原生文件中。 |
表面网格 高质量的表面网格通常用于工程分析。 | 分面 (FCT) 可以传输到 VKI (Visual Kinematics) 库,用于生成各种类型的高质量网格。FCT 结果可作为后续网格划分过程的输入。因此,B-rep 模型实际上并未得到利用,相反,ACIS 通过中间镶嵌网格与 VKI 进行通信。VKI 能够生成高质量的表面、四面体和六面体网格。随着 DS 收购 Distene 公司,其他网格划分技术可能已经可用。但是,此功能并非内在地集成到 ACIS 中。 | 可提供具有可控元素尺寸的刻面。 |
并行刻面 并行计算可以显著提高刻面过程的效率。我们正在考虑两种并行性:单体刻面和多体刻面。单体刻面涉及同时处理所有面。多体刻面不表现出面之间的并行性,而是表现出体之间的并行性。对于涉及大量体的模型,后一种形式的并行性可能更有效。通常,这种类型的并行处理不需要线程之间进行广泛的同步。在单体刻面的情况下,边缘不属于单个面的情况并不常见,因为它们通常由多个面共享。 | 可以采用的并行形式有两种:基于面的并行和基于体的并行。 | 并行是在面和边的层面上实现的。 |
碰撞检测 此标准功能允许检查多个工件之间的冲突。 | 支持 | 不支持 |
特征识别 识别给定类型的机械特征。 | 给定一个种子面和一个特征类型,返回定义该特征的所有面。ACIS 可以检测凸起、凹陷和圆角链。 | 特征识别可在 Analysis Situs 中实现。 |
广义空间扭曲 混合、拉伸、扭曲、非均匀缩放。 | 可用。通用数学函数(ACIS 文本法则)可用于执行几乎任何类型的程序变形。 | 不支持 |
模式 自动创建重复的机械特征,例如孔和凹槽的排列。如果没有特殊处理,实现此功能通常需要进行一系列布尔运算。 | 利用专用的模式描述,通过一个布尔运算实现。SAT 文件被相应地压缩。 | 需要付出更多努力(C++ 代码)才能重现这些类型的操作。也可以使用一个布尔运算。 |
雕塑曲面造型 操纵 B 样条控制点可以改变曲面的形状,但不会强制执行几何约束。另一种流行的曲面建模技术是放样:在这里可以满足约束,但无法进行雕刻。此外,放样技术通常会产生质量较差的曲面。另一种表面建模技术是弯曲简单的解析表面(例如平面),直到满足几何约束。可以为该过程制定基于能量的优化问题。目标表面将是能量标准上产生最小值的表面。 | 由 ACIS 可变形建模 (ADM) 组件支持。 | 仅限基于 PLATE 的插值。OpenCascade 中提供的其他“受限填充”策略功能不够强大。 |
3.8数据交换
ACIS | OCCT | |
---|---|---|
STEP (AP203/214) | 支持 | 支持 |
IGES | 支持 | 支持 |
ACIS SAT | 支持 | 不支持 |
OCCT BRep | 不支持 | 支持 |
Parasolid XT | 支持 | 不支持 |
DXF | 只读 | 不支持 |
修复 当 CAD 模型从一个几何建模系统转换为另一个几何建模系统时,其有效性可能会出现问题。在处理程序几何时,可能会遇到拓扑结构、公差值和几何定义中的异常。因此,为了保证转换后的模型在拓扑和几何方面的准确性,可能需要付出额外的努力。旨在解决已知互操作性问题的后处理器通常被称为“修复器”。 | 支持 | 支持 |
3.9应用程序基础设施
ACIS | OCCT | |
---|---|---|
撤消/重做、保存/恢复、复制/粘贴 几何建模应用程序中的标准功能。 | 在 ENTITY 基类中实现,它是大多数几何和拓扑数据结构的基础。客户端代码必须从 ENTITY 继承其类才能利用撤消/重做、保存/恢复和复制基础结构。这种技术非常具有侵入性。此外,保存/恢复功能受到本机 SAT 和 SAB 文件格式的限制,因此很难构建自定义格式。 基本上,所提到的功能是建模器的重要组成部分。 | 与拓扑模型分离。在 OCAF 模块(Open CASCADE Application Framework)内实现。 此功能不是建模器的一部分。因此,在不需要太多 OpenCascade 建模功能的应用程序中使用传统的撤消/重做、保存/恢复和复制/粘贴功能没有任何问题。 |
将特定于应用程序的数据绑定到几何图形 在 CAD 模型中,我们的兴趣通常超出几何形状。在工程应用中,将某些属性与模型的不同组件关联是一种常见做法。这些属性可以包括颜色、材料、名称、边界条件等。 | 属性可用于将特定于应用程序的数据与 CAD 模型的元素关联起来。属性与各种类型的拓扑和几何图元相关联,这些图元是从 ENTITY 基类派生出来的。另一种方法是利用单元拓扑将属性与某些空间单元关联起来。直接将属性与拓扑实体关联起来有助于在建模过程中持久存储相应的数据。 | 拓扑模型是轻量级的,仅由边界表示组成。建议使用辅助数据结构(例如 OCAF(Open CASCADE Application Framework))连接特定于应用程序的所有属性。 |
应用程序框架 用于快速开发基于建模器的应用程序的组件。可以包括现成的查看器、将数据组织成层次结构的工具、MVC 架构等 | RADF(快速应用程序开发框架)与 ACIS 完全分离。RADF 本质上是一个 C# 应用程序。 | OCAF(Open CASCADE 应用程序框架)随 OCCT 一起提供。 |
4.总结
必须承认,ACIS 的建模能力比 OpenCascade 更广泛。例如,OCCT 不支持通用文本法则和程序几何。此外,缺乏与 MCAD(机械 CAD)领域相关的广泛使用的建模能力,例如特征识别和直接建模。原因是 [Euclid Quantum 之后] OpenCascade 不用作任何经过工业验证的 MCAD 系统的几何内核。因此,与 ACIS、CGM 或 Parasolid 相比,OCCT 对高级建模能力的具体需求通常较少。但是,可以使用其现有的数学基础通过各种建模能力增强 OCCT。后一种扩展是我们在 Analysis Situs 开源项目中的重点。
与 OCCT 相比,ACIS 似乎具有以下缺点:
1. 缺少通用基础设施组件,例如独立于模型的撤消/重做
或独立于 SAT 的保存/恢复服务,这会使创建不优先考虑几何建模的工程应用程序更具挑战性。
2. 该库在很大程度上是分散的,数据交换、可视化组件和应用程序开发工具作为单独的 [付费] 产品分发。
3. 它既不是免费的也不是开源的。
在将 OpenCascade 与 ACIS 进行比较时,需要注意 OpenCascade 的以下主要缺点:
1. 直接建模、特征识别和高级表面建模技术的可用性有限。
2. OpenCascade 的稳健性还有待提高。
3. OpenCascade 不提供 ACIS 细胞拓扑的替代方案,并且仍然受限于传统的 B-rep(没有与体素化、基于网格的建模、细胞结构等相关的 API)。
尽管我们缺乏使用 ACIS 的实际经验,但我们仍然可以确定这两个库有些相似。需要强调的是,OCCT 是一个开源库,这意味着它的扩展潜力实际上是无限的。
暂无评论内容