在Forge Viewer中加载3D模型时,我们将增加默认的标记笔触和文本大小,如下所示:
proto.onEditModeChange = function() {
if (this.is2d) {
this.setStyles(0.0040, 0.02);
} else {
var currentStyles = this.core.getStyle();
this.setStyles(currentStyles['stroke-width'] * 3, currentStyles['font-size'] * 3);
}
};
proto.setStyles = function (strokeWidth, fontSize) {
var styleObject = this.core.getStyle();
styleObject['stroke-width'] = strokeWidth;
styleObject['font-size'] = fontSize;
this.core.setStyle(styleObject);
};
因此,我们获得了笔触宽度和字体大小的默认样式,并将该大小乘以3,因为我们认为这是更好的默认大小。对于2D文件,我们已经硬编码了一个适合我们的尺寸。
我们现在遇到的3D文件问题是,当添加包含descender的标记文本时,下降子将被切断。这是我写“ pgqjy”的示例:
使用较小的字体大小不会发生此问题。如何防止文字被剪掉?
我们使用Forge Viewer 6。*
更新1
感谢Bryan建议我在创建标记后编辑其大小。不幸的是,它不能解决问题-文本仍被截断。似乎增加文本框的高度只会在文本上方添加更多的空格。这就是我增加身高的方法:
proto.onHistoryChanged = function(e) {
if (e.data.action === "execute" && e.data.targetId > 0) {
var markup = this.core.getMarkup(e.data.targetId);
if (markup && markup.type === "label" && markup.currentTextLines && markup.currentTextLines.length > 0) {
markup.setSize(markup.position, markup.size.x, markup.currentTextLines.length * markup.lineHeight);
}
}
};
答案 0 :(得分:0)
尝试增加文本框的大小-您可以订阅MARKUPCORE.EVENT_HISTORY_CHANGED
事件以在更改文本框并设置其大小后捕获该文本框:
编辑:为什么不将所有转换都移到事件回调中,这样我们就不必搭载似乎有点棘手的插件
markupExt.addEventListener( Autodesk.Extensions.Markup.Core.EVENT_HISTORY_CHANGED, e=>{
const textMarkup = markupExt.getMarkup(e.data.targetId);
//check 'textMarkup.type' and 'label' is for textbox
const currentStyles = textMarkup.getStyle();
// be sure to wrap this in a control flow to check and only set size right after the textbox is first created to prevent interference with changes made by user
textMarkup.setSize(textMarkup.position, textMarkup.size.x*3, textMarkup.size.y*3)
currentStyles['stroke-width'] *= 3, currentStyles['font-size'] *= 3;
textMarkup.setStyle(currentStyles);
});