2016-09-04 2 views
0

Я использую следующий код JavaScript, чтобы показать модели в Autodesk Forge просмотра:ошибки Дескриптор Autodesk Forge просмотра

var options = { 
    'document': 'urn:' + urn, 
    'env': 'AutodeskProduction', 
    'getAccessToken': getToken, 
    'refreshToken': getToken 
}; 
Autodesk.Viewing.Initializer(options, function() { 
    Autodesk.Viewing.Document.load(options.document, 
     function (doc) { // onSuccessCallback 
      // load the viewer 
     }, 
     function (errorCode) { // onErrorCallback 
      interval = setInterval(function() { 
       $.ajax({ 
        url: 'https://developer.api.autodesk.com' + '/viewingservice/v1/' + urn, 
        type: 'GET', 
        headers: { Authorization: 'Bearer ' + getToken() }, 
        success: function (i) { 
         switch (i.status) { 
          case 'success': 
           // load the viewer 
           break; 
          case 'failed': 
          case 'timeout': 
           // report error 
           break; 
          case 'inprogress': 
           break; 
          default: 
           break; 
         } 
        }, 
        error: function (b, d, e) { 
         // report error 
        } 
       }); 
      }, 3000); // Repeatedly request the viewing service for each 3 seconds 
     } 
    ); 
}); 

onSuccessCallback: он будет показывать модель в средстве просмотра.

onErrorCallback: он будет продолжать публиковать службу просмотра, пока не получит статус «success». Если статус «сбой» или «тайм-аут», он будет сообщать пользователям, что они не могут просмотреть эту модель.

После того, как Autodesk.Viewing.Document.load (options.document), он перейдет на errorCode == 9 («В извлеченном документе ничего не видно»). Затем я продолжаю запрашивать сервис просмотра, чтобы получить результат от него. Вот список ERRORCODE:

var errorCodes = { 
    1: 'An unknown failure has occurred.', 
    2: 'Bad data (corrupted or malformed) was encountered.', 
    3: 'A network failure was encountered.', 
    4: 'Access was denied to a network resource (HTTP 403)', 
    5: 'A network resource could not be found (HTTP 404)', 
    6: 'A server error was returned when accessing a network resource (HTTP 5xx)', 
    7: 'An unhandled response code was returned when accessing a network resource (HTTP "everything else")', 
    8: 'Browser error: webGL is not supported by the current browser', 
    9: 'There is nothing viewable in the fetched document', 
    10: 'Browser error: webGL is supported, but not enabled', 
    11: 'There is no geomtry in loaded model', 
    12: 'Collaboration server error' 
}; 

Проблема иногда возвращается в состояние == «не удалось» (в Revit) или статус == «тайм-аут» (в Inventor) без получения более подробной информации. Это случается с некоторыми файлами Revit/Inventor, но не во всех случаях.

Как я могу попросить службу просмотра Forge повторно перевести эти файлы для отображения обратно в веб-браузер. Они всегда получают отказ от запросов к службе просмотра. Таким образом, эти файлы не имеют возможности отображаться в приложении Forge.

ответ

0

Во-первых, и очень важно, вы не должны вызывать перевод с клиента. Это означает, что ваш метод getToken возвращает токен с , чтобы написать, поэтому злоумышленник может использовать его для доступа и изменения ваших файлов. Ваш клиент должен видеть только токен для чтения. Рассмотрим использование маркера записи на сервере и токена чтения на клиенте (для ).

Во-вторых, вы должны быть с помощью v2 из API с JOB endpoint, где MANIFEST endpoint обеспечит вам полное описание перевода (либо в процессе или завершены/не удалось). Предыдущий v1-просмотр & API данных был разделен на Viewer (клиент) и Model Derivative API (сервер), что дает нам лучший контроль над переводом на стороне сервера, включая несколько новых возможностей.

+0

Я начинаю использовать v2 производной от autodesk-model. Мой код был использован v1 API представления и данных. Спасибо. –

+0

отлично, если это помогло, отметьте как ответили или дайте мне знать, если у вас есть другие вопросы. –

1

С API v2: для повторной передачи перевода, если первоначальный сбой, вам необходимо указать delete существующий манифест и повторно отправить svf job.

С API v1: вы можете повторно отправить запрос на регистрацию, используя флаг «x-ads-force» = true. См. Пример there.

+0

v1 API с «x-ads-force» = true не помогает мне исправить ошибку. Я перехожу к API v2. –

Смежные вопросы