Вращение bounding box

Главная Форумы Dynamo Ноды Вращение bounding box

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Сообщения
  • #2948 Score: 0
    tuuletin
    Участник
    3 pts

    Привет, друзья,
    правда ли я понимаю, что это невозможно? Интересует возможность повернуть bounding box сначала в плоскости yz, а потом в плоскости xy.
    В целом задача такая: хочу создать схему системы вентиляции (изометрия, наподобие того, что получается простым 3d видом).
    С вращением разреза (то есть вектора, по которому потом этот разрез будет создан) проблем нет. Но подрезка вида разреза создаётся по boundingbox, поэтому хотелось бы закрутить его. В противном случае, приходится бросать bounding box как, например, min(-5000, 0, 0), max(5000, 5000, 5000), с последующей ручной настройкой границы подрезки и смещения дальнего предела секущего диапазона.
    Просто 3d вид не интересует, т. к. он малопригоден для последующего оформления чертежа.

    #2949 Score: 0
    Khasan Mamaev
    Модератор
    186 pts
    #2950 Score: 0
    tuuletin
    Участник
    3 pts

    Сейчас, почитаю, спасибо! Помню, уже находил эту статью, когда ковырялся в нодах динамо, но не стал знакомиться с ней, т. к. на тот момент ещё не представлял себе, что такое ревит апи и питон.
    Вроде бы как стандартный нод BoundingBox.ByGeometryCoodinateSystem

    может вращать, но, так же находил, что этот нод некорректно работает(-ла?), и что в dynamo 0.9 этот нод пофиксили. Но повернуть так и не получилось (если этим нодом вообще поворот подразумевается).

    #2951 Score: 0
    Khasan Mamaev
    Модератор
    186 pts

    А это чья коробка? Ревита или Динамо?

    #2952 Score: 0
    tuuletin
    Участник
    3 pts

    А я не знаю :с Пусть будет две коробки — и для ревита и для динамо…

    #2953 Score: 0
    Khasan Mamaev
    Модератор
    186 pts

    это по ходу динамовская, а тебе нужна ревитовская

    #2963 Score: 0
    kulkul
    Участник
    47 pts

    Hi tuuletin,

    Below is another method how you can rotate bounding box. The key was to basically project all vertices of the geometry on a horizontal plane and find the convex hull of those points. Good Luck!

     

    #3085 Score: 0
    tuuletin
    Участник
    3 pts

    Привет, kulkul,
    неа, не работает в конце схема… Пишет, что точки некоторые совпадают.

    А что в итоге должно получиться? Solid, и что с ним делать потом..?

    Как писал в оп-посте, сначала я поворачиваю разрез в плане, потом поворачиваю его *в разрезе*, т. е. он получается немного “склоняющимся”, “наваливающимся” на плоскость xy.
    Для создания разреза необходимо указать boundingbox. Но этот boundingbox должен быть указан относительно системы координат разреза! Т. е. для разреза это MinPoint(Х_левый нижний угол разреза, Y_левый нижний угол разреза, 0), MaxPoint(Х_верхний правый угол разреза, Y_верхний правый угол разреза, смещение дальнего предела секущего диапазона).
    “Глобальный” boundingbox не подойдёт, полученные координаты MaxPoint и MinPoint всё равно придётся как-то преобразовывать в систему координат разреза (которая уже и так довольно сильно закручена). Но это не единственный недостаток boundinbox, который я выявил в процессе решения задачи (в итоге отказался от рассмотрения boundingboxв принципе).
    Boundingbox это в принципе неизменяемый элемент, который является параллелепипедом, характеризуемый только MinPoint (нижняя левая ближайшая точка) и MaxPoint (верхняя правая наиболее удалённая точка), плоскости всегда параллельный xy, yz, xz.

    Требовалось: запускаю скрипт, по параметру имени системы выбирается система вентиляции в проекте. Создаётся разрез (изометрия системы воздуховодов), при этом граница подрезки автоматически подгоняется по системе, равно как и смещение дальнего предела секущего диапазона.

    В итоге задачу решил так:
    1. Создать заведомо больше потенциальной геометрии проекта cuboid (например, MinPoint(-100000, -100000, -100000), MaxPoint(100000, 100000, 100000).
    2. Закрутить cuboid как нужно (сначала примерно -30° в плоскости yz, потом 45° в плоскости xy).
    3. Взорвать cuboid, в итоге получается 6 surface.
    4. Питон-скриптом двигаю каждый surface, после каждого сдвига проверяю, есть ли пересечение с элементами системы вентиляции.
    4.1. Если пересечение есть, предыдущее положение surface принимается как окончательное.
    5. Находятся некоторые требуемые пересечения surface. Получаются линии, в свою очередь пересекаются линии, получаются точки.
    6. Из этих точек получены нормальные “относительные” координаты, которые можно сразу передать в создание разреза. Так же одна из этих точек является базовой, куда будет перемещена повёрнутая система координат разреза, и откуда будет этот разрез создаваться.
    7. …
    8. На выходе получился закрученный разрез с подогнанной подрезкой по требуемым элементам, при этом так же подогнано смещение дальнего предела секущего диапазона.

    #3086 Score: 0
    Khasan Mamaev
    Модератор
    186 pts

    Тулетин, а слабо видео записать? Можно без озвучки

    #3087 Score: 0
    tuuletin
    Участник
    3 pts

    Ну можно, если интересно… Только я никогда не писал скринкасты эти…

    #3088 Score: 0
    Khasan Mamaev
    Модератор
    186 pts

    ну дык и мы не писали раньше, это же не повод не начинать) я, и многие мои знакомые используем программу Camtasia. Наверняка есть другие и лучше, но эта пока удовлетворяет

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