【发布时间】:2021-12-27 18:06:06
【问题描述】:
早安,
我正在使用最新的 Autodesk forge 查看器,并且我正在尝试截取同时呈现我的标记的屏幕截图。现在我的代码截图没有任何标记。下面是我的查看器代码。我正在加载标记核心和标记 Gui 扩展。请注意 onDocumentLoadSuccess(viewerDocument) 中的“takeSnapshot(viewer)”函数。该函数在初始化函数之前定义。
function takeSnapshot(target){
$('#snipViewer').click( () => {
target.getScreenShot(1600, 920, (blobURL) => {
let snip = blobURL;
$('#sniplink').attr("href", snip);
$('#sniplink').html('Not Empty');
$('#sniplink').css({"background-image": `url(${blobURL})`});
});
});
}
//Autodesk Viewer Code
instance.data.showViewer = function showViewer(viewerAccessToken, viewerUrn){
localStorage.setItem("viewerAccessTokentoken", viewerAccessToken);
localStorage.setItem("viewerUrn", viewerUrn);
var viewer;
var options = {
env: 'AutodeskProduction',
api: 'derivativeV2',
getAccessToken: function(onTokenReady) {
var token = viewerAccessToken;
var timeInSeconds = 3600;
onTokenReady(token, timeInSeconds);
}
};
Autodesk.Viewing.Initializer(options, function() {
let htmlDiv = document.getElementById('forgeViewer');
viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
let startedCode = viewer.start();
viewer.setTheme("light-theme");
viewer.loadExtension("Autodesk.CustomDocumentBrowser").then(() => {
viewer.loadExtension("Autodesk.Viewing.MarkupsCore");
viewer.loadExtension("Autodesk.Viewing.MarkupsGui");
});
if (startedCode > 0) {
console.error('Failed to create a Viewer: WebGL not supported.');
$("#loadingStatus").html("Failed to create a Viewer: WebGL not supported.");
return;
}
console.log('Initialization complete, loading a model next...');
});
var documentId = `urn:` + viewerUrn;
var derivativeId = `urn:` + instance.derivativeUrn;
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
function onDocumentLoadSuccess(viewerDocument) {
var defaultModel = viewerDocument.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(viewerDocument, defaultModel);
takeSnapshot(viewer);
}
function onDocumentLoadFailure() {
console.error('Failed fetching Forge manifest');
$("#loadingStatus").html("Failed fetching Forge manifest.");
}
}
这篇文章我已经看过了:https://forge.autodesk.com/blog/screenshot-markups
我尝试过使用这种方法,但说明对我来说非常不清楚。 <div style="width:49vw; height:100vh;display:inline-block;"><canvas id="snapshot" style="position:absolute;"></canvas><button onclick="snaphot();" style="position:absolute;">Snapshot!</button></div>
这里的canvas元素是干什么用的?当我在初始化函数或屏幕截图函数中加载标记扩展时,我应该使用 renderToCanvas() 吗?有什么方法可以实现 renderToCanvas() 而不改变我已经在这里使用的太多东西吗?我不是查看器 API 方面的专家,所以如果你能帮助我,我将不胜感激,我是初学者,请不要跳过很多步骤。
非常感谢!
【问题讨论】:
标签: autodesk-forge autodesk-viewer autodesk