一步,他编写了一个简单的「约束解析器」,能够处理「水平」、「垂直」、「相切」、「距离等于」、「点在线上」等最基本的几何约束,并允许将某个尺寸(如一个圆的半径,或两条平行线的间距)定义为「驱动参数」。
这个过程同样艰难。
内存限制逼得他将数据结构和算法精简到极致。
又是一个周三的深夜,程序有了突破性进展。
陆怀民成功地将一个简单的法兰盘连接件二维剖面图「参数化」了。
他定义了法兰外径、螺栓孔中心圆直径、孔数、法兰厚度等几个关键参数。
「徐工,您来看看这个。」陆怀民叫住了正在一旁检查磁带机状态的值班员。
徐工走过来,看着屏幕上那个由绿色线条构成的、略显粗糙但结构分明的法兰图形。
「这是个法兰盘剖面,对吧?」徐工是老师傅,一眼就认了出来。
「对。您看这儿,」陆怀民指着屏幕侧边显示的几行参数,「这是它的几个主要尺寸。现在……」
他双手放在键盘上,谨慎地输入修改命令,将「孔数=4」改为了「孔数=8」,然后按下了执行键。
屏幕上的图形闪烁了一下,然后,在徐工惊讶的目光中,图形开始了「自动」更新:
原有的四个螺栓孔之间,精准地插入了四个新的圆孔,均匀地分布在新计算出的螺栓孔中心圆上。
与孔位相关的中心圆标注线也自动延长,旁边的尺寸标注数字从「4-Φ13」刷新为「8-Φ13」。
整个图形看起来,就像被一只无形而的手,瞬间按照新的规则重新绘制了一遍。
虽然刷新速度因为大量的重复计算而有些慢,虽然图形依旧是简陋的线框,但那个「自动变化」的过程,清晰无误。
而且远快于手绘。
「这……」徐工凑近屏幕,又看了看旁边桌子上陆怀民手绘的原版图纸,对比了一下:
「它……它自己就改好了?按你新说的孔数?」
「可以这么理解。」
「这比手绘快多了!」徐海露出惊讶的神色。
「现在还不快,因为硬体限制。」陆怀民解释:
「但原理对了。将来计算机快了,内存大了,就能画复杂的图,甚至三维模型。」
他调出参数化设计的部分代码:
「你看这里,定义了一个轴类零件的参数:直径、长度、键槽尺寸