国产CAD软件重启之路

2021-12-09 12:58何援军
计算机集成制造系统 2021年11期
关键词:光顺样条

何援军

(上海交通大学 计算机系,上海 200240)

0 引言

这是一个带有历史痕迹的命题,我国早期的CAD系统开发与应用的进程与国际同步,但后来大多销声匿迹,这是我们这一代CAD系统开发人心中的痛。回顾历史是为了向前和重启,我们相信还有未来,而且未来是美好而光明的。

国产CAD软件开发和应用的历史较早,我国在CAD和计算机图形学的基础研究、大型应用软件系统的开发方面有很好的技术基础和人才基础。

本文回顾我国CAD软件的开发和应用历史,梳理我国在CAD软件开发中形成的理论、技术、算法、系统设计和应用定制等方面的基础工作,论证了重启国产CAD软件的可能性,提出一些重启策略并给出一些重启方案。

正是基于早期扎实的系统基础工作、精准而稳定的基础算法、软件设计的开放性思想、业已实施的CAD系统及其在多个领域的深度应用,才有底气提及未来,才有勇气谈论重启国产CAD软件[1-16]。

1 发展历史

1.1 基础研究

我国早在上世纪60年代就开始了CAD软件的基础研究,这些基础研究从曲线曲面和几何造型等CAD系统中最重要的基础理论与关键算法的研究开始,投入的人员主要来自船舶、航空等行业,一些高校教师也深入到研究所、工厂和企业参与了理论基础研究。经过实际检验,一些理论,尤其是几何计算理论取得了很大进展,同时取得了一些应用成果,为我国CAD软件的开发打下了坚实的理论基础和算法基础。

1.1.1 对曲线曲面的研究

上世纪60年代,我国开始了采用计算机构造曲线曲面的研究,最早起步的是六机部对船舶型线和三机部对飞机模线的研究,当时的关键词是“样条”“光顺”“数学放样”等。

1967年,我国船舶领域首先将计算机技术应用于曲线曲面处理。《船舶工艺研究所所志(1964-2003)》第183页记载:“船舶工艺研究所在60年代中期开始对数学放样进行研究”,更为确切的是1981年6月《造船工艺论丛》上元存贤、范皆备发表的“计算机在造船上应用研究十五周年”一文,倒推时间为1966年或1967年。

1971年夏,上海市组建“数学放样会战组”,对船体型线三向光顺和船体外钣展开攻关。会战组设在六机部十一所(上海船舶工艺研究所),参加的单位有江南船厂、沪东船厂、求新船厂、中华船厂、上海船厂、东海船厂等船厂,七○一研究所、七○二研究所、上海船舶运输科学研究所、华东计算机技术研究所等研究所,以及上海交通大学、上海科技大学和复旦大学等高校。

“数学放样会战组”还惊动过几位大师和前辈,复旦大学的苏步青学部委员到江南造船厂,大连工学院(现大连理工大学)钱令希学部委员在大连造船厂,山东大学谢力同教授在沪东造船厂,浙江大学董光昌教授在求新造船厂,浙江大学梁友栋教授在上海船舶工艺研究所,分别指导和参与了数学放样的研究工作。

1973年初,全国船体数学放样会议在上海浦江饭店举行,苏先生和钱先生两位学部委员出席了会议,钱先生还亲自作了“数学放样的数值松弛法”的报告,苏先生也应邀在大会上介绍了“用仿射不变量的思想解析三次参数曲线,得到了有关拐点和奇点存在的定理和消除的方法”的报告,对数学放样的研究有直接指导作用。图1所示为当年苏先生和钱先生技术讲座的入场券。

数学放样改变了传统的船体型线手工放样工艺流程,使各船厂取消了面积庞大的船体型线放样台。船舶线型放样、外钣展开等全部由计算机计算得到数据,然后在自动绘图仪上绘制图纸,这项工作促进了后来船舶行业“船体建造系统(Hull Construction System, HCS)”的研发和应用,可以称为我国最早自主开发的工业软件。

1978年,复旦“船体数学放样”和六机部十一所与浙江大学的“曲线拟合与双圆弧逼近”获全国科学大会奖。

1981年1月苏先生和刘鼎元教授将数学放样中关于船体曲线曲面构造方法及应用的研究成果,总结、提升到理论,出版了著名的《计算几何》专著,由此开创了我国的《计算几何》学科。

1982年1月,苏先生及浙江大学梁友栋教授和金通洸教授、复旦大学刘鼎元教授、山东大学汪嘉业教授、北京航空学院唐荣锡教授、中科院数学所孙家昶研究员、中国科技大学常庚哲教授、吉林大学齐东旭教授等发起成立了全国高校“计算几何协作组”,如图2所示。

1983年,国家科委等8部委在南通召开首届CAD应用工作会议,以计算几何协作组为代表的先驱们连夜讨论,推选浙大梁友栋教授为代表,详细陈述开发CAD软件的远大设想,这是我国学者首次直接向高层发出“发展我国自主版权CAD产业”的呼声。南通会议是发展我国CAD产业的一个里程碑。

1984年,浙江大学学报出版了计算几何专辑(如图3),内容涉及B样条曲线、Bézier曲线和曲面、消隐算法等。其中,何援军的“立体图形的计算机绘制”一文提到几何复杂性、物体表述(三维模型构建)、图形输入、分类(加速)、变换几何化、几何算法及几何奇异等解决几何问题的一些理论和方法。

1.1.2 对几何造型的研究

CAD的另一项基础工作是几何造型,当时称为立体造型。我国对计算机造型的研究开始于20世纪80年代初期。

1980年~1983年,浙江大学CAD&CG国家重点实验室原主任彭群生教授在英国东安格利亚大学计算科学系攻读博士学位,1983年9月发表了博士论文“Volume Modeling for Sculptured Objects(雕塑曲面物体的实体造型)”;1981年6月,北航唐荣锡教授的研究生马德昌完成硕士论文“机械类零件的体素拼合造型”,作为延续性工作,其博士论文“实用化实体造型系统的研制方案探讨”于1987年7月完成,造就了我国第一个多面体实体造型原型系统PANDA;1983年,何援军在《机械工业自动化》上发表布尔运算论文“二维几何构形”[17];1984年,梁友栋发表几何裁剪LiangBarskey算法,这是计算机图形学历史上第一个以中国人命名的算法。

