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

时间:2016-09-19 01:18:35

标签: text size openscad rulers

在OpenSCAD中,我希望能够创建一个接受module的{​​{1}},然后创建一个三维对象,其中该字符串作为string嵌入表面。我希望对象略大于text,所以我需要知道text的宽度,以便创建一个大小合适的对象。

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

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

2 个答案:

答案 0 :(得分:3)

目前无法查询生成的文本几何体的实际大小。但是,根据要创建的模型,可能足以计算粗略估计并使用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");
}

答案 1 :(得分:2)

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

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

该库为here。我使用了一些Python scripts从ttf文件中提取指标(包括字距对),并且您可以使用脚本来添加有关更多字体的信息。