Как установить светлую тему на зрителя? - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть этот пример кода, чтобы инициализировать зрителя:

<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>

Я хочу использовать светлую тему, но я не уверен, как это сделать. Как установить световую тему для зрителя, пожалуйста? Спасибо

1 Ответ

0 голосов
/ 05 ноября 2018

Вы ищете следующий 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 ( "светло-тема");

   <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>
...