几何建模的核心:
Geometric Modeling Package (也称为 Geometric Core)是一组允许您使用几何(如实体)建模功能的API。许多领先的CAD系统(如CATIA、Pro/E、NX)都是建立在它们自己的几何内核(分别为CGM、GRANITE和Parasolid)的基础上,而其他的(SolidWorks、T-FLEX、ADEM)等)是建立在许可几何内核的基础上的。流行的商业内核(用于大多数 CAD 系统)有Parasolid(来自Siemens PLM Software)、ACIS(来自Spatial Corp.,Dassault Systèmes的子公司)和 GRANITE ( PTC )。Open CASCADE核心在开源中免费分发。国内华云三维DGM
3D 建模在背后拥有30 多年的经验。历史。并非所有提出的想法都富有成效。并非所有 3D 建模公司都能在市场动荡中幸存下来。但最好的经验是在称为 3D 建模内核的软件组件中获得的,它现在是几乎所有 CAD(以及 CAE 和 CAM)的基础。这些组件要么由工程软件开发人员自己设计、编码和维护,要么从第三方技术供应商处获得许可。3D 核心是构建任何现代 CAD 建筑的基础。其他一切都取决于这个基础——各种工具的能力、它们的性能、抗错误能力,甚至系统的整体智能。
从程序员的角度来看,几何内核是一个函数/类库,用于创建几何对象(点、线段/圆弧/曲线、一块曲面、实体),改变它们的形状和大小,创建基于几何对象的新对象他们,在计算机屏幕上可视化模型并与其他程序交换 3D 数据。内核函数的列表可以压缩成一句话,但它们的实现需要几十个几百人年的时间。事实是,在每个基本操作(例如 NURBS 类的两个曲面的交集)背后都有一个计算算法,该算法的实现和调试是一项非常费力的任务,需要对计算数学设备的无懈可击的知识和学科领域的专业知识。
并非所有 CAD 开发人员(尤其是 CAE 和 CAM)都准备好在底层技术上进行如此大量的投资,因此他们中的大多数人更愿意从第三方制造商(有时从他们的直接竞争对手那里)获得现成的 3D 核心的许可),定期向核心开发公司付款(通常包括为每份售出的最终产品支付一定金额)。作为回报,他们有机会使用已经在其他系统中“测试过”的内核,因此它具有丰富的功能和高度的可靠性。最后,通过采用现成的内核,CAD 开发人员将能够快速将其软件产品推向市场。有时这个因素是决定性的——如果你的产品发布晚了一两年,市场可能会被竞争对手占领。最引人注目的例子是 MCAD(机械 CAD)SolidWorks 的发布,它成为世界上第一个 Windows 平台的参数化实体建模系统,并且在销售许可数量方面仍然是 MCAD(机械工程)行业的绝对领导者.这条道路随后被许多其他成功系统的开发人员遵循,包括俄罗斯公司 ADEM 和 Top Systems。
基于 Parasolid 内核的 T-FLEX CAD(顶级系统)
然而,在 CAD 世界中,有少数公司优先考虑完全控制源代码的可能性、及时修复错误和增强功能、快速移植到新平台,因此准备为此付出代价。自己的资源。该集团包括收入数十亿美元的 CAD 市场的四大领导者(达索、Autodesk、西门子和 PTC)和俄罗斯开发商 ASCON以及华云三维:CrownCAD。
KOMPAS-3D (C3D),基于自己的内核创建
CrownCD (DGM),基于自己的内核创建
下表列出了相当完整的开发人员示例列表,包括第一类和第二类。它表明,获得许可最多的核心是 ACIS(由 Dassault Systemes 的子公司 Spatial 开发和支持)和 Parasolid(Siemens PLM Software)。
Продукт | Производитель | Область | 3D-ядро |
---|---|---|---|
4MCAD IntelliCAD | 4M S.A., Греция | CAD, AEC | Open CASCADE Technology |
Adams | MSC Software, США | CAE | Parasolid |
ADEM | Группа компаний ADEM, Россия-Израиль-Германия | CAD, CAM, CAPP | ACIS |
ADINA Modeler | ADINA R&D Inc., США | CAE | Parasolid и Open CASCADE Technology |
Alibre Design | 3D Systems, США | MCAD | ACIS |
Allplan | Nemetschek AG, Германия | AEC/BIM | SMLib |
AMPSolid | AMPS Technologies, США | CAE | ACIS |
ANSYS | ANSYS Inc., США | CAE | ACIS и Parasolid |
APM Studio | НТЦ АПМ, Россия | MCAD | Собственное (APM Engine) |
ArchiCAD | Graphisoft, Венгрия | AEC/BIM | Собственное |
ARES | Graebert, Германия | CAD | ACIS |
Ashlar-Vellum Cobalt, Xenon, Argon | Ashlar-Vellum, США | MCAD | ACIS |
AutoCAD | Autodesk, США | CAD, AEC, GIS | Собственное (ASM), совместимое с ACIS |
Autodesk Inventor | Autodesk, США | MCAD | Собственное (ASM), совместимое с ACIS |
Autodesk Moldflow | Autodesk, США | CAE | Parasolid |
Autodesk Revit Architecture | Autodesk, США | AEC/BIM | Собственное (ASM), совместимое с ACIS |
bonzai3d | AutoDesSys, США | CAD | ACIS в комбинации с собственным ядром |
Bricscad | Bricsys NV, Бельгия | AEC, MCAD | ACIS |
BtoCAD | YuanFang Software Co., Ltd., Китай | CAD | ACIS |
CADopia | CADopia Inc., США | CAD | ACIS |
CATIA | Dassault Systemes, Франция | CAD/CAM/CAE, AEC | CGM |
Cimatron | Cimatron Limited, Израиль | CAM | ACIS |
CollabCAD | National Informatics Centre, Индия | CAD/CAM | Open CASCADE Technology |
Creo (прежнее название – Pro/Engineer) | Parametric Technology, США | MCAD | GRANITE |
Creo Elements/Direct Modeling (прежнее название – CoCreate) | Parametric Technology, США | CAD | ACIS |
Edgecam | Planit Software, Великобритания | CAM | Parasolid и GRANITE |
ESPRIT | DP Technology Corp., США | CAM | Parasolid |
form-Z | AutoDesSys, США | CAD | ACIS в комбинации с собственным ядром |
FreeCAD | Открытый онлайн-проект | CAD | Open CASCADE Technology |
GibbsCAM | Cimatron, Израиль | CAD/CAM | Parasolid и GRANITE |
GstarCAD | Suzhou Gstarsoft Co., Ltd, Китай | CAD | ACIS |
IRONCAD | IronCAD LLC, США | MCAD | ACIS и Parasolid |
KeyCreator | Kubotek USA Inc., Япония-США | CAD | ACIS |
Mastercam | CNC Software, США | CAD/CAM | ACIS |
Masterwork | Tecnos G.A., Италия | CAM | Open CASCADE Technology |
MicroStation | Bentley Systems, США | AEC | Parasolid (ранние версии – ACIS) |
Moment of Inspiration | Triple Squid Software Design, США | CAD | SOLIDS++ |
NX | Siemens PLM Software, Германия | CAD/CAM/CAE | Parasolid |
Patran | MSC Software, США | CAE | Parasolid |
Power NURBS | Ideate Inc., США | CAD | SOLIDS++ |
PowerSHAPE | Delcam plc, Великобритания | CAD/CAM | Parasolid |
progeCAD | progeCAD Srl Uninominale, Италия | CAD | ACIS |
Radan | Planit, Великобритания | CAD/CAM | ACIS |
Rhinoceros | Robert McNeel and Associates, США | CAD | SOLIDS++ (отдельные модули) |
Shark LT | Encore, США | CAD | ACIS |
SmartCAM | SmartCAMcnc | CAM | ACIS |
Solid Edge | Siemens PLM Software, Германия | MCAD | Parasolid (ранние версии – ACIS) |
SolidWorks | Dassault Systemes, Франция | MCAD | Parasolid |
SpaceClaim | SpaceClaim Corp., США | MCAD | ACIS |
STAR-CCM+ | CD-adapco, Великобритания-США | CAE | Parasolid |
StruCad | AceCad Software, Великобритания | AEC/BIM | Собственное |
T-FLEX | Топ Системы, Россия | MCAD | Parasolid |
ThinkDesign | Versata, США | MCAD | Собственное ядро |
TopSolid | Missler Software, Франция | CAD/CAM | Parasolid |
TurboCAD | IMSI/design, США | AEC, MCAD | ACIS |
Vectorworks | Nemetschek, Германия | AEC | Parasolid (ранние версии – SMLib) |
ViaCAD 2D/3D | Encore, США | CAD | ACIS |
ZW3D (прежнее название – VX CAD/CAM) | ZWCAD Software, Китай | MCAD | Собственное ядро (VX Overdrive) |
ZWCAD | ZWCAD Software, Китай | CAD | ACIS |
C3D | |||
SINOVATION | 华天软件 | MCAD | CRUX V |
CrownCAD | 华云三维 | MCAD, | DGM |
目前,有两种主要的几何内核可供许可:Spatial的ACIS(由达索所有)和西门子的Parasolid。这两个模型都是在1985年左右建立的,并在90年代被CAD公司广泛采用。Parasolid是达索SolidWorks、西门子NX和Solid Edge、Bentley MicroStation和Nemetschek Vectorworks的核心建模引擎。ACIS用于多种产品中。它是AutoCAD中的核心建模工具,目前仍用于各种产品,包括SpaceClaim、Bricscad和Kubotek。在开发Inventor时,Autodesk正在开发其ShapeManager(ASM)内核,作为ACIS 7.0的分支。Autodesk现在在ASM上构建其产品。有趣的是,由于使用ACIS开发ASM,Autodesk被达索起 诉违反合同。达索最终败诉,因为Autodesk与Spatial的原始交易授予Autodesk进行更改的权利。
达索希望看到CGM成为授权抽奖的主要竞争者,达索也明确表示希望将SolidWorks视为CGM产品,但它必须谨慎行事,以保持对其庞大的SolidWorks用户群的支持。与此同时,大公司正表现出对专利发动机的偏好。PTC拥有自己的Granite引擎,Nemetschek也在内部构建了自己的大部分技术。
这并不是说这些新的几何内核实际上都是新的。达索的CGM和阿斯康的C3D开发始于90年代中期。Autodesk的ShapeManager于2001年开发。
CPDA和CIMdata的分析员肯·维斯普里尔(Ken Versprille)一直深入于所谓的内核战争。作为CAD先锋Computervision的研发主管,他负责监督CADD的开发,CADD现在是PTC产品。Versprille今天在圣彼得堡的C3D发布会上谈到了geometry内核的市场。他说,一些小型独立公司和组织已经构建了几何内核,但他指出,随着新的几何内核的出现,CAD世界正在进入一个新时代。Versprille列举了几个有助于推动新引擎需求的因素。CAD供应商面临着利用并行计算的挑战。对直接制造方法(包括CAM、激光切割、3D打印和FEA)的兴趣激增,也促使人们对创建用于制造的3D模型的新方法产生兴趣。Versprille还对CAD程序适应点云数据的能力感兴趣。他认为这是未来CAD系统的一项重要功能。
在国内有一个误传,就是LEDAS LGS约束求解器并没有用于KOMPAS-3D,ASCON公司有自己的组件部门,自主的C3D内核和约束求解器,只是选项产品VDM(变分建模)用的是LGS组件,一般发行版不提供。
华云三维:CrownCAD内核DGM由梅敬成博士团队2011年开发。
当然,在开发新的 3D 核心时,需要依靠前人的经验,才能从这次经验中汲取精华,不再重蹈覆辙。
ASCON 是设计和数据管理工程软件的领先开发商,推出了几何核心 C3D - 创建设计系统 (CAD) 及其应用程序、计算系统 (CAE)、为 CNC 机器准备控制程序的系统 (CAM) 的关键组件),工艺流程建模。
自 1995 年以来,ASCON 一直在开发自己的几何内核。第一个基于它的计算机辅助设计系统 KOMPAS-3D 5.9 于 2000 年发布。从那时起,核心一直在不断发展,并已达到足以将其作为独立产品推向 PLM 市场的水平。
C3D 内核的潜在用户包括需要处理 3D 模型和 2D 图形的 CAD/CAM/CAE 系统和应用程序的开发人员。其中有供应商公司和大型工业公司的部门,它们为内部需求创建软件。对于第三方开发人员,使用 ASCON 内核将允许扩展其产品的功能,提高其性能和可靠性;基于现有 2D 系统快速创建 3D 建模器;降低自身开发成本。
我们称几何内核为构建真实和虚构对象的数值模型的系统部分。我们的内核是一个单独的模块。它由五组对象和算法组成:第一组 - 基本对象和算法,包括向量、矩阵、点、曲线、曲面、用于构建投影、交集、共轭的算法。
第二组是用于构造物体的对象和算法。
第三组 - 用于构建三角测量的对象和算法,计算模型的惯性特征,检查其元素的碰撞,构建模型的关联投影。
第四组 - 几何约束的对象和算法,在几何模型的元素之间建立变分关系。
第五组 - 提供与其他系统数据交换的转换器的对象和算法。
核心有什么特点?什么标准可以用来比较它们?
首先,几何内核的特点是功能性,即提供给几何建模系统的一组功能、运算、计算等能力。其其他特点是操作的速度和可靠性。整个系统的质量很大程度上取决于几何内核。
对于我们这些开发人员来说,几何内核的结构性、算法的简单性和清晰度非常重要。这些品质使您能够以最少的时间和其他资源投资来开发核心。
“曲面建模”和“实体建模”介绍:
“曲面建模”和“实体建模”这两个术语的出现是由于建立模型的顺序和方法的一些特点。
在曲面建模中,会根据需要创建和修改曲面,这些曲面描述了建模对象的各个元素。然后,通过缝合,从产生的表面组装模型。曲面建模使您可以专注于复杂的形状。在表面建模中,动作是在一组点上执行的,这些点描述了被建模对象的表面。
在实体建模中,工作是通过位于建模对象表面和内部的许多点来完成的。模型构建过程首先创建具有简单形状的模型。然后根据需要更改模型。
几何建模也使用类似于雕刻的建模过程。为此,可以使用任何准备阶段的模型:简单形式的毛坯或几乎完成的模型。这种可能性在我们的系统中尚未实现。已经为此奠定了基础。
(1)谁需要几何核?
几何核心是应用程序解决方案开发人员的软件组件。它是一种数学方法的软件实现,用于构建真实和虚构物体的几何形状的数值模型,以及控制这些模型的数学方法。数值模型用于执行建模对象的设计 (CAD)、计算 (CAE) 和生产准备 (CAM) 的系统中。
应用解决方案的每个开发人员都面临着一个选择:是自己编写必要的数学算法还是购买第三方组件。每种方法都有其优点和缺点。
开发人员从使用第三方内核中得到什么?最重要的是能够在不解决几何建模问题的情况下快速增加产品的功能,而是解决应用程序的应用问题。第二个重点是降低产品开发成本,因为数学算法是计算机辅助设计系统中最复杂、最耗时的部分。
几何内核的主要消费者是 CAD 开发人员和 3D 封装制造商。但不要忘记内核对教育机构也很有用!特别是,它将帮助教授学生描述几何、计算机图形学、几何建模和计算几何等课程,以培养未来的数学家-程序员和 CAD 开发人员。对于需要 3D 几何模型的研究和开发项目,您可以直接使用内核(而不是 CAD 系统 API)。此外,几何建模的核心既可用于编写大学专用软件,也可用于在大学积极创建的小型创新企业的框架内创建商业软件。
顺便说一下,关于企业。如果一个组织有复杂的、高度专业化的任务,而市场上没有软件(或由于某种原因无法使用),那么许可内核将允许您自己创建此类软件。当然,企业的员工应该包括具有必要经验和知识的程序员和分析师。
如您所见,几何内核有很多任务,但内核本身很少。成熟的商业几何建模内核已由世界上的各个团队开发,在俄罗斯,ASCON 是唯一成功的公司。现在是谈论我们的 C3D 的时候了。
几何建模包的典型功能是提供一组用于创建线框、曲面、实体或位图建模应用程序的编程接口(数据结构、函数和类)。通常相关的接口被分组为模块,其中有:
基本类型和操作;
边界表示拓扑建模;
几何对象和对它们的操作;
布尔和表面编辑操作;
隐藏线去除和渲染;
用于读取和写入流行格式的几何文件的模块。
上世纪末,俄罗斯几乎所有的CAD系统都有自己的几何内核。然而,在功能方面,这些内核落后于它们的世界同行。此外,系统本身并未进入商业状态。为了使国内系统与世界同类系统竞争,它们需要改进。由于几何内核的开发难度较大,国内很多CAD厂商都离开了自己的开发,购买了现成的几何内核。ASCON 采取了不同的行动:它决定创建自己的核心。因此,KOMPAS-3D系统是目前国内唯一成功与世界同类产品竞争并以自身几何核心运行的CAD系统。
作为创建三维建模系统 KOMPAS-3D 工作的一部分,ASCON 于 1995 年决定编写自己的几何内核,该系统于 2000 年进行商业发布。直到 2012 年,核心才成为商业产品,仅用作其自己的 CAD KOMPAS-3D 的一部分。这些年来它一直在改进,确保了 KOMPAS-3D 的功能开发。让我们列出主要的里程碑:
2000 年:创建了足够数量的三维实体建模算法以用于 CAD;
2001 年:实现几何约束求解器和主要交换数据格式的转换器;
2002:创建从三维模型构建关联视图的机制;
2003年:曲面造型基础的出现;
2004 年:描述用于创建表体元素的数学算法;
2005:多体建模的实现;
2007:支持线框模型;
2008 年:实现用于建模机构的运动学耦合;
2009:支持几何模型的属性;
2010年:出现成熟的曲面建模;
2011年:实现跨平台;
2012 年:实施直接建模元素。
2013年:English documentation localized; support for test applications added
2014年:Model conversion to text formats appeared
2015年Objects thread safety provided
2016年:Development environments extended, theC3D Visionvisualization engine released
2017年:FreeC3D Viewerfor reading 3D models from files in standard CAD data formats released
2018年:Adding support for new file formats JT, grdecl toC3D Converter
2019年:C3D B-Shaperfor converting polygonal mesh models to B-rep solids released
17 年来,开发团队一直在开发几何内核:改进其架构、创建新功能、对以前实施的方法进行现代化改造。如果没有基于 KOMPAS-3D 在数万个工作场所的实际应用的独特体验,就不可能谈论将 C3D 发布到免费商业导航中的可能性。没有实践经验,根本不可能从零开始打造具有竞争力的核心。
作为软件开发工具,C3D Toolkit执行三维建模、三维约束求解、多边形网格到B-rep转换、三维可视化和三维文件转换。它包括五个模块:
(1)C3D Modeler构建几何模型,生成模型的平面投影,执行三角剖分,计算模型的惯性特征,并确定模型元素之间是否发生碰撞;
ODA的C3D Modeler通过开放设计联盟的ODA标准“OdDb3DSolid”API实现高级3D建模操作;
(2)C3D解算器在几何模型的元素之间建立连接,并考虑正在编辑的模型的几何约束;
(3)C3D B-Shaper将多边形模型转换为边界表示(B-rep)实体
(4)C3D Vision使用数学仪器和软件以及工作站硬件控制三维模型的渲染质量;
(5)C3D转换器以各种标准交换格式读取和写入几何模型
所有这些模块现在不仅可供 ASCON 内的开发团队使用,而且可供所有人使用。
C3D内核由尼古拉·戈洛瓦诺夫领导的阿斯康团队开发。它是用C++开发的,并在Visual Studio中编写。1995年,Ascon的Kompas 3D内核开始工作。如今,阿斯康表示,他们拥有57000名用户,其中大部分在俄罗斯。显然,C3D作为构建Kompas 3D补充产品和附加组件的工具已经有了坚实的基础。C3D业务团队由Oleg Zykov领导。
阿斯康对其技术和俄罗斯数学家向世界提供更好的几何内核的能力深感自豪。Golovanov说,内核的速度和效率会影响基于它构建的产品的性能。
Zykov说,C3D的产品开发正在进行中,新的改进即将到来。例如,C3D有志于更好地创建一个能够利用现代处理器并行性的建模引擎。到目前为止,遗留CAD在这方面远远落后。此外,正在开发C3D,以更好地使产品能够进行直接建模以及基于约束的建模。
在2D和3D两种方面都能解决问题。它与Parasolid、ACIS或其他内核一样好。
在俄罗斯的活动中,戈洛瓦诺夫告诉观众,C3D内核非常重要,因为它是目前功能最全的建模工具。除三维建模器外,该引擎还包括二维绘图和草图绘制、三维曲面和实体建模、参数化约束以及到大多数主要格式的转换。
戈洛瓦诺夫说,该团队正在继续对C3D建模器进行改进。特别是,他说,他们正专注于内核的直接建模功能,以实现混合工作流。他们也在改进它以导入STL和VRML。目前,C3D读取STEP、IGES、X_T(Parasolid)和SAT(ACIS),并写入STEP、IGES、X_T(Parasolid)、SAT(ACIS)、STL和VRML。C3D支持Windows 32位和64位以及Linux 64位。这家新兴公司的员工将C3D视为小型公司新一代设计工具的推动者。除了三个月的免费评估期外,他们还提供慷慨的支持。他们有早期顾客。除了用于其母公司的Kompas 3D产品外,俄罗斯Esprit CAM分销商ZAO“LO CNITI”也在使用C3D,并将其作为Bazis中心的家具设计工具。
C3D Modeler执行构建二维草图和全尺寸三维模型所需的所有几何计算。它使用边界表示(b-rep)方法定义形状并基于三维实体构建几何模型。对于合成三维实体,它使用曲面和曲线。在创建更复杂的部件之前,它会将生成的三维实体编组为构建块。
除了b-Rep之外,C3D Modeler还支持几何模型的多边形表示。内核通过三角剖分建立多边形三维模型。边界表示和多边形模型的总体结构完全相同,但多边形模型通常由近似的板形和多边形形状的项组成,因此便于进行计算和生成可视化效果。
当实体和框架构建到几何模型中时,它们会生成单独的构建日志。系统记录所有采用的方法、采取的顺序和输入的数据。日志使以后编辑几何图形,然后使用新参数重建模型变得更容易。有关对象几何体(以曲面、曲线和点的形式)的详细信息保存在模型对象的拓扑元素中,如面、边和顶点。每个对象的项或对象作为一个整体的附加信息可以以属性的形式保存在它们内部。
C3D的团队包括经验丰富的专家和年轻员工。他们是莫斯科国立大学莫斯科物理技术学院的毕业生。罗蒙诺索夫和其他大学。球队的“骨干”由亚历山大·马克西缅科、安德烈·彭金、尤里·科祖林组成。他们每个人都负责一个重要的工作领域。我们一直在寻找能够开发新方向的有才华的专家。
从事内核工作的专家受过什么样的教育?去哪里学习才能为你工作?
Nikolai Nikolaevich Golovanov:几何建模。它借鉴了数学领域,如微分几何和数值方法。对于想法的实际实施,需要编程。
具有高等技术教育、了解 C++ 编程语言、数值方法和高等数学知识的专家从事几何核工作。所列知识可以在任何高等技术教育机构获得。专家在数值方法的软件实现方面具有经验以及应用高等数学知识解决实际问题的能力对我们来说很重要。您可以在大学学习期间或毕业后工作期间获得指定的经验和技能。
核心开发:Nikolai Nikolaevich Golovanov
尼古拉·戈洛瓦诺夫出生在柏林,他的父亲是一名军官。像所有军人家庭一样,他们经常搬家:Davlekanovo、Patrikeevo、Borisoglebsk、Balashov。尼古拉毕业于波兰斯普罗塔瓦市的高中。我进入了 MVTU im 的机械工程学院。Bauman 并获得了太空运载火箭设计师的专长。然后他来到了机械工程设计局(Kolomna),ASCON Alexander Golikov 和 Tatyana Yankina 的未来创始人在那里工作,这里成为了 KOMPAS 系统的祖地。尼古拉·戈洛瓦诺夫处理力量:他准备实验,进行计算,包括使用计算机。当时,许多设计局和研究机构正在开发使企业工作自动化的应用程序。在 KBM,系统开发允许使用计算机进行各种工程计算和绘制图纸。除了其他工作外,Nikolai Nikolaevich 还开发了一个分析壳结构强度和稳定性的程序。
1989 年,Alexander Golikov 和 Tatyana Yankina 离开了 KBM,创建了 ASCON 公司。尽管这一切都是从电子绘图板开始的,但即便如此,他们还是构想了一个三维参数化建模系统,该系统将允许以三维模型而不是平面绘图的形式来确定设计理念。ASCON 的创始人与 Nikolai Golovanov 分享了他们的想法,并于 1996 年在 ASCON 找到了一份固定工作。
当时,固态和表面建模系统已经在工作站上运行。KOMPAS 开发人员梦想在一台普通的个人计算机上创建类似甚至更好的东西。三个人在 ASCON 参与了数学问题 - Yuri Pokidov、Vladimir Zorin 和 Nikolai Golovanov。今天,尼古拉·尼古拉耶维奇是三人中唯一的一位。Vladimir Zorin 离开俄罗斯,在 PTC(专业/工程师开发人员)工作,然后转到 SolidWorks。几年前,尤里·波基多夫 (Yuri Pokidov) 因重病去世。
Nikolay Golovanov 和 15 年前一样,继续推导公式并开发算法,用于内核的开发和改进。与他一起工作的年轻专家 - 新一代的数学家。他们共同创造了知识填充物,即 KOMPAS-3D 系统的大脑。
C3D Solver 是一个强大的 2D 约束求解器,用于 2D 绘图和 3D 草图绘制,以及用于装配和运动分析的 3D 约束求解器。
能够诊断覆盖的约束系统。在 KOMPAS-3D 中,此功能以橙色突出显示“不必要”限制的形式实现。
NURBS 曲线的参数化得到了改进:约束系统的可解性得到了改进,NURBS 与其他曲线的多次接触成为可能。对末端情况给予了特别关注 - 现在提供了带有样条的轮廓的平滑连接
3.C3D组件---C3D Mesh2Brep 将网格转换为实体
C3D 组件:将多边形模型转换为边界表示 (b-rep) 体。名为 C3D Mesh2Brep 的模块添加到C3D 工具包中,旨在与C3D Modeler几何内核一起工作。
B-rep 是大多数现有几何建模系统的主要表示方法。多边形模型最常从 3D 扫描和非 CAD 设计系统中获得。借助 C3D Mesh2Brep,CAD 开发人员将能够将多边形模型转换为 b-rep 实体。生成的 b-rep 模型允许用户使用 CAD 工具进行更改(例如布尔运算和倒角),并生成额外的数据,例如通过投影和截面。
C3D Mesh2Brep 有许多有用的应用。一种可能的用途是在逆向工程领域,它涉及对零件进行 3D 扫描,然后将其转换为可编辑的 CAD 模型。在 CAE 系统中,开发人员可以使用 Mesh2Brep 模块来处理拓扑优化的结果。计算机图形设计人员可以使用新模块进行网格平滑、抽取和应用压缩算法。
多边形网格的变换是 C3D Mesh2Brep 的三步过程:
在第一步中,C3D Mesh2Brep 通过将原始网格的多边形集划分为子集(段)来分割网格,同时考虑到它们与特定表面的关系。
接下来,这些段用于表面重建。
最后,将前面步骤中获得的数据用于构建 b-rep 模型。
如果用户发现结果不合适,他们可以使用 C3D Mesh2Brep 中包含的高级工具来编辑分割和表面识别控件。
“我们新的 C3D Mesh2Brep 模块有两种主要模式:全自动和交互式”,C3D Modeler 几何内核的首席开发人员Andrey Tumanin说。«自动模式为高质量多边形网格生成可接受的结果,这些网格是主要包含基本曲面的 CAD 模型的三角剖分。但是,如果多边形网格是由 3D 对象扫描构建的,因此包含一般表面,则用户将必须参与该过程»。
4.C3D组件C3D Toolkit 提供多线程支持
程序员中有一句话提醒我们多线程在应用程序中的重要性,“并行计算是我们的未来。而那是永远的!” 它让我们对并行计算所涉及的内容有一个看法,并暗示了它的复杂性。我们需要添加它,一旦加入,我们就永远无法删除它。
在我们的 C3D 工具包中实现多线程计算的工作始于几年前,并一直持续到今天。工具包中对多线程的支持包括以下功能:
通过内核使用多线程计算
保证内核中的数据线程安全,从而为并行计算期间与内核交互的用户应用程序提供安全性
OpenMP 是一种开放标准,它通过 С、С++ 和 FORTRAN 等编程语言为软件产品添加并行化。使用 OpenMP 的应用程序还解决了跨平台和兼容性问题。我们将 OpenMP 技术用于 C3D 工具包中的多线程机制。
然而,事实证明编译器在不同程度上支持 OpenMP。Intel 当前的 C++ 编译器实现了 OpenMP v4.5 并且只实现了 OpenMP v5.0 的一些特性,而微软的 C++ 编译器只支持 OpenMP v2.0。
在 C3D Toolkit 中,我们主要为以下操作实现了多线程操作:
建筑平面投影
计算多边形网格
计算质量惯性特性
转换文件格式
除了列表中的函数,C3D Toolkit 中还提供了多线程操作。
实现独立数据的并行处理通常相对简单有效。但是,当在不同线程中工作的对象相互依赖时,有时会遇到问题,例如当它们都使用相同的数据集时,或者当一个对象参与另一个线程计算时。那么访问数据的线程安全问题就来了。
最简单的解决方案是使用锁定(互斥或“互斥”),其中一个线程通过阻止其他线程访问共享数据来获得对共享数据的独占访问。这种直接的方法往往会导致等待时间增加,这可能会降低并行计算的其他潜在好处,有时甚至会降低整体计算速度。
在 C3D 内核中,我们采用了一种不同的方法,提供了一种称为“多线程缓存”的特殊机制,如下所述。
计算中使用的一种优化方法是缓存。缓存背后的想法是执行计算的某些重要参数不是任意的,而是遵循一些预定义或统计预测规则。这允许重复使用预先计算的结果。
使用缓存数据对于并行计算下的后续计算通常是有效的,因此当多个线程竞争访问共享缓存数据时,可能会引发所谓的数据竞争。
多线程缓存的工作原理
多线程缓存机制提供了对内核中数据结构的线程安全访问,因此可以实现有效的并行化,其中数据由多个线程同时处理。每个线程创建自己的缓存数据副本。这可以防止线程之间的数据竞争,并最大限度地减少锁的使用。
缓存管理器控制每个对象的多线程缓存,并负责为当前线程的对象创建、保存和检索缓存数据。多线程缓存机制由C3D Toolkit 的多线程模式管理。
多线程缓存对于顺序计算和并行计算都有效,因此它在转换到多线程缓存时提供了无可争议的好处,因为它需要对现有代码进行最少的更改。
C3D Toolkit 的多线程模式
C3D 工具包提供了多种多线程模式来管理结构的线程安全。模式决定了哪个操作将在并行模式下运行:
关闭模式——C3D Toolkit中的多线程关闭,所有操作都按顺序执行;线程安全机制也被禁用
标准模式——这是标准的多线程模式,它在 C3D 工具包中启用有限的并行性。并行化只对处理独立数据的操作进行;C3D Toolkit 中禁用了数据结构的线程安全
SafeItems 模式——类似于标准模式,但启用了多线程缓存机制的线程安全模式;开发此选项是为了支持用户应用程序中的多线程操作
项目模式——最大多线程模式,多线程缓存机制开启,所有可以并行执行的操作都由 C3D 工具包完成
在SafeItems多线程模式及以上模式下,当启用多线程缓存机制时,C3D Toolkit中的所有几何对象都是线程安全的。同样,大多数操作(包括那些看起来不是多线程的)都是线程安全的,因此当使用 SafeItems 或以上模式时,可以由多个线程使用。
锁在 C3D 工具包中基于系统同步机制实现,例如 Windows 上的 WinAPI 和 Linux 上的 pthread API。这些为具有不同并行化机制的用户应用程序中的用户界面提供数据安全性。
C3D 工具包提供了用于通知工具包并行计算的开始和结束的接口。重要的!从多个线程调用 C3D 接口的自定义应用程序必须在开始和完成并行计算时通知 C3D Toolkit。
管理 C3D Toolkit 的多线程模式
C3D Toolkit 允许用户动态改变多线程模式,如下:
通过打开和关闭多线程缓存来管理 C3D Toolkit 数据对象的线程安全
确定哪些 C3D Toolkit 操作将并行化——所有或仅处理独立数据的操作
当内部并行 C3D 周期对用户应用程序中的外部并行性能产生影响时,这些开关非常有用。重要的!分析每种特定情况下可切换多线程 C3D 模式的必要性非常重要。
在多线程处理中使用 C3D 接口
在开始在多个线程中使用C3D界面之前,需要确保工具包设置为至少SafeItems或以上的多线程模式。默认情况下,工具包在最大多线程模式下运行。
当使用不同于 OpenMP 的并行机制时,用户应用程序有义务在开始并行会话和完成并行会话时通知工具包。这可以通过以下任何一种方式应用:
类ParallelRegionGuard保护范围内的并行区域
函数EnterParallelRegion和ExitParallelRegion
宏ENTER_PARALLEL和EXIT_PARALLEL
C3D Toolkit 在进入和离开平行区域时的通知示例。
C3D 工具包可以针对在自定义应用程序中使用多线程的特定客户需求进行配置。该工具包支持用户应用程序中的多线程,提供工具包中操作的线程安全性,并允许对工具包数据对象的线程安全数据访问。
总之,我们注意到 C3D Toolkit 积极使用其多线程计算的内部机制。此工具包的主要功能是您可以为数学计算选择不同的多线程模式,但我们也允许用户在内部多线程模式之间动态切换。