Close
Свяжитесь с нами
Будем рады ответить на ваш вопрос
WhatsApp
Mail
Phone
Мы используем файлы cookie, чтобы обеспечить лучший сайт.
Хорошо, продолжить показ
Описание процессов работы по автоматизации рутинных операций в Autodesk Revit

Автоматическая расстановка объектов в Autodesk Revit

REEGIGROUP

Давид Мельников
Инженер РиджиГрупп
В этой статье я вам расскажу:

- как экспортировать значения координат объектов из AutoCAD
- как обработать полученные данные для дальнейшего использования
- как на основе полученных данных автоматически расставить соответствующие семейства в Revit с помощью Dynamo.
Экспорт свойств элементов из AutoCAD в .xls
Думаю, что для лучшего понимания, сначала, я должен описать, вставшую передо мной проблему. У меня на руках был генплан в формате dwg, с расстановкой деревьев, освещения и т.д. В сумме более 10 000 единиц. Очевидно, что их ручная расстановка в Revit заняла бы у меня непозволительно большое количество времени. Не стоит говорить, что в случае внесения правок, мне бы приходилось каждый раз начинать всё сначала. Поэтому мною было принято решение автоматизировать этот процесс.

Закончив с лирическим отступлением, перейдем к делу.

Сначала нам нужно вытащить значения координат каждого объекта из dwg файла. Для этого в AutoCAD воспользуемся функцией «Извлечение данных» на вкладке «Сервис».
ВАЖНО: Вкладка Сервис находится на строке меню. В последних версиях AutoCAD эта строка по умолчанию скрыта, её можно включить таким образом:
При нажатии «Извлечение данных» у вас открывается диалоговое меню из 7 этапов.
Этапность выполнения действий
1
В первом ничего менять не стоит, а при нажатии «Далее» выбирается место сохранения файла формата dxe. Он нам в дальнейшем не понадобится.
2
На втором этапе тоже ничего не меняем, опять жмем «Далее»
3
На третьем этапе мы выбираем элементы, данные о которых мы собираемся экспортировать. Я советую выбирать элементы только одного типа, чтобы необходимые значения в дальнейшем нормально отображались. В данном случае я выбрал только блоки
4
На четвертом этапе мы выбираем те свойства, которые нам нужно экспортировать. Для выбранных мною блоков это координаты.
Важно понимать, что для различных типов элементов названия свойств могут различаться.
5
В этом окне, мы оформляем вид будущей таблицы. Для того чтобы в последствии в Revit были поставлены все экземпляры одного типа, я убираю галочку с пункта «Объединить идентичные строки».
Соответственно, столбец «Показать данные о количестве» нам так же не нужен. Оставляем только галочку «показать столбец наименований» и жмем далее.
6
В 6-ом окне выбираем способ «Вывод данных во внешний файл» и указываем путь.
7
Дальше жмем Готово.
Подготовка файла xls. к работе
ПРАКТИКА
В полученной таблице в первом столбце хранятся названия элементов, в данном случае блоков. В остальных столбцах хранятся значения координат.

Сначала нам нужно поменять десятичную точку на запятую и избавиться от апострофов, оставшихся после экспорта. Наверняка это можно сделать, экспортировав данный лист в txt.
Файл в блокнот. Там с помощью Правка -> Заменить исправить точки на запятые, после чего «закинуть» обратно в Excel на отдельный лист.
Важно понимать, что названия элементов в таблице должны 1 в 1 соответствовать названиям типов семейств, расставляемых в Revit.
Автоматическая расстановка семейства в Revit с помощью Dynamo
ПРАКТИКА
Для того, чтобы автоматически расставить по полученным координатам семейства нам придется воспользоваться Dynamo. Для тех, кто с ним не знаком, советую ознакомиться с моей предыдущей статьей

Получившийся в итоге скрипт выглядит так:
В зеленой группе «Файл и №лист эксель» указываются путь к файлу и имя листа с данными. Ноды в группе «Обраб. данных» преобразовывают данные из таблицы в массив. С помощью Нодов в группе «Координаты» мы задаем положение семейств в проекте. Тип семейства выбирается с помощью Нода FamilyType.ByName.

Для непосредственно расстановки семейств в Revit используется Нод FamilyInstance.ByPointAndLevel. Выбран был именно он, потому что, если использовать просто Нод FamilyInstance.ByPoint, то у появившихся семейств будет заблокирован параметр Уровень, и будет невозможно выровнять их по рабочей плоскости.

В нашем же случае, семейства «падают» на выбранный нами уровень со смещением 0.000 (т.к. dwg чертёж в одной плоскости). После чего мы можем выровнять их всех разом по топоповерхности с помощью инструмента «Выбрать новую основу».

Бонус
ПРАКТИКА
В связи с тем, что у одинаковых типов семейств в Revit (в частности деревьев) одинаковое отображение графики, массив абсолютно одинаковых деревьев сильно портит впечатление от получившейся картины. Чтобы немного улучшить ситуацию нам понадобится написать еще один небольшой скрипт. Его суть заключается в том, что он задаст в выбранной категории элементов для каждого экземпляра семейства случайный угол поворота от 0 до 360 градусов.
Для задания значения поворота для каждого элемента отдельно мне понадобится пользовательский пакет Нодов «Clockwork For Dynamo» v.0.75.24, а в частности Нод Math.RandomIntegerList. С помощью этого скрипта получится создать иллюзию разнообразия деревьев.
Я уверен, что даже если вы никогда не столкнётесь с решением именно такой задачи, эта статья всё равно будет вам полезна. Надеюсь, вам удалось подчеркнуть для себя информацию, которую вы сможете применить в своей повседневной работе.
Задайте ваш вопрос
Мы будем рады ответить на все ваши вопросы.
Готовы к новым идеям и предложениям
Курсы по Revit MEP