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, 代码优化, 几何算法, 可视化界面, 数理逻辑, 程序合成, 等式饱和, 编译器技术, 网络流量审计, 计算机图形学, 设计自动化, 逆变换, 逆向工具, 重写规则, 领域特定语言