координаты x, y, z объекта для файла nwc в средстве просмотра forge

#autodesk-forge #autodesk-viewer

Вопрос:

Я пытаюсь найти координаты x,y,z объекта внутри модели nwc и использую приведенный ниже код.

Несмотря на то, что этот код работал для файлов rvt, он не работает для модели nwc.

Есть ли способ получить координаты x,y,z из модели nwc?

 getFragmentWorldMatrixByNodeId(nodeId) {  let result = {  fragId: [],  matrix: [],  };  let viewer = this.viewer;  this.tree.enumNodeFragments(nodeId, function (frag) {   let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);  let matrix = new THREE.Matrix4();   fragProxy.getWorldMatrix(matrix);   result.fragId.push(frag);  result.matrix.push(matrix);  });  return result;  }  

Ответ №1:

Вы упомянули,что ищете «координаты x,y, z объекта». Что именно вы имеете в виду под этим? Я собираюсь предположить, что вам нужны координаты центральной точки ограничивающего прямоугольника объекта, так как обычно люди просят именно об этом. Однако в вашем фрагменте кода вы извлекаете всю матрицу преобразования, а не позицию.

Если центральная точка ограничительной рамки подходит вам, вы можете получить ее следующим образом:

 function getObjectBoundingBox(model, dbid) {  const tree = model.getInstanceTree();  const frags = model.getFragmentList();  let totalBounds = new THREE.Box3();  tree.enumNodeFragments(dbid, function (fragid) {  let fragBounds = new THREE.Box3();  frags.getWorldBounds(fragid, fragBounds);  totalBounds.union(fragBounds);  }, true);  return totalBounds; }  getObjectBoundingBox(viewer.model, 123).center();  

Комментарии:

1. Спасибо, Петр, работает на меня