Добрый день!
Коллеги, прошу поделиться опытом, как быстро создать помещения(spaces) из архитектурных комнат (rooms) в подложке, чтобы помещения создавались из линкованных комнат, полностью их повторяли и чтобы все это можно было легко обновить
Использование штатного метода выявило множество недостатков
- дублирование имен
- некорректные номера
- неправильная высота итп
Потом все это приходится чистить в ручную, может кто-то уже решил эту проблему по умному?
Решено! Перейти к решению.
Решено: alex.babinoff.cheat. Перейти к решению.
Решено: alex.babinoff.cheat. Перейти к решению.
Добрый! Чудес не бывает)
Труд инженера никто не отменял.
Можно с помощью таблиц ускорить процесс, например разместив все простанства и создать таблицу комнат и пространств, просортировать по высоте и назначить группам высоту соответствующую, высоте комнат. Но не все рахитекторы делают нам необходимую высоту, они по отделке, а мы по воздуху....
Имена можно отслеживать таким же образом, может еще использовать заливку
Еще как бывают!
@lenavdoremire написал (-а):Добрый! Чудес не бывает)
Труд инженера никто не отменял.
Можно с помощью таблиц ускорить процесс, например разместив все простанства и создать таблицу комнат и пространств, просортировать по высоте и назначить группам высоту соответствующую, высоте комнат.
Так и делаю, постоянно изменения и опять мочало! Лень - двигатель прогресса, вот и ищу прогрессивный способ!
Можно автоматизировать при помощи Dynamo.
Вот тут ребята уже сделали что-то подобное: creating-spaces-from-rooms
У них там всё довольно просто. Также по высоте пространства тоже можно заранее прописать внутри скрипта, или сделать более сложный модуль, который будет брать высоту, к примеру из стен в помещении, но тут уже будет много нюансов.
Большое спасибо!
По ссылке подходящий материал, я опробовал его на тестовом простеньком объекте - сработало идеально, но там и стандартный метод все делал корректно. Начал тестировать на реальном объекте... и как обычно все разъехалось((( А моя задача сделать решение которое бы побеждало подложку даже самого изощренного смежника
Проблемы:
В подложках множество "пустых", комнат
В одной из подложек несколько Design Options
Решил придерживаться стратегии отфильтровывания очевидного мусора. Сначала только Placed, потом те у которых площадь больше 0.
Все уперлось в Опции. По непонятным причинам, ходовой нод ElementGetParameterValueByName не работает корректно для Design Option с элементами из подложки( Хотя если вывести список всех параметров, то там пишет опцию.
Прошу цу как отфильтровать Design Option
Почему-то не может получить параметр Варианта конструкции, причем именно для элементов помещений.
Но если получать через Python, то всё работает.
Python Script нода:
import clr clr.AddReference('RevitAPI') from Autodesk.Revit.DB import Element rooms = UnwrapElement(IN[0]) design_o_list = [] for room in rooms: design_o_list.append(room.DesignOption) OUT = design_o_list
Еще раз спасибо! С вашей помощью задача движется к своему решению.
Путем экспериментов я пришел к выводу, что если в подложке сделано несколько Design Options, работать я могу только с той которая установлена как primary. У себя я только могу на виде переопределить видимость и увидеть другую опцию, но модель ревит воспринимает только ту которая установлена как primary(в подложке), что делает инструмент Options бесполезным в совместной работе (пусть гуру поправят, если я не прав), для разработки разных вариантов в команде, получается нужно использовать отдельные модели.
Итак, поскольку Dynamo вытаскивает все помещения изо всех опций, мне нужны только те которые в опции primary, поскольку я все равно не могу создать помещения по ним. Получается их нужно просто отфильтровать.
Можно ли применить какую-нибудь проверку на primary? и получить результат в виде boolean??
Доброе утро. Можно решить тремя способами.
1) Получить про помощи стандартных нодов Dynamo, но для этого у всех помещений нужно запросить имя варианта, и сравнивать его с введённым заранее именем. Конечно неудобство в том, что если проектировщик поменяет другой вариант на Primary, имя в фильтре тоже придётся поменять самому.
2) Есть нода в пакете Clockwork - DesignOption.IsPrimary
3) Просто добавить в наш Python код несколько строчек:
import clr clr.AddReference('RevitAPI') from Autodesk.Revit.DB import Element rooms = UnwrapElement(IN[0]) design_o_list = [] for room in rooms: if room.DesignOption and room.DesignOption.IsPrimary: design_o_list.append(room.DesignOption) else: pass OUT = design_o_list
Добрый день!
1й способ у меня не работает, стандартный нод почему-то не обрабатывает комнаты из подложки, думаю что это связано с тем что нод ElementGetParameterValueByName выдает не значение параметра, а элемент Design Option из которого в свою очередь тоже можно извлечь параметры.
Поскольку моя задача получить все возможные комнаты из подложки, то так же нужно взять элементы из Main Model, т.е выкинуть элементы из неактивной опции, я скорректировал код нода DesignOption.Primary
import clr import System clr.AddReference('RevitAPI') from Autodesk.Revit.DB import * designoptions = UnwrapElement(IN[0]) elementlist = list() for room in designoptions: if room.DesignOption == None: elementlist.append(True) else: try: elementlist.append(room.DesignOption.IsPrimary) except: elementlist.append(False) OUT = elementlist
Все заработало
В результате скрипт уже на данной стадии имеет несколько весомых преимуществ перед родным способом:
Прикладываю что получилось, может кому-то пригодится
alex.babinoff.cheat, огромное спасибо!
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.