唯杰地图 logo唯杰地图
VJMAP
EN

text-mtext

vjcad/references/entity/text-mtext.md 3.7 KB94 行
原文

本文回答:单行文字 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