Определение координат XYZ у скопированных элементов связанного файла

Главная Форумы Задать вопрос Определение координат XYZ у скопированных элементов связанного файла

  • В этой теме 7 ответов, 3 участника, последнее обновление 6 лет назад сделано Семен.
Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Сообщения
  • #7659 Score: 0
    anchim678
    Участник

    Здравствуйте. Столкнулись с такой проблемой: есть файл модели, в него мы загружаем связанный файл, полностью совпадающие элементы модели и связанного файла необходимо скрывать, так как скрытие отдельных элементов связанного файла сделать не получается, то мы копируем элементы связанного файла в модель и выгружаем связанный файл, тогда получается скрыть совпадающие элементы. Но при копировании возникает такая проблема, что некоторым элементам, например стенам присваиваются другие параметры уровня и смещения, хотя визуально в модели они расположены в одном месте,высотные отметки совпадают (на рисунке 1 это продемонстрировано, стены раздвинуты относительно друг друга для наглядности, при копировании они действительно накладываются друг на друга и должны скрываться). Самое непонятное происходит в Динамо, нод  Element.GetLocation выдает полностью идентичные координаты, кроме координаты Z, ее он рассчитывает с учетом смещения по уровню (рисунок 2), следовательно скрипт не уже не может идентифицировать стены, как одинаковые. Непонятно зачем он учитывает смещение относительно уровня, когда величина Z должна совпадать с высотной отметкой относительно начала координат. Как это исправить, чтобы Динамо понял, что это одни и те же объекты?


    Рисунок 1

    Рисунок1-1

    Рисунок 2

    #7661 Score: 0
    Legantmar
    Хранитель
    473 pts

    сравни разницу координат X1 и X2, и Y1 и Y2, если она близка к нулю (или меньше какой то погрешности), то выполнить то-то..
    (если Z не на что не влияет, так и не учитывай)

    #7662 Score: 0
    anchim678
    Участник

    в том то и дело, что Z влияет: у нас должно быть максимум два идентичных объекта, если не учесть Z, то совпадут все стены находящиеся в одной плоскости, т.е. мы не учтем уровень этажа.

    #7663 Score: 0
    Legantmar
    Хранитель
    473 pts

    тогда учитывай и разницу Z
    если на скриншоте выше два совпадающих объекта, то условие должно быть if |Z1-Z2| < 400

    #7664 Score: 0
    anchim678
    Участник

    Ну думал об этом, но это будет подгон под частный случай, потому что смещения бывают разного порядка, кроме того выяснилось, что координата может отличаться не только по Z, все больше думаю о том, как отойти от способа сравнения по координатам, сейчас имеем то что он скрывает, 2/3 объектов, чтобы скрыл остальные нужно уровни и смещения подправить руками, что явно неприемлемо.

    #7665 Score: 0
    Legantmar
    Хранитель
    473 pts

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

    #7666 Score: 0
    anchim678
    Участник

    эти стены фактически располагаются в одном месте на 3D виде, следовательно мне надо их скрыть, но динамо видит, что их координаты не совпадают по Z(в данном случае), следовательно говорит – “это разные стены, не буду их скрывать” .  Вопрос в том, как именно нод Element.GetLocation рассчитывает координаты. А проверять на пересечение можно конечно, но опять же что?имеется два больших списка, каждую стену с каждой проверять?виснуть будет и скорее всего стыки углов также посчитает за пересечение.

    #7668 Score: 0
    Семен
    Участник
    5 pts

    Я не шарю, но, вероятно, можно находить центр масс через геометрию объекта или его боундингБокс. Это должно дать абсолютные координаты.

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Для ответа в этой теме необходимо авторизоваться.