通过 dbId 放置自定义标记而不在查看器上显示标记

Posted

技术标签:

【中文标题】通过 dbId 放置自定义标记而不在查看器上显示标记【英文标题】:Placing custom markup by dbId not showing the markups on viewer 【发布时间】:2021-10-30 23:17:34 【问题描述】:

所以我想复制this 教程。我得到了与 IconMarkupExtension.js 完全相同的代码。但是我没有在查看器上看到标记,但是自定义扩展被添加到带有图标的工具栏。我想知道这是否与我正在使用的模型有关,但不确定。

我的查看者代码

if (viewer != null) 
    var thisviewer= viewer;
    if (thisviewer) 
      thisviewer.tearDown();
      thisviewer.finish();
      thisviewer= null;
      $("#forgeViewer").empty();
    
  
 
  var options = 
    env: 'AutodeskProduction',
    api: 'derivativeV2',
    getAccessToken: function(onTokenReady) 
      var token = accessToken;
      var timeInSeconds = 3600; 
      onTokenReady(token, timeInSeconds);
    
  ;

  var documentId = "urn:" + urn;

  Autodesk.Viewing.Initializer(options, function() 

    var htmlDiv = document.getElementById('forgeViewer');
    viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
    var startedCode = viewer.start();
    if (startedCode > 0) 
        console.error('Failed to create a Viewer: WebGL not supported.');
        return;
    
    Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
  );

扩展加载


  viewer.loadExtension('IconMarkupExtension', 
    button: 
        icon: 'fa-thermometer-half',
        tooltip: 'Show The Temperature'
    ,
    icons: [
       dbId: 69, label: '300°C', css: 'temperatureHigh fas fa-thermometer-full',
       dbId: 70, label: '300°C', css: 'temperatureHigh fas fa-thermometer-full',
       dbId: 71, label: '300°C', css: 'temperatureHigh fas fa-thermometer-full'
    ],
    onClick: (id) => 
      console.log(' ======================= IconMarkupExtension onClick id: ' + id);
        viewer.select(id);
        viewer.utilities.fitToView();
        switch (id)
            case 69:
                alert('Sensor offline');
        
    
)

这是我正在使用的the 模型。

我正在使用查看器版本 V7*

谢谢

编辑:

我设法获得了图标,但所有图标都居中显示。正如你在下面看到的

即使我选择了一个特定的对象也是一样的。

标签和值根据我添加的模型 ID 正确显示。

这和我的模型有关吗?

【问题讨论】:

控制台有消息吗?您还可以检查当前 dbIds 的可用性(viewer.isolate() 方法可以提供帮助) 嗨@JoãoMartins,控制台上没有消息。是的,我在隔离/选择之前打印了 dbid,以便 ID 可用。 你有没有为 fontawesome 添加脚本来加载 fa fa ?? 嗨@RonakShethia,是的,我已经包含了脚本,也尝试了本地和公共 css @JoãoMartins 对这种情况有什么想法吗?或者你可以推荐其他人检查吗?谢谢 【参考方案1】:

Here你可以找到一个实现这个扩展的示例。

请注意,要使其正常工作,您需要添加extension、styles、引用css 和js、add it to viewer,并确保指定的dbids 存在于您的模型中。 Here 是样本来源

【讨论】:

嗨@JoãoMartins,谢谢你,我设法让它工作了。问题是我没有为标签添加 css 。非常感谢干杯 嗨@JoãoMartins,我已经编辑了我原来的问题 别介意我的编辑@JoãoMartins,它与我正在使用的模型有关。你的答案非常好。非常感谢 很高兴它有帮助! :)

以上是关于通过 dbId 放置自定义标记而不在查看器上显示标记的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Autodesk Forge Viewer 中通过对象的 dbid 设置对象的自定义属性?

将自定义标记放在 markerclusterer

Forge Viewer - 标记 - 我们可以获得当前选择的 xy 坐标吗?

如何在不使用扩展的情况下在 Autodesk forge 查看器上显示图标

Forge 查看器上的 3D 标记

我可以在 Google 地图上放置自定义对象吗?