1.2 系统研究

1.2.1 国产CAD软件的黄金期

1991年,时任国务委员宋健提出“甩掉绘图板”,国家科委实施了以“甩图板”为口号的全国“CAD应用工程”,国内掀起CAD软件研发、推广和应用的高潮,推出了一批有自主版权的CAD软件产品。

1993年11月,为了整合以孙家广院士和周济院士领衔的清华和华中团队及成果,将他们开发的CAD系统命名为“高华CAD”,并专门成立了“北京高华计算机有限公司”运作“高华CAD”,作为CAD应用工程的推荐产品进行推广。

上海则推出以上海市市花白玉兰命名的“白玉兰CAD”和“白玉兰图档管理系统”作为上海市CAD应用工程的软件产品进行推广。白玉兰CAD的原型是1973年开始研究的图形处理系统(Drawing Processing System,DPS)[18-33],该系统于1988年推出了DPS交互版本,相比AutoCAD1.0在1981年推出交互系统,相隔时间不是很长。

国内同期推出的CAD系统还有很多,例如,属于通用CAD软件的北京的PICAD、武汉的“开目CAD”、深圳乔纳森的“中国CAD”等,属于工业领域的“HCS(船舶)”“PKPM(建筑)”等设计与制造系统。

1982年,上海船舶工艺研究所的“船舶管路集成系统(Pipe Computer Programming System, PCPS)”出口南斯拉夫乌拉尼克船厂,开创了我国出口CAD软件的先河。

所有上述通用CAD系统和专业设计建造软件,说明我国在CAD软件系统的开发与应用方面都比较早。

1.2.2 相关事件

表1列出了国内CAD/CG基础研究相关的一些重大事件(限于水平与时间,收集到的信息难免有遗漏),涉及的主体包括全国学会、国家实验室、学报、会议以及较早的图书。

表1 我国早期在CAD基础研究方面的部分事件、工作或论文

续表1

续表1

1.2.3 家国情怀

上述基础研究是在前辈们的带领下起步的。

数学大家苏步青院士和力学大家钱令希院士亲自指导的船舶CAD基础研究工作,全国高校“计算几何协作组”为曲线曲面研究所开创的新局面,不仅建立了计算几何学科,更为CAD打下了科学基础,使我国的CAD理论研究从无到有。

北京航空航天大学唐荣锡教授曾经担任中国工程图学学会理事长,为国内CAD研究的引领人。一天,接到他的学生,时任浙江大学CAD/CG国家实验室主任彭群生教授的电话,说有一个事叫我一起出出主意:我们要为唐先生出一本《唐荣锡文集》,找不到人写序言,因为国内没有一个人有这样的资格可以为唐先生的文集写序,你有什么办法?我说,众星捧月!征集全国CAD的知名人士集体签名。最后,在《唐荣锡文集》序言上署名的有16人,既显示唐先生为我国CAD的先驱,又记录了我国CAD软件领域的众多人才。

再讲一个“光顺定义”的故事。2003年初的一天,我突然接到老师浙江大学董光昌教授的电话,直截了当:“我在上海,我将‘光顺’的定义搞清楚了,你来听听。”光顺源于数学放样,是判断曲线优劣的一个标志。曲线光顺的定义是曲线在飞机、船舶等工程上应用的基础问题,也是当时研究的一个数学理论问题。一个光顺的定义,老师为此奋斗了30多年!那天我都不知道是怎么挂的电话,只是连声说,“去,去,我去,我去”,第二天便带领全体学生去听董先生的讲座。当年刚进浙江大学数学系时,我们就知道数学系有个董老师坐功特别好,而搞科研,特别是搞数学,必须坐得下身,静得了心。这,就是搞学术研究的人!这,即为浙大的求是精神!

1.2.4 上海市CAD应用工程

本节通过上海市CAD应用工程的实施情况记录我国CAD开发与应用的黄金期[27-29]。

上海市CAD应用工程在上海市科委的领导下实施,并成立了上海市CAD应用工程专家组和CIMS应用工程专家组,这两个专家组对发展我国工业软件有比较深刻的认识,作者参加了CAD应用工程专家组。以下所记录的当时专家组的一些指导思想,用于说明20多年前科技人员对发展我国CAD已经形成比较清醒的认识。

(1)指导思想

1)发展上海市CAD自主版权软件的基本定位

作为“一个龙头,三个中心”的国际大都市,上海的CAD起步较早,并有自己的CAD软件产品和产业。

软件是靠智慧生产的产品,然而发展软件产业比发展软件技术的困难更大,应该利用上海市CAD工程,有选择地重点开发、改造、扩展一些既对上海有重大经济效益,又具有普遍意义和全局性的应用软件。建立好上海国产化微机CAD开发平台,提高CAD开发平台的通用性和适应性,在推广应用的过程中搞好技术支持和服务并积累资金,促进上海CAD软件产品的成熟和发展,使其成为符合上海市CAD应用工程要求的产品,全面提高上海CAD应用水平,是对上海市CAD软件产品化和产业化的定位。

2)发挥上海市CAD软件的综合优势

上海市CAD应用工程近2年的实践证明,白玉兰CAD系统(BYLcad)和白玉兰图档管理系统以及一些应用软件能够比较快地发展并日趋成熟。开发单位(技术支撑单位)积极地协助企业在国产图形平台上开发专业化的应用软件,充分发挥设计人员和系统开发人员双方的积极性,建立良好的应用产品伙伴关系和技术伙伴关系,使用户用最小的投资得到最佳的回报,除了开发单位的努力外,应用单位(示范企业)能够协助实践并及时返回信息,也大大促进了白玉兰CAD系列软件的进步。

3)加强软件服务和技术支持

