Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT仅在Forge查看器中的第一次初始化时发出

时间:2019-05-14 15:29:09

标签: javascript autodesk-forge

export const initForgeViewer = (urn: string, renderingHTMLElemet: HTMLElement): Promise<any> => {
  const forgeOptions = getForgeOptions(urn)
  return new Promise((resolve, reject) => {
    Autodesk.Viewing.Initializer(forgeOptions, () => {
      const viewerConfig = {
        extensions: ["ToolbarExtension"],
        sharedPropertyDbPath: undefined,
        canvasConfig: undefined, // TODO: Needs documentation or something.
        startOnInitialize: true,
        experimental: []
      }
      const viewer = new Autodesk.Viewing.Private.GuiViewer3D(renderingHTMLElemet, viewerConfig)
      const avd = Autodesk.Viewing.Document
      viewer.setTheme('light-theme')
      viewer.start()
      avd.load(forgeOptions.urn, (doc: any) => { // Autodesk.Viewing.Document
        const viewables = avd.getSubItemsWithProperties(doc.getRootItem(), { type: 'geometry', role: '3d' }, true)
        if (viewables.length === 0) {
          reject(viewer)
          return
        } else {
          const initialViewable = viewables[0]
          const svfUrl = doc.getViewablePath(initialViewable)
          const modelOptions = { sharedPropertyDbPath: doc.getPropertyDbPath() }
          viewer.loadModel(svfUrl, modelOptions, (model: any) => { // Autodesk.Viewing.Model
            this.loadedModel = model
            resolve(viewer) 
          })
        }
      })
    })
  })
}

我正在使用以上代码初始化Forge查看器。但是我意识到Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT仅在我第一次初始化Forge查看器时发出。如果我以以下方式清洁查看器并再次初始化。将触发OBJECT_TREE_CREATED_EVENT

this.viewer.finish()   

this.viewer.removeEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,this.onObjectTreeReady)

this.viewer = null

1 个答案:

答案 0 :(得分:0)

所以我可以假设您正在完全销毁查看器并重新创建它,包括所有事件,对吗?请使用以下内容:

viewer.tearDown()
viewer.finish()
viewer = null

使用v6

进行了测试