OpenSCAD用户手册/其他二维数据格式
目前,OpenSCAD仅支持DXF作为其2D图形格式。而其他常见的格式还有PS/EPS, SVG与AI。
PS/EPS
[编辑]pstoedit程序可在各种向量图形格式之间进行转换。需要为此dxf插件指定-polyaslines
选项才能输出OpenSCAD可以识别出的文件。-mm
选项则把1mm设置为dxf中的1个单位;如果您想令OpenSCAD中1个单位为1毫米就可以加入此选项。-dt
选项令pstoedit渲染文本,如果您的文件中包括文本通常可以加入此选项。(如果被渲染文本以多边形表示的分辨率过低,可以简单地在转换之前对eps文件内容按比例放大;如果你知晓更优秀的解决方案,请在此添加示例。)
pstoedit -dt -f "dxf: -polyaslines -mm" infile.eps outfile.dxf
SVG
[编辑]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
来构建特定的文件,但是上述代码令您可以仅通过调用make
或 make all
来(重新)构建特定目录下的所有dxf文件。
此代码也具有颇具通用性,可将其编写至单个文件之中,再通过下列命令以symlink方式,连接每个需要将svg转换为dxf的文件夹中的makefile:
ln -s /path/to/this/svg_to_dxf_makefile makefile
AI (Adobe Illustrator)
[编辑]尽管Adobe Illustrator CC/CC.2014允许您将其制作的图像导出为DXF (而且早在12版的时候就可令用户选择DXF格式),但OpenSCAD仍不支持AI所用的DXF实体,例如POLYLINE
与SPLINE
。
由于pstoedit原生不支持Adobe Illustrator文件,因此一种替代方法是使用EXDXF,这是一款Adobe Illustrator插件(30天免费使用导出功能,过期后必须支付$90去注册此插件)。
导出之前,我们建议您确保自己的Artboard与待导出的目标组件有相同的维数(dimensions)。尽管在EXDXF导出DXF时为您提供了许多选项,但与OpenSCAD有关的最重要选项是将Line Conversion
设置为Line and Arc
。
OpenSCAD并非总是提供其DXF导出工具出错的一切有关信息。如果发生了这种情况,请选择Design | Flush Caches
,再选中Design | Reload and Compile
。