如何修改属性面板中的某一条属性的属性名

上传模型转换后下载到本地,在本地上用view api浏览时,属性面板中的几条属性出现错误(属性名出错),请问如何修改这些出错的属性名?

clipboard.png

阅读 3.2k
1 个回答

修改属性面板有几种方法,

  1. 最简单的就是直接操作当前的属性面板,比如:
  var propertyPanel = _viewer.getPropertyPanel(true)
  propertyPanel.setTitle('My Panel')
  propertyPanel.addProperty('test', 'john', 'new cat', null)
  propertyPanel.setVisible(true)
  1. 如果需要对属性面板整体来做调整,那么常见的方法是重载默认的属性面板,比如:
AutodeskNamespace('Viewing.ClassroomTrainning')

Viewing.ClassroomTrainning.AdnPropertyPanel = function (viewer) {
  var _panel = this
  var _viewer = viewer
  var _selectedNodeId = ''

  Autodesk.Viewing.Extensions.ViewerPropertyPanel.call(
    _panel,
    _viewer)

  _panel.setNodeProperties = function (nodeId) {
    Autodesk.Viewing.Extensions.ViewerPropertyPanel.prototype.setNodeProperties.call(
      _panel,
      nodeId)

    _selectedNodeId = nodeId
  }

  _panel.setProperties = function (properties) {
    Autodesk.Viewing.Extensions.ViewerPropertyPanel.prototype.setProperties.call(
      _panel, properties);

      var insTree = _viewer.model.getInstanceTree();
      var nodeName = insTree.getNodeName(_selectedNodeId);

    $.ajax({
      url: '/db/price/'+nodeName,
      type: 'GET',
      success: function (data) {
        console.log('successfull get price: ' + data)
        _panel.addProperty(
          'Node Price', // property name
          data, // property value
          'Database Information') // group name
      }
    })
  }
}

Viewing.ClassroomTrainning.AdnPropertyPanel.prototype =
  Object.create(
    Autodesk.Viewing.Extensions.ViewerPropertyPanel.prototype)

Viewing.ClassroomTrainning.AdnPropertyPanel.prototype.constructor =
  Viewing.ClassroomTrainning.AdnPropertyPanel

然后,将重载后的属性面板设置为当前的属性面板,修改模型结构的点击事件来使用自定义的属性面板:

Viewing.ClassroomTrainning.Extension.prototype.onGeometryLoaded = function () {
  var panel = new Viewing.ClassroomTrainning.AdnPropertyPanel(_viewer)
  _viewer.setPropertyPanel(panel)

  // Add onClick event for Model Structure Panel
  var structruePanel = _viewer.modelstructure
  structruePanel.onClick = _self.onModelStructureClick
}

Viewing.ClassroomTrainning.Extension.prototype.onModelStructureClick = function (node, e) {
  var propertyPanel = _viewer.getPropertyPanel(true)
  if (propertyPanel && propertyPanel.isVisible()) {
    propertyPanel.setNodeProperties(node)
  }
}

详细可参考代码 https://github.com/JohnOnSoft...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进