2017-01-23 4 views
0

Я следовал учебнику Филиппа Лифсмы о том, как реализовать инструмент разметки, но без везения. Ссылка здесь: http://adndevblog.typepad.com/cloud_and_mobile/2016/02/playing-with-the-new-view-data-markup-api.htmlКнопка расширения markupCore не отображается в стыковочной панели

и здесь: https://developer.api.autodesk.com/viewingservice/v1/viewers/docs/tutorial-feature_markup.html

я получаю ошибки, что мне нужно включить requireJS, но я не хочу, чтобы использовать его. Поэтому вместо этого я использовал этот скрипт в моем HTML файл:

<script src="https://autodeskviewer.com/viewers/2.2/extensions/MarkupsCore.js"> 

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

Это мой код для загрузки расширения в окне просмотра:

viewerApp = null; 

function initializeViewer(containerId, urn, params) { 
function getToken(url) { 

    return new Promise(function (resolve, reject) { 

     $.get(url, function (response) { 
      resolve(response.access_token); 
     }); 
    }); 
} 
var initOptions = { 
    documentId: 'urn:' + urn, 
    env: 'AutodeskProduction', 
    getAccessToken: function (onGetAccessToken) { 
     getToken(params.gettokenurl).then(function (val) { 
      var accessToken = val; 
      var expireTimeSeconds = 60 * 30; 
      onGetAccessToken(accessToken, expireTimeSeconds); 
     }); 
    } 
} 

function onDocumentLoaded(doc) { 
    var rootItem = doc.getRootItem(); 
    // Grab all 3D items 
    var geometryItems3d = 
     Autodesk.Viewing.Document.getSubItemsWithProperties(
     rootItem, { 'type': 'geometry', 'role': '3d' }, true); 
    // Grab all 2D items 
    var geometryItems2d = 
     Autodesk.Viewing.Document.getSubItemsWithProperties(
     rootItem, { 'type': 'geometry', 'role': '2d' }, true); 
    // Pick the first 3D item otherwise first 2D item 
    var selectedItem = (geometryItems3d.length ? 
      geometryItems3d[0] : 
      geometryItems2d[0]); 

    var domContainer = document.getElementById('viewerContainer'); 

    var config = { extensions: ["Autodesk.Viewing.MarkupsCore"] }; 

    // GUI Version: viewer with controls 
    var viewer = new Autodesk.Viewing.Private.GuiViewer3D(domContainer, config); 
    viewer.loadExtension("Autodesk.Viewing.MarkupsCore"); 

    viewer.initialize(); 

    viewer.loadModel(doc.getViewablePath(selectedItem)); 

    var extension = viewer.getExtension("Autodesk.Viewing.MarkupsCore"); 

    viewerApp = viewer; 


} 

function onEnvInitialized() { 
    Autodesk.Viewing.Document.load(
     initOptions.documentId, 
     function (doc) { 
      onDocumentLoaded(doc); 
     }, 
     function (errCode) { 
      onLoadError(errCode); 
     }) 
} 

function onLoadError(errCode) { 
    console.log('Error loading document: ' + errCode); 
} 

Autodesk.Viewing.Initializer(
    initOptions, 
    function() { 
     onEnvInitialized() 
    }) 
} 

Любая помощь высоко ценится!

ответ

0

К сожалению, было несколько изменений в API, так как я написал это сообщение в блоге. MarkupCore.js теперь включен в источник viewer3D.js, поэтому вам не нужно ссылаться на какой-либо дополнительный файл или использовать requireJS, если вы используете последнюю версию API-интерфейса для просмотра.

Имейте в виду, что это API-функция, поэтому даже после загрузки расширения разметки вы не получите никакого пользовательского интерфейса из коробки. Вы должны реализовать его самостоятельно, например создать диалог с кнопками, которые могут в конечном итоге создавать разметки, вызывая API.

Некоторые из кода из моего сообщения в блоге могут быть действительны и дать вам представление о том, что вам нужно сделать.

Надеюсь, что это поможет.

+0

Ах, это несчастливо. Я просто попробую реализовать эту логику. Большое спасибо за ваш ответ, Филипп! –

+0

Добро пожаловать, не стесняйтесь публиковать свои вопросы, если у вас возникнут проблемы при использовании API;) –