如何使clearThemingColors()在Viewer 6.4.0及更高版本上运行?

问题描述 投票:0回答:1

我有一个代码,通过应用主题(如博客中所述)并恢复原始颜色,将Forge Viewer上2D绘图中的所有线条切换为黑色。但6.4.0版本的Viewer在恢复时破坏了一些东西,现在所有的线都保持白色。所有版本高达6.3.5都有效。是否需要使用新代码进行更改才能使其正常工作?

这就是我今天所做的,在完美无缺之前有效,但现在不行:

  color2D.onClick = function (e) {

    if (blackWiteToggle) {
      window._viewerSecondary.impl.toggleSwapBlackAndWhite(false);
      paint2DToBlackAndWhite(_viewerSecondary);
      blackWiteToggle = false;
    } else {
      window._viewerSecondary.impl.toggleSwapBlackAndWhite(true);
      window._viewerSecondary.clearThemingColors();
      window._viewerSecondary.restoreState(stateDefalult);
      blackWiteToggle = true;
    }
  };

function paint2DToBlackAndWhite(viewerToPaint) {
  var frags = viewerToPaint.model.getFragmentList().fragments.fragId2dbId;
  frags.forEach(function(frag){
    frag.forEach(function(dbId){
      if (dbId < 0) return;
      viewerToPaint.setThemingColor(dbId, new THREE.Vector4(0, 0, 0, 1), viewerToPaint.model)
    });
  });
}

之前发生的事情:绘图最初有颜色。当用户按下按钮时,所有行都会应用黑色主题(和白色背景,但与问题无关)。当用户再次按下时,主题颜色被清除,并且2D绘图再次变色。

在6.4.0之后会发生什么:线条正确地获得黑色主题。当用户再次按下时,所有线条都变为白色,此时它们应该恢复原始颜色。

autodesk-forge autodesk-viewer
1个回答
0
投票

我们的工程师正在调查此问题,并将尽快解决即将发布的问题。

与此同时,对于任何遇到同样问题的人来说,这是我们的OP Tiago提出的一个背负式解决方案:

Autodesk.Viewing.Viewer3D.prototype.clearThemingColors = function 
(model) { 
// use default RenderModel by default 
model = model || this.model;

model.getFragmentList().fragments.dbId2fragId.length = 
Object.keys(model.getFragmentList().fragments.dbId2fragId).length;

model.clearThemingColors();

// we changed the scene to apply theming => trigger re-render 
this.impl.invalidate(true); 
};
© www.soinside.com 2019 - 2024. All rights reserved.