Определение координат XYZ у скопированных элементов связанного файла
Главная › Форумы › Задать вопрос › Определение координат XYZ у скопированных элементов связанного файла
- В этой теме 7 ответов, 3 участника, последнее обновление 6 лет, 8 месяцев назад сделано Семен.
-
АвторСообщения
-
anchim678Участник
Здравствуйте. Столкнулись с такой проблемой: есть файл модели, в него мы загружаем связанный файл, полностью совпадающие элементы модели и связанного файла необходимо скрывать, так как скрытие отдельных элементов связанного файла сделать не получается, то мы копируем элементы связанного файла в модель и выгружаем связанный файл, тогда получается скрыть совпадающие элементы. Но при копировании возникает такая проблема, что некоторым элементам, например стенам присваиваются другие параметры уровня и смещения, хотя визуально в модели они расположены в одном месте,высотные отметки совпадают (на рисунке 1 это продемонстрировано, стены раздвинуты относительно друг друга для наглядности, при копировании они действительно накладываются друг на друга и должны скрываться). Самое непонятное происходит в Динамо, нод Element.GetLocation выдает полностью идентичные координаты, кроме координаты Z, ее он рассчитывает с учетом смещения по уровню (рисунок 2), следовательно скрипт не уже не может идентифицировать стены, как одинаковые. Непонятно зачем он учитывает смещение относительно уровня, когда величина Z должна совпадать с высотной отметкой относительно начала координат. Как это исправить, чтобы Динамо понял, что это одни и те же объекты?
Рисунок 1
Рисунок1-1
Рисунок 2сравни разницу координат X1 и X2, и Y1 и Y2, если она близка к нулю (или меньше какой то погрешности), то выполнить то-то..
(если Z не на что не влияет, так и не учитывай)anchim678Участникв том то и дело, что Z влияет: у нас должно быть максимум два идентичных объекта, если не учесть Z, то совпадут все стены находящиеся в одной плоскости, т.е. мы не учтем уровень этажа.
тогда учитывай и разницу Z
если на скриншоте выше два совпадающих объекта, то условие должно быть if |Z1-Z2| < 400anchim678УчастникНу думал об этом, но это будет подгон под частный случай, потому что смещения бывают разного порядка, кроме того выяснилось, что координата может отличаться не только по Z, все больше думаю о том, как отойти от способа сравнения по координатам, сейчас имеем то что он скрывает, 2/3 объектов, чтобы скрыл остальные нужно уровни и смещения подправить руками, что явно неприемлемо.
проверяй на пересечение
если они не пересекаются и располагаются в разных местах, тогда вообще не понимаю логики для чего их скрывать.
если выше ты написал, что скрывать нужно совпадающие или перекрывающие друг другаanchim678Участникэти стены фактически располагаются в одном месте на 3D виде, следовательно мне надо их скрыть, но динамо видит, что их координаты не совпадают по Z(в данном случае), следовательно говорит – “это разные стены, не буду их скрывать” . Вопрос в том, как именно нод Element.GetLocation рассчитывает координаты. А проверять на пересечение можно конечно, но опять же что?имеется два больших списка, каждую стену с каждой проверять?виснуть будет и скорее всего стыки углов также посчитает за пересечение.
Я не шарю, но, вероятно, можно находить центр масс через геометрию объекта или его боундингБокс. Это должно дать абсолютные координаты.
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.