软件在本质上属于一种服务性产业。CAD系统推广后,能否尽快出成果的关键是产品设计人员对CAD系统掌握的速度和深度。企业应在技术支撑者的帮助下,培训重点技术人员用CAD完成实际工作,遍布全市的通讯网络和软件支持人员一天内提供技术支持的优势则给CAD软件的技术支持和全天候服务提供了可能。

4)以服务促进国产软件的推广和发展

白玉兰CAD系统是上海CAD应用工程的推荐产品,虽然当时白玉兰CAD还不是很成熟,但是上海市科委仍然大力支持其推广,指导思想为:在用户的使用中发展,提供一个稳定性高、开放性好、技术先进、方便实用的CAD系统。一方面为上海市的CAD应用工程和广大企业的技术进步服务,另一方面通过自身的产品化和市场服务促进上海市CAD软件产业发展。

(2)推出自己的CAD软件

以上海市CAD应用工程的软件产品白玉兰CAD为例,说明我国CAD软件的成长历程。

1988年,上海船舶工艺研究所成功研制了一个比较完整的交互式CAD系统——DPS,甚至有了软件自己的Logo(如图4)。DPS的推出只比1981年推出的AutoCAD1.0晚7年,而且当时的设计理念也很超前,已经考虑到“开放性”,这可以以当时的广告词“实用有效方便灵活独具一格易使用!交互系统用户功能合二为一两分钟!”为证。

1993年,DPS在国家科委组织的《具有自主版权CAD支撑软件评测》中获得第一名,1996年10月获国家计委、国家科委和财政部联合颁发的《“八五”国家重点科技项目(攻关)计划重大科技成果》,相关资料如图5所示。

作为当时六机部组织研制的HCS图形处理子系统,DPS担负了船舶行业计算机应用的图形处理任务。

在“1996-1997上海市CAD应用工程”中,以上海市市花白玉兰命名的白玉兰系统(BYLcad)被上海市科委列为集成化CAD支撑系统进行开发和推广,更新软件的Logo为白玉兰,如图6所示。

白玉兰系统(BYLcad)得到了有关部门的认可:

1)1996年列入上海市“九五”重中之重项目。

2)1998年编入《上海科技年鉴》。

3)1998年列入国家863/CIMS主题目标产品。

4)1999年获上海市科技进步2等奖。

5)2000年10月13日通过863/CIMS目标产品(863-511-820-028)项目验收。

在甩图版工程结束后,白玉兰CAD系统改由上海可人计算机软件有限公司运行和进行软件支持,改名为“可人CAD(KerenCAD)”。图7所示为其Logo,图8所示为其计算机软件著作权登记证书。

KerenCAD也取得政府有关部门的继续支持:

1)2000年7月获上海市科技型中小企业技术创新资金(种子资金)支持。

2)2002年度因“上海中小企业CAD推广应用”获上海市科技进步2等奖。

20年前KerenCAD光盘安装盘的Disk封面如图9所示,其在软件商品化方面走了一大步。

(3)推广与应用

一个软件产品的形成和发展,通常需要经过模型、实践和产品化等几个阶段。首先,在高校、研究所里提出并解决软件产品的关键技术,提供一个软件的基本模型;然后,需要有更多的投资和一个好的运行机制对该实验室模型进行功能扩展、稳定性测试、实际试用和外形包装等产品化工作。将产品提交给用户仅为开始,未来还需要有相当长的维护期来支持、完善和优化,令其在实践中不断接受考验并吸收营养,才能使一个成熟的软件真正产品化。

白玉兰CAD的应用过程证明了这一点。系统应用于沪东造船厂、交通部三航院、上海采矿机械厂、上海离心机械研究所、上海铁路机械厂、上海海欧照相机厂、浙江省交通设计院等数十个CAD应用工程的示范和非示范企业不同领域的单位,已经能够承担工厂的日常出图工作,而且部分获得明显的经济效益和社会效益,如图10~图15所示。

2 研发基础

在我国全面开展的CAD应用工程中发展起来的、有自主版权的CAD软件系统在一些基础性研究中取得了长足进步,这些对问题本质的认知,以及在基础理论、关键算法、系统设计和应用定制等方面的工作为今天的CAD软件重启打下了扎实的基础。

2.1 认知基础

2.1.1 宏观认知

宏观上,我们对CAD的设计基础、计算基础,以及几何计算的作用已有基本认识[3,5-12],认为CAD的基础是计算,而且主要是几何计算。计算是一切的基础,而计算的基础是数学。数学是永恒的,虽然其运用方式会发生很大变化,但是好的数学思想很少会过时。形的本质是几何间的关系,几何计算的计算源与目标一般都是形。决定三维模型或平面图形的不是几何元的定义参数,而是几何元之间的关系[9,14-16]。

2.1.2 微观认知

微观上,我们对计算的本质和关键也有了深刻的认识[9,15-16],具体如下:

(1)几何奇异是几何计算不稳定的主要原因 导致几何计算不稳定的主要原因为:①由数字计算误差引起;②由几何间的共点、共线、共面形成的几何奇异引起。处理几何奇异时涉及几何奇异的判定和对已知几何奇异的处理两个问题。

(2)几何计算的基础是几何求交 图形生成、几何造型、虚拟环境构筑与运行,最基本的操作是几何求交,降维计算是降低几何复杂性的有效手段。

(3)计算不应该仅局限于数的一维计算机制,还要考虑形的二维形计算机制 形为二维或三维,图为二维,计算为一维。长期以来,人们习惯的数计算其实一直蕴涵着“一维计算处理二维或三维问题”这样一个几何空间与计算空间不统一、思维空间与实施空间不一致的矛盾,遗憾的是,这些矛盾并未引起足够的重视。

(4)计算复杂度与计算稳定性是设计算法时考虑的两个关键问题 计算复杂度包括空间复杂性和时间复杂性,一般从量与质两个方面降低计算的复杂度,即或者减少计算对象的数目,或者降低参与计算对象的复杂度。计算稳定性从处理数字计算误差和几何奇异两个方面保证。

(5)解表述的多样化 重新审视计算结果的表述形式,得到的不仅是常规的数字解,还应考虑图形解、图像解的表述形式。

2.2 理论基础

