出工程图最难的不是画几何,是把标注放对地方:尺寸数字、零件气球、剖切字母、基准符号,每一样都要找一块没被占用的空地。此前我们的避让是零散的——气球看气球的登记,外移数字看数字的登记,视图名看自己的包围盒。各记各的帐,帐本之间就是盲区:右上角的引出块撞上左侧的外移数字,剖切字母扎进几何密集带,两本帐互不知情。
转折点是一句朴素的观察:画图的人是知道之前画到哪里了的。
于是有了 Ink——每个视图一本「画到哪儿了」的帐。画一段登一段(文字包围盒 + 线段),所有后来要找地方放的元素,对着全部已画墨迹计分选位:压到文字代价 30(读不出来了),压到线条代价 3(还认得出走向),取代价最小的候选。
几个立竿见影的数字:
- 一张阶梯剖视图的剖切字母 A,原来压线 865 段——延后到全图画完再选位后,0 段;
- 坐标基准
0,0的文字,原来骑在几何密集区上压线 21 段——只给视图内侧候选、代价太高就干脆省略文字(直角折线加圆点本身已表达零点),0 段; - 竖排尺寸数字不再骑在自己的尺寸线上——让位方向从写死的 y 轴改成文字自身的法向。
判据也跟着收紧进了门禁:全语料上文字互压必须为 0,任何文字压线不得超过 3 段,气球上只许写编号。每一处避让接线都做了变异验证——拆掉任何一刀,测试必须变红。
还有一笔诚实帐:整图共用一本帐(跨视图也看得见)我们试过,被性能否决——朴素的线性扫描把语料测试从 87 秒拖到 549 秒。记为下一轮,配空间索引再做。工程上「先把 95% 做对、剩下 5% 记清楚」好过「一步到位但上不了线」。