在OpenSCAD中,我希望能够创建一个接受module
的{{1}},然后创建一个三维对象,其中该字符串作为string
嵌入表面。我希望对象略大于text
,所以我需要知道text
的宽度,以便创建一个大小合适的对象。
我不确定如何查询text
的宽度(高度由输入变量设置),或者甚至是否可能。
如果不可能,是否有一个接受字符串和字体并预测渲染文本宽度的函数?
答案 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文件中提取指标(包括字距对),并且您可以使用脚本来添加有关更多字体的信息。