几何计算的理论与计算机制已取得长足进步,文献[3]首次以几何计算的方式阐述几何算法,认为几何的定义、构造、度量、显示以及相关处理(几何相交、几何碰撞、几何分析等)即为几何计算。与数字计算是以数字作为计算对象不同,几何计算以各种几何作为计算对象,研究基于几何(元)计算的理论与方法[32-35]。

几何代数化并非是解决几何问题的必由之路,顺其自然是处理问题的最好方式,淡化几何问题的代数(方程)方法,强调从几何的角度、用几何的方法处理几何问题。

2.3 算法基础

虽然出于各种原因,众多国产软件没有被推广,但是研发CAD的脚步从未停止过,有关CAD基础理论、算法研究和软件开发方面的工作一直在深入进行,其中最为突出的工作如下:

2.3.1 几何裁剪

浙江大学梁友栋先生提出第一个以中国人命名的LiangBarskey裁剪算法。在此基础上,作者提出一种基于降维的几何裁剪方法,将三维裁剪和二维裁剪均归结为一维线性裁剪,而且这种通用的、规范化的裁剪算法在计算效率上能够与一些经典裁剪算法相媲美,而经典算法往往是“定制的”。

2.3.2 几何求交

提出一系列基于几何数的平面几何相交计算算法,以及基于降维的空间几何相交计算算法。例如,两个任意空间三角形的相交计算、空间直线与球面的计算等,都达到了很高的计算效率。这些将在后面“形计算”之“实施效果”中详细介绍。

2.3.3 几何造型

已编制各类扫掠造型,二、三维布尔运算,曲线曲面,曲线拟合等基础算法。

2.3.4 数学函数库

CAD应用必需的基础算法涉及数学基础、几何基础、几何变换、二维几何、二维计算、三维几何、三维计算以及设置与得到当前动态误差等,这些基础算法精炼、简洁,有些算法已经稳定运行50年。

2.4 形计算

鉴于图形/图像已经成为重要的计算源、计算对象与计算结果,并逐渐成为解的一种表现形式,文献[3]提出一种形计算(shape computing)机制[9,10,12-16],作为辅助数计算(number computing)的补充。

形计算的提出基于以下考虑:对CAD中最多的几何问题采用回归几何,几何问题几何化的策略。形的本质是几何间的关系,几何奇异是几何计算不稳定的主要原因,几何计算的基础是几何求交,降维计算是降低几何复杂性的有效手段。

形计算从几何的角度而非数字计算的角度出发处理几何奇异问题,从构造的角度认识几何奇异的根本,阐述几何奇异的本质,在检测与处理两个层次准确界定几何位置的奇异界线,从理论上构筑了一个几何奇异问题的完整解决方案,这是构筑几何引擎的理论基础和核心技术。

2.4.1 核心思想

由于计算机基于二进制数制,数计算有两个明显的特点:①人很难理解;②线性处理。虽然可以用这种有序的线性计算处理平面问题、空间问题甚至更高维问题,也似乎习惯于这种方法,但是这种处理隐含有以下几个问题:

(1)问题空间(3D)与表示空间(2D)不统一的维度矛盾。

(2)几何空间(3D)与计算空间(Linear)不统一的维度矛盾。

(3)思维空间(3D)与实施空间(2D或Linear)不一致的维度矛盾。

在计算的实施中体现为:用一维的数计算解决三维的形,几何属性被打得面目全非,形的关系和变化难以完备地获得、理解和表达,这是几何退化/奇异问题的根源,它导致几何引擎的研制变得异常困难。在算法掌控方面,人的思维因被强制地适应这种维度转换而难以发挥空间思维优势,在某种程度上降低了人对算法的掌控力。

形计算将思维、几何、代数和计算分别定位在4个不同的层次,即思维为设计层次、几何为表述层次、代数为处理层次、计算为实施层次。人脑(设计)、计算(算法)各司其职,发挥各自的特长。

2.4.2 作用定位

图16所示为形计算(虚框)在整个计算中的地位。

2.4.3 总体架构

形计算通过在几何关系的表述中引入几何数、在几何求解中引入几何基,采用变换几何化、降维计算,并引入多元、分级零域等一系列措施,解决形计算数元的表示机制、误差级别、运算机制、计算方式与解的表述,以及降维机制、变换几何化机制等,构建基于几何数与几何基的几何计算理论体系与实施框架,如图17所示。

在二维空间,将几何关系逐级分解为最基本的几何关系,建立形的构造树,再用树的遍历得到以几何基序列表述的几何解。在三维空间,对两几何进行相关计算时建立以主几何元为参考的计算坐标系,通过向任意面投影的算法将空间问题降维为平面问题。通过建立三维形与二维图的映射关系,求取平面上的几何解,再反求回到三维空间,可以求得空间问题的解。

形计算机制从理论上解决了几何奇异问题,为研制几何引擎打下了坚实的基础。

图18所示为形计算处理几何奇异的总体方案。

2.4.4 实施效果

下面给出几个形计算已经实施的算法实例。

(1)BOX几何裁剪[3,5]

窗口裁剪是计算机图形学的基础算法之一,将根据形计算机制设计的基于降维线性裁剪的Liner2D算法(如图19),与国际上认可的3种裁剪算法CohenSutherland,CyrusBeck,LiangBarsky进行测试与对比。测试样品采用6+61条线段,含对角线的菱形6条线为各种方位的常规线段,61条线遍历了被裁剪线与矩形窗口的各种位置(含奇异位置,如图20)。

测试结果如下:

1)正确性测试 4种算法均能正确地对这些线段进行裁剪。

2)计算效率测试 对所有67条线重复进行50万次裁剪,测试结果如表2所示(表中所列时间参数为相对值),可见4种方法所用的计算时间为同一数量级,只是稍有区别。

表2 4种矩形窗口裁剪的计算效率参考表

CohenSutherlan,CyrusBeck,LiangBarsky 3种二维窗口经典裁剪算法均为流传多年的定制算法,从理论和方法上都比较复杂。CohenSutherlan采用区域代码的策略,其不是从普通的数学概念出发,在某种程度上属于一种“发明类”算法;CyrusBeck和LiangBarsky两种算法很规范,都出于数学概念,均为专用算法。

