uwplse/szalinski

GitHub: uwplse/szalinski

基于等式饱和和逆变换技术的 CAD 模型合成与优化研究工具,可将复杂 CSG 程序重写为简洁等价形式。

Stars: 55 | Forks: 6

在此我们提供有关如何安装、运行 Szalinski, 以及修改 Caddy 语言的规则和功能的说明。 如果您有兴趣使用 Szalinski,请联系我们! ## 设置说明 以下是在运行 Ubuntu 19.10 的不同机器上 从头开始设置 Szalinski 的步骤。 * 安装 rust。在终端中输入 `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` 并按照后续说明操作。我们使用的版本是 `1.41.0`。 更多信息请参阅 `https://www.rust-lang.org/tools/install`。 * 确保通过输入以下命令配置您当前的 shell:`source $HOME/.cargo/env` (Rust 安装程序会提示您执行此操作)。 * 通过输入以下命令安装 make:`sudo apt-get install make` * 通过输入以下命令安装 g++:`sudo apt-get install g++` * 通过输入以下命令安装 jq:`sudo apt-get install jq` * 通过输入以下命令安装 [CGAL](https://www.cgal.org/download/linux.html) `sudo apt-get install libcgal-dev` * 通过输入以下命令安装 [OpenSCAD](https://www.openscad.org/) `sudo apt-get install openscad` * 通过输入以下命令安装 git:`sudo apt install git` * 通过输入以下命令安装 pip:`sudo apt install python3-pip`,然后 通过输入 `pip3 install numpy` 安装 `numpy`,并通过输入 `pip3 install matplotlib` 安装 `matplotlib` ## 运行工具 - 首先通过运行 `cargo build --release` 编译 Szalinski - 要使用 Szalinski 优化 3D 模型(`.csexp` 文件),请运行 `target/release/optimize path/to/foo.csexp path/to/out/foo.json` - 您也可以查看 `Makefile` 以了解更多关于如何将 SCAD 文件转换为 `.csexp` 文件的信息。 ## 更改 Caddy 和修改规则 * Caddy 语言定义在 `src` 目录下的 `cad.rs` 中。 您可以添加的一个简单功能是支持新的基元或新的 变换。您还可以更改各种语言 构造的开销。`cost` 函数的定义从第 `267` 行开始。 * 正如我们在论文中描述的那样,为了验证 Szalinski 的正确性, 我们将 Caddy 程序评估为扁平的 Core Caddy 并漂亮打印为 CSG。此 代码位于 `eval.rs` 中。 * `solve.rs` 和 `permute.rs` 包含用于求解笛卡尔坐标和球面坐标中的一阶和二阶 多项式的代码,并执行 列表的分区和排列。 * 重写规则位于 `rules.rs` 中。语法重写 使用 `rw!` 宏编写。每个重写都有一个名称、一个左侧 和一个右侧。您可以添加/删除规则,以观察这如何影响 Szalinski 的最终 Caddy 输出。例如,如果您注释掉 逆变换的规则,它们将不会被传播和 消除,因此 Szalinski 的输出质量将不会 那么好。 ## 备注与说明 Szalinski 使用 [Rust](https://www.rust-lang.org/) 实现。 正如论文的 `Section 6` 中提到的, 它使用 [OpenSCAD](https://www.openscad.org/) 将 CSG 程序编译为三角网格,并 使用 [CGAL](https://www.cgal.org/) 来计算 两个网格之间的 Hausdorff 距离。
标签:3D建模, Android, Caddy语言, CAD模型合成, CGAL, DSL, OpenSCAD, Rust, Szalinski, 代码优化, 几何算法, 可视化界面, 数理逻辑, 程序合成, 等式饱和, 编译器技术, 网络流量审计, 计算机图形学, 设计自动化, 逆变换, 逆向工具, 重写规则, 领域特定语言