text-mtext
本文回答:单行文字
TextEnt、多行文字MTextEnt,都通过insertionPoint / text / height / styleName设定,并配合TextStyle+MainView({ fonts })使用字体;TextEnt 的对齐是textAlignment(数字 1~9),MText 的附着点是textAttachment。
一、最小用法
// 单行
const t = new TextEnt();
t.insertionPoint = [0, 130];
t.text = '楷体文字';
t.height = 8;
t.styleName = 'simkai'; // 见 setup/fonts
t.setDefaults();
t.color = 3;
// 多行
const mt = new MTextEnt();
mt.insertionPoint = [0, 100];
mt.text = '多行文字\n第二行';
mt.height = 10;
mt.styleName = '楷体样式';
mt.setDefaults();
Engine.addEntities([t, mt]);
MCP 参考:vjcad/example/entity/text/04fonts.js、vjcad/doc/entity/text-ent.md、vjcad/doc/entity/mtext-ent.md。
二、TextEnt 关键属性
| 属性 | 说明 |
|---|---|
insertionPoint |
插入点 [x, y] |
text |
文字内容 |
height |
文字高度(绘图单位,不是像素) |
rotation |
旋转(弧度) |
styleName |
文字样式名(与 TextStyle.name / MainView 构造配置 fonts[].name 一致) |
textAlignment |
对齐方式(按示例 1~9 数字) |
color / layer / lineType 等 |
EntityBase 通用属性 |
MCP 参考:vjcad/example/entity/all/01entities.js、vjcad/doc/guide/quick-start.md、vjcad/doc/entity/text-ent.md。
三、MTextEnt 关键属性
| 属性 | 说明 |
|---|---|
insertionPoint |
插入点 |
text |
文字(支持 \n 换行) |
maxWidth |
段宽上限(自动换行;⚠️ 字段名是 maxWidth,不是 width;相关:refWidth/wordWrapColmn) |
height |
行高 |
styleName |
样式名 |
textAttachment |
附着点(MTextAttachmentEnum,按小键盘布局:7=左上(默认)、8=中上、9=右上、4/5/6=左中/中心/右中、1=左下、2=中下、3=右下;与 TextEnt.textAlignment 同一布局,不同于 DXF 的 1=TopLeft。左上锚点写 7,写成 1 会以插入点为左下角向上生长) |
MCP 参考:vjcad/doc/guide/quick-start.md、vjcad/example/entity/all/01entities.js、vjcad/doc/entity/mtext-ent.md。
四、TextStyle(自定义宽度因子 / 倾斜)
const style = new TextStyle();
style.name = '楷体样式';
style.fontFileName = 'simkai'; // 必须是 fonts 配置里的 name
style.widthFactor = 1.0;
style.obliqueAngle = 0;
Engine.currentDoc.textStyles.add(style);
const t = new TextEnt();
t.styleName = '楷体样式';
MainView 构造配置的 fonts(运行时存于 fontsConfig)会自动创建同名 TextStyle,所以"直接用字体名作 styleName"通常已经够用。需要 widthFactor / obliqueAngle 时再手动 new TextStyle()。详见 setup/fonts。
MCP 参考:vjcad/example/entity/text/04fonts.js。
五、遍历 / 修改样式
// 列出所有文字样式
Engine.currentDoc.textStyles.items.forEach(s => {
console.log(s.name, s.fontFileName, s.widthFactor, s.obliqueAngle);
});
MCP 参考:vjcad/example/entity/text/04fonts.js。
反例
- 设
styleName但fonts没配 /TextStyle没添加:渲染时回退到默认字体。 - 把
text.height当像素:实际是绘图单位,会随缩放放大。 - 多行文字用单行
TextEnt:\n不会换行,应使用MTextEnt。
参考(官方文档 MCP)
- 文档:
vjcad/doc/entity/text-ent.md、vjcad/doc/entity/mtext-ent.md、vjcad/doc/entity/text-entities.md、vjcad/doc/guide/quick-start.md - 示例:
vjcad/example/entity/text/01singleline.js、02multiline.js、03style.js、04fonts.js、vjcad/example/entity/all/01entities.js