(2)视锥体几何裁剪[3,5,35-36]

视锥体裁剪是计算机图形学的一个重要算法,其利用画法几何的投影理论,根据形计算的降维思想将3D计算降为2D计算[35-36]。

以视锥体的底平面和两个对称平面为坐标平面构成计算坐标系,以视锥体下底中心到上底中心的向量为z轴建立视锥体的计算坐标系(如图21),利用画法几何理论建立V/W投影体系。在该计算坐标系下,视锥体在V面上的投影Tv和在W面上的投影Tw均为等腰梯形(如图22)。对空间直线在V面与W面上的投影分别进行裁剪,其交集即为三维裁剪结果。

设计包含与视锥体顶点、边界线和边界面处于奇异状态的78组线段样本,对LiangBarskey方法、线面直接求交和基于投影降维的裁剪3种视锥体裁剪算法进行测试(如图23),在经过预处理之后的标准坐标系下,计算时间的参考比例为

L-B∶线面求交∶投影降维=

4 243∶4 228∶4 212,

说明3种算法的计算效率在同一数量级上。

(3)空间两三角形的相交问题[3,5,37-39]

对空间两三角形的相交问题进行讨论。表3所示为用40对三角形重复1 000 000次相交计算的测试结果。

表3 算法对40×1 000 000对空间三角形 进行相交测试的时间

在计算坐标系下测试,笔记本电脑用0.95 s(38/40)、台式电脑用0.7 s(28/40)可处理1 000 000对三角形的相交计算。在一般坐标系下测试,笔记本电脑用1.2 s(47/40)、台式电脑用0.775 s(31/40)可处理1 000 000对三角形的相交计算。

上面3个有计算时间对比的例子说明,形计算规范编制的算法效率已经达到和超过了专门编制的经典算法。

(4)基于几何数的布尔运算[3,5,40]

布尔运算是边界的拓扑重组。采用向量几何及交点的几何数决定边界方向,能够自动确定新边界的走向,避免繁琐的包容性测试,大幅度减少计算工作量[17,32,,34-35,40]。图24所示为对两个图形A和B求并集的形运算过程,分别从交点10和交点11出发得到A和B并集的2条边界,如图24b所示,图中圆圈里的数字为交点,方框里的数字为顶点。

该方法也可以扩展到三维形体的布尔运算,如图25所示。国产三维CAD发展的基础和关键是建立三维几何引擎,它是三维造型的核心,而三维造型最底层的算法是三维布尔运算算法。几何数的引入不但能简单有效地解决布尔运算中最困难的几何关系重组问题,而且能有效处理三维下的共线、共面等几何奇异问题,从而提高计算的稳定性。

(5)参数化设计

下面以参数化设计的例子说明形计算的综合应用情况[41]。

图26所示为参数化设计在参数化图库建库的应用框架,其主体方案主要包括文件转换器、图形校正、参数设计、数据库管理和图形库管理等。

参数化零部件由零件几何模型和零件信息模型描述。与一般CAD系统的图形文件一样,零件几何模型可用CAD系统的交互式作图方式产生。如果是其他CAD软件产生的图形,则可通过文件转换器转换为本系统能接受的图形文件,并经图形校正器校正以正确进行参数设计。零件信息模型定义零件的构造参数,如关系信息、工艺信息等,可从设计手册中获得,或从其他带有参数零件库的CAD软件中转换过来应用。

进行零件调用时,由参数设计模块分别从图形库和数据库中获取零件的几何信息和参数信息,经几何约束求解器得到该零件在特殊参数下的几何形状。存放零件几何模型和零件信息模型的图形库与数据库,则由图形库管理程序和数据库管理程序分别管理。

2.4.5 其他成果

KerenCAD软件中全面采用了形计算机制及由此编制的算法。

融合形计算的若干专著已经出版,包括《计算机图形学算法与实践》(1990,湖南科技出版社)[1]、《CAD图形开发工具》(1997,上海科技出版社)[2]、《几何计算》(2013,高等教育出版社)[3]、《计算机图形学(第三版)》(2016,机械工业出版社)[4]、《图学计算基础》(2018,机械工业出版社)[5]等。在国内外发表的论文计40余篇。

2.4.6 科学贡献

形计算厘清了几何与代数、计算机、画法几何等的关系,形成统一、规范、基于几何的几何计算体系,实现了“定性规划——从定性、直观的角度去思考,定量求解——以定量、有序的方式去求解”[1-16]。

形计算拓展了计算的深度与广度,充分发挥了几何与代数各自的优势,相互协调、相得益彰。辅助几何与图形的计算,是对数计算机制一种很好的补充,较好地改善了数计算的非可读性和几何奇异引起的计算不稳定性,降低了计算的复杂度,其科学贡献主要表现在以下方面:①基于几何问题几何化构筑几何计算新机制;②几何数有效提升了几何表示、计算和几何重组;③几何基实现了几何计算的定性思考和定量求解;④实现了几何变换矩阵元素与基本几何求解系统的统一;⑤基于几何数,从理论上解决了几何奇异问题;⑥降维计算实现了对传统理论的改造。

2.5 三维CAD基础

文献[13]展示了我国在建筑业、智能制造、数字街景、医学影像和数字媒体中的研究与应用进展,以及在数字图像处理、软件系统开发等方面的基础研究[42-43]。

浙江大学CAD & CG国家重点实验室,在数据可视化、三元空间群智计算、复杂工况多机组多变量关联设计理论、复杂物理对象的几何优化与过程模拟、基于MODELICA技术体系的复杂产品分析仿真软件研发、面向大尺度场景的高融合度增强现实技术等CAD相关的基础研究方面做了大量研究,有很好的积累[44]。

2.6 系统开发

在全国实施的CAD应用工程中,我国推出了高华、白玉兰、PICAD、开目、乔纳森等一批拥有自主版权的CAD软件产品,国产CAD软件得到了大量推广和发展。

