2 回答

TA貢獻1876條經驗 獲得超7個贊
可以通過 viewer.getState() 獲取 Philippe MarkUp3D 的 Markup 信息,把這個信息記錄到數據庫里;之后重載模型后執行 viewer.restoreState( viewstate ) 就可以回復了,原因是因為載入 MarkUp3D 擴展后,你的 viewState 會多了一個叫 Markup3D 的屬性,在回復時 MarkUp3D 擴展會去讀取這個屬性將 Markup 回復到畫面上,我的測試代碼如下:
var viewstate = viewer.getState();
viewer.restoreState( viewstate );
數據結構:
希望對您有幫助

TA貢獻1848條經驗 獲得超6個贊
存:var info = viewer.getState();
var str = JSON.stringify(info);
document.inputForm.elements["markup"].value = str;
沒有問題。
為什么恢復的時候 無效果:
function onDocumentLoadSuccess(doc) {
// A document contains references to 3D and 2D viewables.
viewables = Autodesk.Viewing.Document.getSubItemsWithProperties(doc.getRootItem(), {'type':'geometry'}, true);
if (viewables.length === 0){
console.error('Document contains no viewables.');
return;
}
// Choose any of the avialble viewables
var initialViewable = viewables[0];
var svfUrl = doc.getViewablePath(initialViewable);
var modelOptions = {
sharedPropertyDbPath: doc.getPropertyDbPath()
};
var viewerDiv = document.getElementById('MyViewerDiv');
viewer = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv,{
extensions: ['Autodesk.ADN.Viewing.Extension.BasicES2015','Viewing.Extension.Markup3D']
});
/**
,'Autodesk.Viewing.MarkupsGui' //2D標記
,'Autodesk.ADN.Viewing.Extension.PropertyListPanel' //屬性菜單
,'Autodesk.ADN.Viewing.Extension.Material'
,'Viewing.Extension.Markup3D' //3D標記
,'Autodesk.Billboard',
,'Autodesk.MyBillboardGui'
*/
var errorCode = viewer.start();
// Check for initialization errors.
if (errorCode) {
console.error('viewer.start() error - errorCode:' + errorCode);
return;
}
// Choose any of the available viewables.
indexViewable = 0;
lmvDoc = doc;
var markup = ${markup};
alert(markup);
if (markup!=null && markup != ""){
viewer.restoreState(markup);
// Everything is set up, load the model.
loadModel();
}
添加回答
舉報