如何确定 OpenSCAD 中文本的宽度?

Gda*_*lya 5 size text rulers openscad

在 OpenSCAD 中,我希望能够创建一个module接受 astring然后创建一个 3-D 对象,该对象将该字符串作为text. 我希望对象比 稍大text,所以我需要知道它有多宽text才能创建一个大小合适的对象。

我不确定如何查询的宽度text(高度由输入变量设置),或者是否可能。

如果不可能,是否有一个函数可以接受字符串和字体并预测呈现文本的宽度?

Ale*_*uss 6

如果您使用 OpenSCAD 捆绑的 Liberation 字体之一或 Microsoft Core Fonts 包中的字体,则可以使用我的字体测量 OpenSCAD 库。例如:

use <fontmetrics.scad>;
length = measureText("This is a Test", font="Arial:style=Italic", size=20.);
Run Code Online (Sandbox Code Playgroud)

图书馆在这里。我使用一些Python 脚本从 ttf 文件中提取指标(包括字距调整对),您可以使用这些脚本添加有关更多字体的信息。


小智 5

目前无法查询生成的文本几何的实际大小。但是,根据应创建的模型,计算粗略估计并用于scale()将文本拟合到已知大小可能就足够了。

// Fit text into a randomly generated area

r = rands(10, 20, 2);
length = 3 * r[0];
w = r[1];

difference() {
    cube([length, w, 1]);
    color("white")
        translate([0, w / 2, 0.6])
            linear_extrude(1, convexity = 4)
                resize([length, 0], auto = true)
                    text("This is a Test", valign = "center");
}
Run Code Online (Sandbox Code Playgroud)

  • 使用此答案作为指导,我创建了一个模型,该模型将文本标签的宽度和高度限制为立方体的已知宽度和高度。http://www.thingiverse.com/thing:2090732 (2认同)