当时总结的KerenCAD的主要特色为:中文界面、易学好用、自我学习、无师自通;一个键打半个天下的超级编辑功能;一次性作成图框,快速构造明细栏的“工程化”作图法;“文本化”的图纸说明输入法;自动导航、自动装配、局部放大等智能化作图手段;无须选定边界的自动修剪和裁剪功能;无限级UNDO和REDO功能;使设计速度愈来愈快的用户资源自扩展性;参数化建库工具和基于参数化零部件库的自动装配功能;与AutoCAD系统的DWG/DXF文件的双向接口,CADAM系统的图形文件读取和图形功能、数学函数等二次开发工具是KerenCAD的重大特色。

更可贵的是,在KerenCAD中已经考虑了系统的开放性问题,允许用户对应用进行定制。上海的沪东造船厂、交通部第三航务工程勘察设计院和上海铁路机械厂等就是利用白玉兰CAD的开放性进行应用定制,开发相应的应用,取得了很好的效果。

图27所示为20年前安装盘中的KerenCAD总体架构。

值得欣慰的是,KerenCAD的全部档案,包括系统设计文档、内外数据结构设计说明书、交互操作说明书、应用定制说明书、算法设计说明书和系统源代码等,均已完整地保留下来,并一直利用系统的定制功能作为开发平台进行新的开发工作。前面提到的裁剪算法、相交算法、布尔运算等新的算法研究均在该平台上开发,取得了很好的效果。

KerenCAD以及前面提及的我国在船舶、建筑等领域CAD和CAM软件系统的开发,都证明我国有大型应用软件系统的设计和开发能力。

2.7 应用定制

一般的CAD软件为通用系统,主要提供交互作图和交互设计的基本功能,在不同领域应用过程中需要做一些个性化的应用工作,以及专业化的定制开发,称为应用定制,早期在AutoCAD上的二次开发即为应用定制的一种初步形式。由此提高了软件的实用化程度,使其更好地发挥基础功能的作用,并提高在该应用领域的工程应用水平。

早期二次开发常用的方法有两种:①利用通用系统提供的应用接口函数;②利用通用系统提供的图形外部交换文件。

CAD软件系统开发的本质,就是将基础算法、图形显示和交互操作、命令执行等有机结合起来,即对分散的算法进行综合调度,是对一棵菜单树节点的展开。

现在,CAD软件一般都会开放用户自定义功能菜单接口,用户可以在交互系统中通过菜单直接启动应用程序中的计算程序。其实,这种开放技术并不困难,它就是所谓的“应用定制”技术。

2.7.1 基本工作

软件的应用定制一般包括以下工作:①能将应用菜单直接加入已有软件系统,新加入的菜单可以任意命名;②能将应用程序加入已有软件系统中作为软件系统的一部分;③能够建立应用程序与应用菜单之间的联系,使加入的菜单能够启动相应的应用程序。

应用程序能够调用软件系统中的图形元素(图元)产生函数、属性设置函数、显示函数等与设备有关的内部函数,直接输出图形,而且所产生的图元能与交互产生的图元混为一体进行交互编辑,相当于为原有的应用程序增加了可视化功能,达到批处理图形输出的效果。

CAD系统应用定制可以实现应用的交互操作,还可以利用软件系统已有的一些底层计算函数,而这些函数往往是很成熟的。因此,应用定制也应该能共享CAD系统内部的几何计算函数,从而降低定制成本,加快定制速度,提高应用定制的稳定性。

2.7.2 实施平台

下面以KerenCAD系统为例,给出应用定制的实施平台。

(1)内核函数

向用户开放CAD交互系统的内核函数,这些函数包括两大类:

1)图形接口 为可视化函数,提供基本图元(直线、圆弧、曲线、尺寸、文字、汉字、符号等)产生函数供应用程序调用。应用程序据此产生的图元与系统交互作图的图元地位相同,在系统中可显示并可交互编辑。对于参数化、系列化的图形,这种图形的产生速度是交互式无法比拟的。

2)基础算法 对于CAD系统本身使用的基础算法,如几何交切计算,在应用中应该尽量使用这些算法来保证系统运行的稳定性。

(2)菜单接口

开放用户自定义功能的菜单接口,菜单的名称可由用户自定义,从而使用户在交互系统中通过菜单直接启动应用程序中的计算程序。

2.7.3 实施方案

图28所示为一个应用定制的实施框架。

(1)应用控制程序 负责建立应用菜单和应用程序间的联系,点击应用菜单可以启动应用程序。

(2)应用菜单 通过修改开放的菜单命名文件,使应用菜单工程化,并与系统菜单合二为一。

(3)应用程序 通过调用数学库计算产生图形,通过调用图形工具显示图元,产生的图形与交互产生的图形可再交互编辑。

2.7.4 定制实例

图29所示为在KerenCAD中进行应用定制的菜单及其对应功能的一个实例。

(1)区域①给出一个“应用”主菜单,其中“应用”两字可以重新作专业化命名,例如“图学”(图29a)。

(2)区域②在“应用”主菜单下,有“应用之一”“应用之二”“应用之三”和“User1”“User2”“User3”共6个子菜单,这6个子菜单也可重新进行专业化命名。

(3)例如将区域③“应用之一”实例化为“几何测试”,其18个执行菜单中的前6个执行菜单也进行了实例化,其余“功能07~功能18”菜单也可作专业化命名(图29b)。

(4)区域④是图形显示区和交互编辑区。

3 重启之路

为什么相信有未来?首先,在被禁止使用某些软件的冲击下,“要有自主版权软件”的共识达到了前所未有的一致与高度,这是国产CAD软件重启的根本;其次,有重启CAD软件的理论基础、技术基础、系统开发基础和应用基础;最后,研究与发展软科学是中国人特有的专长。

3.1 重启基础

(1)建设我国自主版权软件已经成为共识 面对封锁,一些关键技术受制于人,上下均有“要有应对”的共识。应提高科学理念与工程意识,重视工程需求,用科学(基础科学)形成的知识体系,通过创新解决工程中提出的理论、方法、技术等问题,产生原创性成果,为实现科技强国梦做贡献。

