2016-07-19 2 views
0

Я смущен, поскольку примеры использования средства просмотра не соответствуют документации API, некоторые функции не находятся в документах или их подпись различна ,Confused with Viewer API vs example, передавая параметры расширениям

Основы кода примеров, как передать параметры расширениям, которые я создаю? Я хотел бы передать мне расширение.

Спасибо!

+0

Вы используете образцы и документацию http://developer.autodesk.com? –

+0

Да, я использую его :) –

+0

Какой у вас образец проблемы? (если что-то противоречиво, я могу просмотреть его). –

ответ

2

Нам необходимо исправить документ, чтобы он больше не полагался на недокументированный дополнительный код просмотра A360, который должен быть внутренним. Извините за incovenience, мы будем делать это как можно скорее ...

На данный момент, вы можете использовать код из моего viewer boilerplate sample:

function initializeViewer(containerId, urn) { 

    Autodesk.Viewing.Document.load(urn, function (model) { 

     var rootItem = model.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); 

     var domContainer = document.getElementById(containerId); 

     //UI-less Version: viewer without any Autodesk buttons and commands 
     //viewer = new Autodesk.Viewing.Viewer3D(domContainer); 

     //GUI Version: viewer with controls 
     viewer = new Autodesk.Viewing.Private.GuiViewer3D(domContainer); 

     viewer.initialize(); 

     viewer.setLightPreset(8); 

     //Button events - two buttons to load/unload a sample extension 
     // Irrelevant to viewer code itself 
     var loadBtn = document.getElementById('loadBtn'); 

     loadBtn.addEventListener("click", function(){ 

     loadExtension(viewer); 
     }); 

     var unloadBtn = document.getElementById('unloadBtn'); 

     unloadBtn.addEventListener("click", function(){ 

     unloadExtension(viewer); 
     }); 

     // Illustrates how to listen to events 
     // Geometry loaded is fired once the model is fully loaded 
     // It is safe to perform operation involving model structure at this point 
     viewer.addEventListener(
     Autodesk.Viewing.GEOMETRY_LOADED_EVENT, 
     onGeometryLoaded); 

     //optional 
     var options = { 
     globalOffset: { 
      x: 0, y: 0, z: 0 
     } 
     } 

     // Pick the first 3D item ortherwise first 2D item 
     var viewablePath = (geometryItems3d.length ? 
     geometryItems3d[0] : 
     geometryItems2d[0]); 

     viewer.loadModel(
     model.getViewablePath(viewablePath), 
     options); 

    }, function(err) { 

     logError(err); 
    }); 
    } 

После того, как зритель инициализируется, вы можете загрузить самостоятельно каждое расширение и передать функцию обратного вызова следующим образом:

var options = { 
    onCustomEventFiredByMyExtension: function() { 
     console.log('LMV rulez!') 
    } 
} 

viewer.loadExtension('MyExtensionId', options) 

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

viewer.loadExtension('MyExtensionId') 

var myExtension = viewer.getExtension('MyExtensionId') 

myExtension.on('CustomEvent', function() { 
    console.log('LMV still rulez!') 
}) 

См. micro-events для супер простой библиотеки событий.