与大多数用于创建 3D 模型的免费软件(例如著名的应用程序 Blender)不同,OpenSCAD 专注于 CAD 方面而不是 3D 建模的艺术方面。因此,当您计划创建机器零件的 3D 模型时,这可能是您正在寻找的应用程序,但可能不是创建计算机动画电影的工具。
OpenSCAD 不是交互式建模器。相反,它更像是一个 3D 编译器,它读取描述对象的脚本文件并从该脚本文件渲染 3D 模型(参见下面的示例)。这使您(设计人员)可以完全控制建模过程,并使您能够轻松更改建模过程中的任何步骤或进行由可配置参数定义的设计。
OpenSCAD 提供了两种主要的建模技术:首先是构造实体几何(又名 CSG),其次是二维轮廓的挤压。使用 Autocad DXF 文件作为这些二维轮廓的数据交换格式。除了用于挤压的 2D 路径外,还可以从 DXF 文件中读取设计参数。除了 DXF 文件,OpenSCAD 还可以读取和创建 STL 和 OFF 文件格式的 3D 模型。
您可以在https://www.openscad.org/downloads.html下载最新的 OpenSCAD 二进制文件 。像安装任何其他软件一样安装二进制文件。
打开 OpenSCAD 时,您会在窗口中看到三个框架。左框架是您将编写代码来为 3D 对象建模的地方。右侧框架是您将看到模型的 3D 渲染的地方。
让我们做一棵树吧!在左侧框中键入以下代码:
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
cylinder(h = 30, r = 8);
然后按 F5 渲染 3D 模型。现在您可以在我们的树中看到一个圆柱体作为树干。现在让我们添加由球体表示的树的浓密/多叶部分。为此,我们将合并一个圆柱体和一个球体。
union() {
cylinder(h = 30, r = 8);
sphere(20);
}
但是,这并不完全正确!浓密的/多叶的在树的基部周围。我们需要将球体沿 z 轴向上移动。
union() {
cylinder(h = 30, r = 8);
translate([0, 0, 40]) sphere(20);
}
就是这样!你制作了你的第一个 3D 模型!还有其他原始形状,您可以将它们与其他集合操作(并集、交集、差分)和变换(旋转、缩放、平移)结合起来,以制作复杂的模型!查看OpenSCAD 手册中的所有其他语言功能。
查看 OpenSCAD 主页 ( https://www.openscad.org/documentation.html ) 获取文档。
要从源代码构建 OpenSCAD,请按照下面适用于您的平台的说明进行操作。
要构建 OpenSCAD,您需要一些库和工具。括号中的版本号指定已用于开发的版本。其他版本可能也可能不工作。
如果您使用的是较新版本的 Ubuntu,则可以从 aptitude 安装这些库。如果您使用的是 Mac 或较旧的 Linux/BSD,则可以使用构建脚本从源代码下载和编译库。按照下面针对您正在编译的平台的说明进行操作。
在您的系统上安装 git ( https://git-scm.com/ )。然后运行克隆:
git clone https://github.com/openscad/openscad.git
这会将最新的源代码下载到一个名为openscad
.
要拉取各种子模块(包括MCAD 库),请执行以下操作:
cd openscad
git submodule update --init --recursive
( cd submodules/manifold && git apply thrust.diff )
先决条件:
安装依赖:
使用以下选项之一构建依赖项后,请按照编译部分中的说明进行操作。
从源头
运行设置环境变量的脚本:
source scripts/setenv-macos.sh
然后运行脚本来编译所有依赖项:
./scripts/macosx-build-dependencies.sh
Homebrew(假设Homebrew已经安装)
./scripts/macosx-build-homebrew.sh
首先,确保安装了 git(通常打包为“git-core”或“scmgit”)。克隆此 git 存储库后,使用系统的包管理器下载并安装上面列出的依赖包。提供了一个方便的脚本,可以帮助在某些系统上完成此过程:
sudo ./scripts/uni-get-dependencies.sh
安装依赖项后,检查它们的版本。您可以运行此脚本来帮助您:
./scripts/check-dependencies.sh
请注意,您在任何地方都没有旧的本地副本 ( /usr/local/
)。如果所有依赖项都存在并且版本足够高,请跳到编译说明。
如果您的某些系统依赖库丢失或过旧,那么您可以$HOME/openscad_deps
按照此过程下载并构建更新的版本。首先,运行设置环境变量的脚本。
source ./scripts/setenv-unibuild.sh
然后运行脚本来编译上面所有的必备库:
./scripts/uni-build-dependencies.sh
请注意,此处不包括 gcc、qt 或 glib2 等大型依赖项,仅包括较小的依赖项(boost、CGAL、opencsg 等)。构建后,再次检查依赖项。
./scripts/check-dependencies.sh
之后,按照下面的编译说明进行操作。
Windows 版 OpenSCAD 通常是从 Linux 交叉编译而来。如果您想尝试在 Windows 上构建 MSVC,请参阅此站点: https ://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Building_on_Windows
要交叉构建,首先确保您拥有 MXE 项目的所有必要依赖项(在https://mxe.cc/#requirements列出)。不要自己安装 MXE,下面的脚本将为您完成$HOME/openscad_deps/mxe
然后安装您的开发工具以获取 GCC。然后在克隆这个 git 存储库之后,启动一个新的干净的 bash shell 并运行设置环境变量的脚本。
source ./scripts/setenv-mingw-xbuild.sh 64
然后运行脚本下载并编译上面所有的必备库:
./scripts/mingw-x-build-dependencies.sh 64
请注意,此过程可能需要几个小时,并且需要数十 GB 的磁盘空间,因为它使用https://mxe.cc系统交叉构建许多库。完成后,构建 OpenSCAD 并将其打包到安装程序中:
./scripts/release-common.sh mingw64
对于 32 位 Windows 交叉构建,请将上述说明中的 64 替换为 32。
首先运行mkdir build && cd build && cmake .. -DEXPERIMENTAL=1
生成Makefile。
然后运行make
。最后,在 Linux 上,您可以make install
以 root 身份运行。
如果您在从源代码编译时遇到问题,请在github 页面上的问题跟踪器中提出新问题 。
该站点及其子页面也很有用: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Building_OpenSCAD_from_Sources
构建完成后,您可以使用cd build/tests && ctest
.
安装circleci-cli(你需要一个 API 密钥)
注意:我们也使用 GitHub Workflows,但仅用于在 Windows 上运行测试(我们在下面的基于 Linux 的 CircleCI 工作流中交叉构建)。另外,act无论如何都不喜欢我们的子模块设置。
运行 CI 作业
# When "successful", these will fail to upload at the very end of the workflow.
circleci local execute --job openscad-mxe-64bit
circleci local execute --job openscad-mxe-32bit
circleci local execute --job openscad-appimage-64bit
注意:不能在本地构建 openscad-macos。
如果/当 GCC 被随机杀死时,给 docker 更多 RAM(例如,您计划运行的每个并发图像 4GB)
要以更交互的方式调试作业,您可以使用手动路线(检查 .circleci/config.yml 以获取您需要的实际 docker 映像)
docker run --entrypoint=/bin/bash -it openscad/mxe-x86_64-gui:latest
然后一旦你得到控制台:
git clone https://github.com/%your username%/openscad.git workspace
cd workspace
git checkout %your branch%
git submodule init
git submodule update
# Then execute the commands from .circleci/config.yml:
# export NUMCPU=2
# ...
# ./scripts/release-common.sh -snapshot -mingw64 -v "$OPENSCAD_VERSION"
[/hidecontent]