(2)有CAD软件的理论和算法基础 有像以形计算为代表的比较全面、完整、稳定的几何计算理论,有经过数十年实际运行的成熟几何计算算法库,及相应的设计文档和源代码,特别是解决几何奇异问题的理论体系和解决方案,为研制几何引擎提供了理论基础和核心技术。

(3)有开发大型软件系统的技术基础 国产CAD软件开发和应用的历史较早,例如1979年潘云鹤院士研究了我国首项智能CAD“智能模拟彩色图案创作系统”;孙家广院士1976年开始涉足计算机专业,从事计算机图形学、计算机辅助设计和软件系统的开发,负责研制了拥有自主版权的二维CAD系统等。

(4)有开发CAD大型软件系统的人才基础 人才是关键,科技强国建设要有从事工程科学研究的科技队伍。实际上人才并不缺乏,关键是要支持并用好人才。

3.2 重启策略

所谓国产CAD软件的重启,即有基础、有能力、有人才,可以重振当年CAD的辉煌,然而这需要国家的支持,常说举国之力,相信经过若干年,即可将被人卡脖子的工业软件搞起来,如同当年搞原子弹一样。

3.2.1 发展趋势

CAD软件应用行业集中在航空航天与国防、制造、汽车、建筑设计与建造、媒体娱乐、医疗保健、造船、服装、消费品、室内设计等领域,其中制造和汽车占有很大的市场份额,在航空航天领域发展迅速。

随着机器学习和最优化算法研究的推进,CAD软件近年向自动化和个性化方向发展。自动化不但指通过软件辅助用户自动完成冗杂、重复的操作,而且指利用最优化算法帮助用户实现逆向设计,达到手工设计所不能实现的设计目标(如模型总质量约束、稳定性约束等);个性化指软件能够根据用户自定义的需求,借助机器学习技术,利用用户给定的基础信息自主生成定制化的结果。

从2D CAD过渡到3D CAD也是近年CAD软件的发展方向。虚拟现实(Virtual Reality,VR)技术在CAD软件中的应用也得到了一定研究,不少主流CAD软件已经可以支持VR环境下的3D交互建模。

云部署是3D CAD软件的一个重要发展趋势。随着CAD软件功能的逐渐强大,伴随的是其自身的复杂化,一台个人计算机较难满足CAD软件计算资源的需求,基于云的CAD服务将成为未来CAD软件的一个重要增长点。通过云端提供计算和存储服务,客户端只运行轻量的前端交互界面,即使是便携设备(如智能手机平板电脑),也可以全方位地使用CAD软件。通过云部署,还可以增强团队协作和设计沟通,同一个团队的不同设计师可以共享同一云端环境,借助前端界面的提示进行交流,从而提升设计效率。

3D CAD已经逐步取代2D CAD,其中“D”早已从Drawing/Drafting转化为Design,而且与下游计算机辅助工程/计算机辅助工艺设计/计算机辅助制造(Computer Aided Engineering/Computer Aided Process Planning/Computer Aided Manufacturing, CAE/CAPP/CAM)深度集成,设计之初即需考虑包括制造在内的产品全生命周期的各个环节,目前已在众多CAD软件中充分体现。BIM更是将信息维度提升到5D,如3D几何+1D进度+1D造价。因此,以几何为承载依托纳入更多信息是目前CAD应用数据的一个特征。

3.2.2 技术发展

CAD是产品创新的工具,应忽略软件的操作次序或使用规则,而提供设计者一个友好的、具有某种智能化的工作环境,协助开拓设计者的思路。

(1)图形交互功能的改进

1)智能化的图标菜单 用户根据菜单指示进行设计,菜单要直观、简洁、明了且层次少,尽量减少设计者的操作。

2)动态导航 自动拾取和判断模型元素的空间相对位置与属性,自动理解操作者的设计意图,记忆常用步骤,提示使用者下一步可能要做的工作。

(2)应用功能的扩展和提升

实现更多的应用集成,支持从产品设计到制造全生命周期的完整表述,一路畅通地开发出客户需要的产品。

(3)新基础平台上的建设

以云计算、大数据和人工智能等技术为代表的新型基础设施建设的快速发展,促进了以智能、协同、融合为标志的新型基础设施建设体系的研究和发展,为软件系统的研究和发展提供了新的平台,从而加快数字产业化进程,推进算法、算力和数据之间的协同发展。扩展人工智能(Artificial Intelligence, AI)在CAD中的应用,将实例和有关专业范围内的经验准确结合在一起,给设计者提供了更全面、更可靠的指导,使设计目标不断缩小探索范围,从而完美解决问题。

3.2.3 形计算之用

找出关系、重组关系实际上是计算的核心工作。几何计算的核心是几何关系的重组,形计算机制在解决几何奇异问题时不是依赖数值计算,而是基于几何关系进行判断(共点、共线、共面等)。大数据的关键不是数据的量大,而是要在大量数据之间找出与某一处理对象的关系,例如与某个人、某个产品有关的数据。一个产品在从设计到应用的全过程中,产品零件、部件、工艺、力的关系均为“关系计算”,在CAD软件的开发和应用中应充分发挥形计算在关系计算中的优势,相信在进一步研究和应用下,形计算一定能够为解决工业软件的核心算法和开发几何引擎发挥其基础和支撑作用。

3.2.4 应用定制

CAD的基础是图形处理,需要加强CAD软件的应用定制功能,给科学计算提供更多的图形功能,同时提升和简化应用定制的步骤,开发行业定制、教学定制等,让CAD的图形功能适应更多的公共应用。

(1)行业定制

国产CAD软件为自主开发,具有底层图形处理的功能,常短小精干、开放性好。可选择一些合适的应用领域,将已有的在AutoCAD等外来系统上二次开发的应用转换到国产CAD软件上,直接变成行业应用软件;也可以根据行业的应用特点选择具有广泛应用前景的领域,定制开发相关的应用软件系统。

(2)教学定制

上个世纪,对AutoCAD进行二次开发多从高校开始,一些图学教材都有计算机辅助设计或计算机辅助绘图的内容,要鼓励和支持面向工程图学的教学定制,初步设想如下:

