var viewer;
var options = {
env: 'AutodeskProduction',
api: 'derivativeV2', // for models uploaded to EMEA change this option to 'derivativeV2_EU'
getAccessToken: function(onTokenReady) {
var token = 'eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5In0.eyJjbGllbnRfaWQiOiJUN0dBbWViNGgzVU04bE1wUm10MTJHT2M1dXYzRkI4aCIsImV4cCI6MTU3ODQ2Mzc4Nywic2NvcGUiOlsidmlld2FibGVzOnJlYWQiXSwiYXVkIjoiaHR0cHM6Lyp9hdXRvZGVzay5jb20vYXVkL2p3dGV4cDYwIiwianRpIjoiRE1jWTVDVUVqNmo5QkdjM0F2N1VFN1NKdWZvZ0dQV1pIbUlrdUJPTEIzczJ4Ym1YakpnVVZyZzZVZnZhZDA3UyJ9.j3T1cThwAs9p8LNasuR7S8WXlGqR1lU6kX-RY8XW5QU';
var timeInSeconds = 36000; // Use value provided by Forge Authentication (OAuth) API
onTokenReady(token, timeInSeconds);
}
};
Autodesk.Viewing.Initializer(options, function() {
var htmlDiv = document.getElementById('forgeViewer');
viewer = new Autodesk.Viewing.Private.GuiViewer3D(htmlDiv);
//viewer = new Autodesk.Viewing.Private.GuiViewer3D(htmlDiv);
var startedCode = viewer.start();
if (startedCode > 0) {
console.error('Failed to create a Viewer: WebGL not supported.');
return;
}
console.log('Initialization complete, loading a model next...');
});
var documentId = 'urn:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dDdnYW1ljYjRoM3VtOGxtcHJtdDEyZ29jNXV2M2ZiOGhfdHV0b3JpYWxfYnVja2V0L1QwMDZfMTktQVJDLVpaLVlZWS1NMy1XRC0wMDUxLnJ2dA';
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
function onDocumentLoadSuccess(viewerDocument) {
var defaultModel = viewerDocument.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(viewerDocument, defaultModel);
}
function onDocumentLoadFailure() {
console.error('Failed fetching Forge manifest');
}
$(document ).ready(function() {
$viewer = jQuery('#forgeViewer');
// After a mouse click on 3D viewport, populate X/Y/Z of the intersection
$viewer.on('click', function(ev) {
if(viewer.getSelection()){
mainviewer = new Autodesk.Viewing.GuiViewer3D( document.getElementById('forgeViewer') );
// Other codes ...
const selSet = mainviewer.getSelection();
const targetElem = selSet[0];
const model = mainviewer.model;
const instanceTree = model.getData().instanceTree;
const fragList = model.getFragmentList();
let bounds = new THREE.Box3();
instanceTree.enumNodeFragments( dbId, ( fragId ) => {
let box = new THREE.Box3();
fragList.getWorldBounds( fragId, box );
bounds.union( box );
}, true );
const position = bounds.center();
}
})
});
<head>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=no" />
<meta charset="utf-8">
<script src="js/jquery-2.2.4.js"></script>
<link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css" type="text/css">
<script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>
<style>
body {
margin: 0;
}
#forgeViewer {
width: 100%;
height: 100%;
margin: 0;
background-color: #F0F8FF;
}
</style>
</head>
<body>
<div id="forgeViewer"></div>
<div>
</body>
Я попытался const bounds = document.getElementById ('forgeViewer'). GetBoundingClientRect (); для получения границ, но он возвращает мне х = 0 и у = 0 для любого выбранного компонента в программе просмотра. Я использую только chrome, не знаю, почему он здесь не работает .... любой другой способ получения кордикатов На самом деле я намереваюсь показать всплывающее окно для выбранного компонента, чтобы добавить некоторые пользовательские данные.