如何解决Autodesk forge 查看器加载自定义属性
我正在查看器中加载模型,添加自定义按钮,获取所有元素及其属性。我希望能够更改其中一些属性,然后查看模型上的更改。即使它不会更新翻译的文件(仅在查看器中)
这就是我加载模型的方式
function displayViewer() {
const options = {
env: 'AutodeskProduction',api: 'derivativeV2',accesstoken: accesstoken
}
const documentId = 'urn:' + urn
let viewerApp: any
window.Autodesk.Viewing.Initializer(options,onInitialized)
function onInitialized() {
const htmlDiv = document.getElementById('forgeViewer')
viewerApp = new window.Autodesk.Viewing.GuiViewer3D(htmlDiv,{
extensions: ['MyAwesomeExtension','CustomPropertyPanelExtension']
})
const startedCode = viewerApp.start()
}
window.Autodesk.Viewing.Document.load(documentId,onDocumentLoadSuccess)
function onDocumentLoadSuccess(viewerDocument: any) {
const viewerapp = viewerDocument.getRoot()
const md_ViewerDocument = viewerDocument // Hold the viewerDocument in a global variable so that we can access it within SelectViewable()
const md_viewables = viewerapp.search({ type: 'geometry' })
const sel = document.getElementById('viewables')
for (let i = 0; i < md_viewables.length; i++) {
const opt = document.createElement('option')
opt.innerHTML = md_viewables[i].data.name
opt.value = md_viewables[i].data.name
sel && sel.appendChild(opt)
}
viewerApp.loadDocumentNode(viewerDocument,md_viewables[0])
if (md_viewables.length > 1) {
const viewablesDIV = document.getElementById('viewables_dropdown')
}
}
}
这就是我添加按钮的方式
class MyAwesomeExtension extends window.Autodesk.Viewing.Extension {
constructor(viewer: any,options: any) {
super(viewer,options)
this._group = null
this._button = null
}
load() {
return true
}
unload() {
// Clean our UI elements if we added any
if (this._group) {
this._group.removeControl(this._button)
if (this._group.getNumberOfControls() === 0) {
this.viewer.toolbar.removeControl(this._group)
}
}
return true
}
onToolbarCreated() {
// Create a new toolbar group if it doesn't exist
this._group = this.viewer.toolbar.getControl('allMyAwesomeExtensionsToolbar')
if (!this._group) {
this._group = new window.Autodesk.Viewing.UI.ControlGroup('allMyAwesomeExtensionsToolbar')
this.viewer.toolbar.addControl(this._group)
}
// Add a new button to the toolbar group
this._button = new window.Autodesk.Viewing.UI.Button('myAwesomeExtensionButton')
this._button.onClick = (ev: any) => {
const instanceTree = this.viewer.model.getData().instanceTree
const allDbIdsstr = Object.keys(instanceTree.nodeAccess.dbIdToIndex)
const test = allDbIdsstr.map(function (id) {
return parseInt(id)
})
this.viewer.model.getBulkProperties(test,null,function (elements: any) {
addData(elements)
})
setaValidate(!validate)
}
this._button.setToolTip('Validate')
this._group.addControl(this._button)
}
}
window.Autodesk.Viewing.theExtensionManager.registerExtension('MyAwesomeExtension',MyAwesomeExtension)
}
},[deskLoaded,accesstoken,extension,urn])
addData 函数获取所有元素和属性。我希望能够推送更新的数据库
解决方法
看看这个链接,你应该找到一种添加属性的方法: Adding Custom Properties Property Panel
我没有对其进行测试,所以我不知道您是否可以修改现有属性,并且它不会跨会话保持不变,因为它只会更改查看器中的值而不是数据库中的值。
,在 v7.37(我认为)之后对 setProperties 函数进行了更新,而是使用了 setAggregatedProperties,它用于添加自定义属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。