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


目前,OpenSCAD仅支持DXF作为其2D图形格式。而其他常见的格式还有PS/EPS, SVGAI

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

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文件。

此代码也具有颇具通用性,可将其编写至单个文件之中,再通过下列命令以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实体,例如POLYLINESPLINE

由于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