Autodesk Forge Viewer标记大文本被截断

时间:2019-09-26 11:35:52

标签: autodesk-forge

在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”的示例:

Example markup

使用较小的字体大小不会发生此问题。如何防止文字被剪掉?

我们使用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);
        }
    }
};

1 个答案:

答案 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);
});

enter image description here

enter image description here