1)面向知识教学的定制 例如,为方便投影原理教学,开发三视图绘制,演示点、线、面的投影和几何关系,展示基本体、基于形体分析的组合体的组合与分解原理等。

2)面向CAD原理性学习和实践的定制 例如搞一个课程设计,老师先讲一些造型的原理,而后让学生进行应用定制,在CAD软件上完成一些零件的造型,最后组装设计出一个简单的产品。

3)替代政策 用国产CAD软件替代已经在AutoCAD等外来软件基础上开发的应用,这是立即可以着手做到的(如图30)。

3.2.5 开放源代码

比应用定制更进一步发挥用户作用的是开放源代码,开放源代码的软件开发模式最大的优点是可以得到大量开放源代码社群的支持,如同拥有大量免费的软件开发和测试人员,更多地发挥应用开发者的作用。那些国产CAD软件的开发既是前辈的艰辛付出,也得到过国家的大力支持,理应发挥更大的作用。

3.2.6 校园计划

(1)吸取教训 MATLAB对一些高校禁用在国内产生了很大影响。早期AutoCAD的免费使用计划摧毁了几乎同时起步、正在成长中的我国CAD软件的发展,这个教训深刻而惨痛。后车不忘前车之师,新技术的推广均从教育领域开始,要在图学教材中大力宣传国产CAD软件,增加CAD软件开发基础教学。

(2)重塑经典 尝试重构工程图学系列教材(制图基础、专业基础、CAD基础、理论基础、计算基础等)和系列课程(基础课程、通识课程、课程设计等),改进图学教材中“计算机制图”章节的内容,将讲授一些最基本的使用方法改为从CAD软件开发过程中一些最核心、最本质的考虑出发,介绍软件的设计方法,以促进软件的主动使用,并提高软件使用的效率,也有利于设计与科研。另外,以国产CAD为平台,构筑教学资源,完成课程设计。

3.2.7 运行机制

上世纪的CAD应用工程是国家行为,国产CAD软件的重启工作也应该是国家行为,可以从以下方面立即组织和实施:

(1)广泛调查和征集我国已有的、基础较好的、还有比较完整开发文档的国产CAD软件,或整体、或算法,对我国已有CAD软件的开发基础有一个总体的了解和评估。

(2)对那些基础较好、文档齐全的国产CAD软件,采用国家征用或国家收购的方式收归国有,在作出相应的适应性调整后开放源码和说明书,在全国免费推广使用。

(3)建立若干强干的团队,综合基础好的国产CAD软件进行重点开发,正式推出国产CAD软件,在全国推广并免费使用,然后返回改进意见,使国产软件在应用中逐渐成熟。

(4)对一些关键的基础算法重点支持(如几何引擎),对已有的算法进行精细化、实用化开发,对没有的算法组织团队研究,在一段时间内构建稳定的CAD软件几何基础。

(5)考虑建立开发者联盟,充分发挥各行业已经开发的基础和应用软件的作用,探索和建立有效机制,保障核心组和联盟成员权益,各司其职,各得其益。

4 结束语

工业软件对中国工业发展具有决定性的支撑作用,对推动制造业转型升级具有重要的战略意义,现在国家和业界对自主版权工业软件必要性的认识已经达到前所未有的高度,都认为需要通过科技突围应对科技脱钩后的严峻挑战。因此,应聚焦工业软件的理论基础、系统基础、计算基础、应用基础和人才培养。作为一位CAD应用工程曾经的参与者,以及CAD软件的开发者和推广者,作者回顾我国CAD软件的历史,整理了一些研发基础并展望国产CAD软件的重启之路。

(1)回顾我国CAD软件的发展历史 以较多的史实回顾了我国CAD发展历史。记录这段历史,特别是在实施CAD应用工程期间我国科技人员曾经付出的努力,曾经的辉煌,以及前辈们孜孜不倦的奉献精神与家国情怀。所有这些,证明了我们曾经努力过。

(2)详细介绍了我国在CAD软件的研发基础 这些在基础理论、方法技术、系统设计、支撑算法和深度应用等方面雄厚的积累,是国产CAD软件的重启之本。

(3)展望了国产CAD软件的重启之路 讨论了国产CAD软件重启的基础,探索了重启策略。正是基于早期扎实的系统基础工作、精准而稳定的基础算法、软件设计的开放性思想、业已实施的CAD系统及其在多个领域的深度应用,才有今天的重启一说,才有有底气畅想未来,重启全国性研发和推广国产CAD的进程,重振国产CAD雄风,突破国外的科技封锁。

基于命题和时间的限制,本文未对国产CAD软件的一些问题进行展开说明。例如,没有详细介绍三维CAD的相关技术,只简单提及几何引擎的研发;我国CAD软件与国外知名软件相比具体存在的差距,以及弥补差距可能采取的措施等。

从根本上说,科学是主干,技术是主干上发展出来的枝叶,没有科学只做技术,最终可能什么也得不到,因此应该尊重科学,尊重和深入理解前人积累的理论和知识。如果没有掌握科学规律,则不能举一反三,只能单纯地就事论事;如果只认为技术才是有用的,想方设法掌握表面的东西,而不去探索技术的缘由、科学的本质,不去研究和建立完整的科学体系,则永远摆脱不了落后的命运。

老一辈知识分子为了搞清一个“光顺”的定义而静得下心、坐得下身,整整30年,这是何等的科学精神和家国情怀。创新不是喊出来的,而是脚踏实地干出来的!

相信成长起来的新一代人才,也有为国产软件奉献的精神,这是构建国产软件的新生力量,他们能随时听从国家的召唤,更能长江后浪推前浪,在国家的支持下重启国产CAD软件,开发出我国自己的工业软件。

猜你喜欢
光顺样条
一元五次B样条拟插值研究
基于五次B 样条的对流-扩散方程数值解法
对流-扩散方程数值解的四次B样条方法
平面网格铣削加工光顺刀轨快速生成方法
三次参数样条在机床高速高精加工中的应用
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
基于样条函数的高精度电子秤设计
HDSHM系统船体型线光顺应用经验
样条曲线构建优化技术的研究*
B样条曲线曲面的一种光顺算法