如何在solidpython中设置特殊变量$fa, $fs, $fn

How to set special variables $fa, $fs, $fn in solidpython

a previous thread 中显示了如何通过 solidpython 创建 3D 体并将其保存到 stl-file。由于未设置 $fa、$fs、$fn,因此它们具有默认值,并且 3D 体的面数较少。 来自上面线程的示例代码:

from solid import *
from subprocess import run

d = difference()(
   cube(10),
   sphere(15)
)

scad_render_to_file(d, 'd.scad')

run(["openscad", "-o",  "d.stl", "d.scad"])

这里是结果stl-body documentation i didn‘t find anything about setting these variables. This readme好像过时了。

如何在 solidpython 中设置 $fa, $fs, $fn?

有两种方法可以做到。

在solidpython中一些对象(例如circle()sphere()cylinder())有可选参数segments对应openscad中的$fn,见solidpython 包中文件 objects.py 中的源代码(在 archlinux /usr/lib/python/site-packages/solid/objects.py 上)。

可能的solidpython代码:

sphere(15, segments = 180)

生成的 openscad 代码:

sphere($fn = 180, r = 15);

或者可以在 scad_render_to_file() 中设置文件头,请参阅 solidpython 包中文件 solidpython.py 中的源代码。

solidpython代码:

scad_render_to_file(d, 'd.scad', file_header = '$fa = 0.1;\n$fs = 0.1;', include_orig_code=True)

将这些行写入 openscad 文件的顶部:

$fa = 0.1;
$fs = 0.1;

这里是示例生成的 stl