跳转到内容

OpenSCAD 用户手册/其他二维格式

来自维基教科书,开放世界中的开放书籍


目前,OpenSCAD 仅支持 DXF 作为二维图形的图形格式。其他常见格式包括 PS/EPSSVGAI

程序 pstoedit 可以进行各种矢量图形格式之间的转换。OpenSCAD 需要将 -polyaslines 选项传递到 dxf 输出插件才能理解该文件。-mm 选项将 1 毫米设置为 dxf 中的 1 个单位;如果将 OpenSCAD 中的 1 个单位设置为等于 1 毫米,请包含此选项。-dt 选项指示 pstoedit 渲染文本,这通常是包含文本时所需的操作。(如果渲染文本的多分边形数量的解析度太低,最简单的解决方案是在转换之前放大 eps;如果您知道更优雅的解决方案,请将其添加到示例中。)

pstoedit -dt -f "dxf: -polyaslines -mm" infile.eps outfile.dxf

Inkscape 可以将 SVG 转换为 EPS。然后 pstoedit 可以将 EPS 转换为 DXF。

inkscape -E intermediate.eps infile.svg
pstoedit -dt -f dxf:-polyaslines\ -mm intermediate.eps outfile.dxf

Makefile 自动化

[编辑 | 编辑源代码]

可以使用 make 系统自动化转换;将以下行添加到您的 Makefile

 all: my_first_file.dxf my_second_file.dxf another_file.dxf
 
 %.eps: %.svg
 	inkscape -E $@ $<
 
 %.dxf: %.eps
 	pstoedit -dt -f dxf:-polyaslines\ -mm $< $@

第一行指定在当前目录中调用 make 时要生成哪些 dxf 文件。第二段指定如何将以 .svg 结尾的文件转换为以 .eps 结尾的文件,第三段将 .eps 转换为 .dxf。

一个更完整的 makefile 可以从文件夹中的任何 svg 自动生成 dxf 文件。在这种情况下,将以下行添加到您的 Makefile

SVG := $(wildcard *.svg)
DXF := $(SVG:%.svg=%.dxf)
EPS := $(SVG:%.svg=%.eps)

.PHONY: all clean clean-eps clean-dxf

all: $(DXF)

%.eps: %.svg
	inkscape -E $*.eps $*.svg
 
%.dxf: %.eps
	pstoedit -dt -f "dxf: -polyaslines -mm" $*.eps $*.dxf

clean: clean-dxf clean-eps

clean-dxf: 
	rm -f $(DXF)

clean-eps:
	rm -f $(EPS)

仍然可以通过调用 make filename.dxf 来构建特定文件,但此代码还允许仅通过调用 makemake all 来构建(重新构建)文件夹中的所有 dxf 文件。

此代码也足够通用,可以将其放在单个文件中,并在每个包含用于 dxf 转换的 svg 文件的目录中通过运行以下命令将每个 makefile 创建符号链接

ln -s /path/to/this/svg_to_dxf_makefile makefile

在每个相应的目录中。

AI(Adobe Illustrator)

[编辑 | 编辑源代码]

尽管 Adobe Illustrator CC/CC.2014 允许您将插图导出为 DXF(并选择 DXF 格式版本,最早可追溯到 12),但它使用 OpenSCAD 不支持的 DXF 实体,例如 POLYLINESPLINE

由于 pstoedit 本身不支持 Adobe Illustrator 文件,因此可以使用 EXDXF 作为替代方案,它是一个 Adobe Illustrator 插件(30 次免费试用导出,之后您需要支付 90 美元才能注册该插件)。

在导出之前,建议您确保画板与您要导出的组件的尺寸相同。尽管 EXDXF 在导出到 DXF 时提供了许多选项,但对于 OpenSCAD 兼容性而言,最重要的选项是将 线转换 设置为 线和圆弧

OpenSCAD 并不总是提供有关它在 DXF 导入中遇到的问题的信息。如果发生这种情况,请选择 设计 | 清理缓存,然后选择 设计 | 重新加载和编译

上一步

[编辑 | 编辑源代码]

DXF 拉伸

下一步

[编辑 | 编辑源代码]

简短且带注释的示例项目

华夏公益教科书