API Autodesk Forge Viewer не работает в React Native - PullRequest
0 голосов
/ 12 января 2020

Несколько дней спустя go я пытался создать API-интерфейс Autodesk Forge Viewer с реагированием на натив, следуя этому примеру: https://forge.autodesk.com/blog/forge-react-native-au-talk

Это работает хорошо. Он использовал Viewer v2.17, я до Viewer v7, но, к сожалению, он ничего не показывает. Я обнаружил ошибку: не могу прочитать свойство 'texture' из null, когда я использую строку viewer.start ();

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Глядя на ваш код, мне кажется, что вы неправильно используете параметры просмотра при инициализации. Способ определения токена доступа - обратный вызов согласно образцу, опубликованному Брайаном. Используя код ниже, программа просмотра загружается в хорошем состоянии.

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <link rel="stylesheet" href="https://developer.api.autodesk.com/derivativeservice/v2/viewers/style.min.css?v=v7.*" type="text/css">
  <script src="https://developer.api.autodesk.com/derivativeservice/v2/viewers/three.min.js?v=v2.17"></script>
  <script src="https://developer.api.autodesk.com/derivativeservice/v2/viewers/viewer3D.js?v=v7.*"></script>
</head>

<body style="margin:0">
  <div id="viewer"></div>
</body>
<script>
  var viewer = null;
  function initializeViewer(urn, token) {
    var options = {
      env: "AutodeskProduction",
      getAccessToken: function(onTokenReady) {
        var token = 'access token provided by 2 legged api';
        var timeInSeconds = 3600; // Use value provided by Forge Authentication (OAuth) API
        onTokenReady(token, timeInSeconds);
      }
    }
    Autodesk.Viewing.Initializer(options, () => {
      try {
        viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('viewer'));
        viewer.start();
        console.log('viewer loaded');
      } catch (err) {
        alert(err)
      }
    });

    function onDocumentLoadSuccess(doc) {
      var viewables = doc.getRoot().getDefaultGeometry();
      viewer.loadDocumentNode(doc, viewables).then(i => {
        // documented loaded, any action?
      });
    }

    function onDocumentLoadFailure(viewerErrorCode) {
      console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode);
    }
  }
</script>
0 голосов
/ 15 января 2020

Это мой HTML, я изменил его для просмотра v7, но получаю ошибку, как указано выше. Спасибо за вашу помощь

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <link rel="stylesheet" href="https://developer.api.autodesk.com/derivativeservice/v2/viewers/style.min.css?v=v7.*" type="text/css">
  <script src="https://developer.api.autodesk.com/derivativeservice/v2/viewers/three.min.js?v=v2.17"></script>
  <script src="https://developer.api.autodesk.com/derivativeservice/v2/viewers/viewer3D.js?v=v7.*"></script>
</head>

<body style="margin:0">
  <div id="viewer"></div>
</body>
<script>
  var viewer = null;

  function initializeViewer(urn, token) {
    var options = {
      env: "AutodeskProduction",
      accessToken: token
    }
    Autodesk.Viewing.Initializer(options, () => {
      try {
        viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('viewer'));
        viewer.start();
      } catch (err) {
        alert(err)
      }
      var documentId = urn;
      Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
    });

    function onDocumentLoadSuccess(doc) {
      var viewables = doc.getRoot().getDefaultGeometry();
      viewer.loadDocumentNode(doc, viewables).then(i => {
        // documented loaded, any action?
      });
    }

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