标记核心 enterEditMode() 返回 false

Markups Core enterEditMode() returning false

function newMarkupGUI(viewer, options) {

  Autodesk.Viewing.Extension.call(this, viewer, options);
  thisViewerId = options.id;
  this.viewer.loadExtension("Autodesk.Viewing.MarkupsCore").then(() => {
    let extension = this.viewer.getExtension("Autodesk.Viewing.MarkupsCore");
    extension.enterEditMode();
    console.log(extension.enterEditMode());
  });
  
}

当我在初始化查看器的主 js 文件中时,我可以访问 enterEditMode() 等函数,如下所示:

var extension = viewer.getExtension("Autodesk.Viewing.MarkupsCore");

extension.enterEditMode();

这行得通。但是在我名为 newMarkupsGUI 的扩展中,getExtension() 似乎不起作用。我对这一切如何运作感到困惑,因为文档非常稀少。我宁愿将我的扩展 分开 而不是在我初始化查看器的地方对标记的功能进行硬编码。任何帮助将不胜感激,谢谢。

我认为您的问题与 viewer 参考有关。如果您将 viewer 作为函数参数,则无需使用 this.viewer

使用 viewer.loadExtension().then() 时,加载的扩展会在承诺中返回。 你可以这样做:

  viewer.loadExtension("Autodesk.Viewing.MarkupsCore").then((markupExtension) => 
  {
    markupExtension.enterEditMode();
  });