markupCore 扩展的按钮未显示在对接面板中
Button for markupCore extension not showing in dockingpanel
我遵循了 Philippe Leefsma 关于如何实施标记工具的教程,但没有成功。 Link 这里:http://adndevblog.typepad.com/cloud_and_mobile/2016/02/playing-with-the-new-view-data-markup-api.html
这里: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()
})
}
非常感谢任何帮助!
不幸的是,自从我写博客 post 以来,API 发生了一些变化。 MarkupCore.js 现在包含在 viewer3D.js 源中,因此如果您使用最新版本的查看器 API.[=10,则无需引用任何额外文件或使用 requireJS =]
请记住,这是一项 API-only 功能,因此即使在加载标记扩展后,您也不会立即获得任何 UI。您必须自己实现它,例如创建一个带有按钮的对话框,最终可能通过调用 API 创建标记。
我博客 post 中的一些代码可能仍然有效,并让您了解需要做什么。
希望对您有所帮助。
我遵循了 Philippe Leefsma 关于如何实施标记工具的教程,但没有成功。 Link 这里:http://adndevblog.typepad.com/cloud_and_mobile/2016/02/playing-with-the-new-view-data-markup-api.html
这里: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()
})
}
非常感谢任何帮助!
不幸的是,自从我写博客 post 以来,API 发生了一些变化。 MarkupCore.js 现在包含在 viewer3D.js 源中,因此如果您使用最新版本的查看器 API.[=10,则无需引用任何额外文件或使用 requireJS =]
请记住,这是一项 API-only 功能,因此即使在加载标记扩展后,您也不会立即获得任何 UI。您必须自己实现它,例如创建一个带有按钮的对话框,最终可能通过调用 API 创建标记。
我博客 post 中的一些代码可能仍然有效,并让您了解需要做什么。
希望对您有所帮助。