如何在查看器上设置浅色主题?

时间:2018-11-04 10:15:45

标签: autodesk-forge

我有此示例代码,用于初始化查看器:

<div id="viewer"></div>
<script>
  var app;
  var options = {
    env: 'AutodeskProduction',
    accessToken: 'mytoken'
  };
  var urn = 'myUrn';
  Autodesk.Viewing.Initializer(options, function() {
    app = new Autodesk.Viewing.ViewingApplication('viewer');
    app.registerViewer(app.k3D, Autodesk.Viewing.Private.GuiViewer3D);
    function onDocumentLoadSuccess() {
      const viewables = app.bubble.search({ 'type': 'geometry' });
      app.selectItem(viewables[0].data);
    }
    function onDocumentLoadFailure() {}
    app.loadDocument('urn:' + urn, onDocumentLoadSuccess, onDocumentLoadFailure);
  });
</script>

我想使用浅色主题,但是我不确定该怎么做。 请问如何为观看者设置浅色主题? 谢谢

2 个答案:

答案 0 :(得分:0)

您是否正在寻找以下API?初始化查看器后,只需调用此方法。

/**
* Sets the current UI theme of the viewer.
* Supported values are "light-theme" and "dark-theme", which is the default.
* 
* @param {string} name - Name of the theme, it will be added to the viewer's container class list.
* 
* @alias Autodesk.Viewing.Viewer3D#setTheme
*/
Viewer3D.prototype.setTheme = function (name) {
};

按如下所示修改您的代码,并按如下所示在onItemLoadSuccess()中添加一行代码。               viewerApp.myCurrentViewer.setTheme(“ light-theme”);

   <script>
    var viewerApp;
    var options = {
        env: 'AutodeskProduction',
        getAccessToken: function(onGetAccessToken) {
            //
            // TODO: Replace static access token string below with call to fetch new token from your backend
            // Both values are provided by Forge's Authentication (OAuth) API.
            //
            // Example Forge's Authentication (OAuth) API return value:
            // {
            //    "access_token": "<YOUR_APPLICATION_TOKEN>",
            //    "token_type": "Bearer",
            //    "expires_in": 86400
            // }
            //
            var accessToken = 'mytoken';
            var expireTimeSeconds = 60 * 30;
            onGetAccessToken(accessToken, expireTimeSeconds);
        }

    };
    let config3d = {
    }; 

    var documentId = 'urn:myurn';
    Autodesk.Viewing.Initializer(options, function onInitialized(){
        viewerApp = new Autodesk.Viewing.ViewingApplication('MyViewerDiv');
        viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D, config3d);

        viewerApp.loadDocument(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);

    });

    function onDocumentLoadSuccess(doc) {

        // We could still make use of Document.getSubItemsWithProperties()
        // However, when using a ViewingApplication, we have access to the **bubble** attribute,
        // which references the root node of a graph that wraps each object from the Manifest JSON.
        var viewables = viewerApp.bubble.search({'type':'geometry'});
        if (viewables.length === 0) {
            console.error('Document contains no viewables.');
            return;
        }

        // Choose any of the avialble viewables
        viewerApp.selectItem(viewables[0].data, onItemLoadSuccess, onItemLoadFail);
    }

    function onDocumentLoadFailure(viewerErrorCode) {
        console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode);
    }

    function onItemLoadSuccess(viewer, item) {
        console.log('onItemLoadSuccess()!');
        viewerApp.myCurrentViewer.setTheme("light-theme");
    }

    function onItemLoadFail(errorCode) {
        console.error('onItemLoadFail() - errorCode:' + errorCode);
    }

</script>

答案 1 :(得分:0)

您可以在初始化器内部添加

with T as(
  select [DEBTORID]
  , [DEBTOR]
  , case 
    when [CONTRACTTYPE]='KAM' then 'Contract' 
    when [CONTRACTTYPE]='SME' then 'Contract' 
    when [CONTRACTTYPE]='CCS' then 'Contract' 
    else 'Deemed' 
    end as 'Contract'
  FROM [FinancialReporting].[dbo].[LiveGasMeters]
  group by [DEBTORID],[DEBTOR],[CONTRACTTYPE]
  )
  select T.[DEBTORID]
  , T.DEBTOR
  , T.[Contract]
  from T
  group by [DEBTORID],DEBTOR,[Contract]