Вот как работает плагин автодеска:
Юзер тыкает в элемент модели и плагин получает
PickItemResult. У этого результат есть свойство Point, которое:
The picked point on the surface of the picked model item (in world space).
В мировой системе координат!
Дальше плагин делает вот так:
Если это nwd (а именно на таком случае я тестирую), то просто отправляет эту точку.
Значит, логично предположить, что из BIM360 я получаю эту точку в мировой системе координат и мне нужно трансформировать её в систему координат модели. В том-же плагине есть такие методы:
Я попробовал их оба (на всякий случай):
Transform3D modelToWorldTransform = GetModelToWorldTransform(model);
var worldToModelTransform = GetWorldToModelTransform(model);
Debug.Print($"Issue origin location: {data.Location[0]}, {data.Location[1]}, {data.Location[2]}");
var d = TransformPoint(data.Location, modelToWorldTransform);
Debug.Print($"Issue transformed model to world location: {d[0]}, {d[1]}, {d[2]}");
d = TransformPoint(data.Location, worldToModelTransform);
Debug.Print($"Issue transformed world to model location: {d[0]}, {d[1]}, {d[2]}");
и получил такой результат:
Issue origin location: 201,793944775753, -27,6070030396659, 9,06755644286818
Issue transformed model to world location: 201,793944775753, -27,6070030396659, 9,06755644286818
Issue transformed world to model location: 201,793944775753, -27,6070030396659, 9,06755644286818
А вот как выглядят свойства модели:
т.е. там нет никакого трансформа
Так что это за координаты и как их трансформировать? Где и как я тут могу использовать GlobalOffset?