一句话:提出基于谱系的引用DSL,将CAD引用作为一等构造,安全表达参数变化下的几何元素选择。
3D CAD 模型可视为生成几何的程序,通过修改参数实现几何变更,但程序用引用从几何中选择元素并传给操作。当参数改变导致拓扑变化,尤其目标元素不存在时,现有系统依赖启发式推断意图,引用会丢失或被任意切换,产生无效模型。本文分析现有引用方案的失效模式,形式化评价标准,提出将引用作为一等语言构造的 DSL,用用户查询内省元素历史并在所有路径上安全定义引用;给出可查询的细粒度元素谱系语义,并证明满足所需性质。最后在 2.5D CAD 内核中实现,展示真实引用场景,并能安全表示在现有 CAD 系统中导致引用断裂的模型。
3D Computer-Aided Design (CAD) modeling is ubiquitous in mechanical engineering and design. Modern CAD models are programs that produce geometry and can be used to implement high-level geometric changes by modifying input parameters. While there has been a surge of recent interest in program-based tooling for the CAD domain, one fundamental problem remains unsolved. CAD programs pass geometric arguments to operations using references, which are queries that select elements from the constructed geometry according to programmer intent. The challenge is designing reference semantics that can express programmer intent across all geometric topologies achievable with model parameters, including topologies where the desired elements are not present. In current systems, both users and automated tools may create invalid models when parameters are changed, as references to geometric elements are lost or silently and arbitrarily switched. While existing CAD systems use heuristics to attempt to infer user intent in cases of this undefined behavior, this best-effort solution is not suitable for constructing automated tools to edit and optimize CAD programs. We analyze the failure modes of existing referencing schemes and formalize a set of criteria on which to evaluate solutions to the CAD referencing problem. In turn, we propose a domain-specific language that exposes references as a first-class language construct, using user-authored queries to introspect element history and define references safely over all paths. We give a semantics for fine-grained element lineage that can subsequently be queried; and show that our language meets the desired properties. Finally, we provide an implementation of a lineage-based referencing system in a 2.5D CAD kernel, demonstrating realistic referencing scenarios and illustrating how our system safely represents models that cause reference breakage in existing CAD systems.
@article{paperbot1958,
title = {A Lineage-Based Referencing DSL for Computer-Aided Design},
author = {Dan Cascaval and Rastislav Bodik and Adriana Schulz},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {PLDI},
year = {2023},
doi = {10.1145/3591223}
}