Revit и Navisworks – Русский – только для чтения
В разделе вы можете обсудить любые вопросы, касающиеся Revit, Navisworks и других продуктов коллекции AEC, за исключением BIM 360. Делитесь знаниями, своими проектами и наработками. Станьте частью BIM-сообщества Autodesk.
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

создание Spaces из Rooms без ошибок

8 ОТВЕТ 8
РЕШЕНО
Ответить
Сообщение 1 из 9
ioavant
1655 просмотров, 8 ответов

создание Spaces из Rooms без ошибок

Добрый день!

Коллеги, прошу поделиться опытом, как быстро создать помещения(spaces) из архитектурных комнат (rooms) в подложке, чтобы помещения создавались из линкованных комнат, полностью их повторяли и чтобы все это можно было легко обновить

Использование штатного метода выявило множество недостатков

- дублирование имен

- некорректные номера

- неправильная высота итп

Потом все это приходится чистить в ручную, может кто-то уже решил эту проблему по умному?

Anton Devyatov
HVAC engineer
YouTube    Blog
ioavant@gmail.com
8 ОТВЕТ 8
Сообщение 2 из 9
lenavdoremire
в ответ: ioavant

Добрый! Чудес не бывает)

Труд инженера никто не отменял.

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

 

 

Имена можно отслеживать таким же образом, может еще использовать заливку 

Сообщение 3 из 9
ioavant
в ответ: lenavdoremire

Еще как бывают!  


@lenavdoremire  написал (-а):

Добрый! Чудес не бывает)

Труд инженера никто не отменял.

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


 

Так и делаю, постоянно изменения и опять мочало! Лень - двигатель прогресса, вот и ищу прогрессивный способ!


Anton Devyatov
HVAC engineer
YouTube    Blog
ioavant@gmail.com
Сообщение 4 из 9
alex.babinoff.cheat
в ответ: ioavant

Можно автоматизировать при помощи Dynamo.

Вот тут ребята уже сделали что-то подобное: creating-spaces-from-rooms

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

Сообщение 5 из 9
ioavant
в ответ: alex.babinoff.cheat

Большое спасибо!

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

Проблемы:

В подложках множество "пустых", комнат

В одной из подложек несколько Design Options

Решил придерживаться стратегии отфильтровывания очевидного мусора. Сначала только Placed, потом те у которых площадь больше 0. 

Все уперлось в Опции. По непонятным причинам, ходовой нод ElementGetParameterValueByName не работает корректно для Design Option с элементами из подложки( Хотя если вывести список всех параметров, то там пишет опцию.

Прошу цу как отфильтровать Design Option

Anton Devyatov
HVAC engineer
YouTube    Blog
ioavant@gmail.com
Сообщение 6 из 9
alex.babinoff.cheat
в ответ: ioavant

Почему-то не может получить параметр Варианта конструкции, причем именно для элементов помещений.

Но если получать через Python, то всё работает.

DesignOptions_from_element1.png

 

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

 

 

Create Spaces from Rooms+designOfilter.dyn

Сообщение 7 из 9
ioavant
в ответ: alex.babinoff.cheat

Еще раз спасибо! С вашей помощью задача движется к своему решению.

Путем экспериментов я пришел к выводу, что если в подложке сделано несколько Design Options, работать я могу только с той которая установлена как primary. У себя я только могу на виде переопределить видимость и увидеть другую опцию, но модель ревит воспринимает только ту которая установлена как primary(в подложке), что делает инструмент Options бесполезным в совместной работе (пусть гуру поправят, если я не прав), для разработки разных вариантов в команде, получается нужно использовать отдельные модели.

Итак, поскольку Dynamo вытаскивает все помещения изо всех опций, мне нужны только те которые в опции primary, поскольку я все равно не могу создать помещения по ним. Получается их нужно просто отфильтровать.

Можно ли применить какую-нибудь проверку на primary? и получить результат в виде boolean??

Anton Devyatov
HVAC engineer
YouTube    Blog
ioavant@gmail.com
Сообщение 8 из 9
alex.babinoff.cheat
в ответ: ioavant

Доброе утро. Можно решить тремя способами.

1) Получить про помощи стандартных нодов Dynamo, но для этого у всех помещений нужно запросить имя варианта, и сравнивать его с введённым заранее именем. Конечно неудобство в том, что если проектировщик поменяет другой вариант на Primary, имя в фильтре тоже придётся поменять самому.

2) Есть нода в пакете Clockwork - DesignOption.IsPrimary

IsPrimary_CW.png

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

DesignOptions_from_element2.png

Сообщение 9 из 9
ioavant
в ответ: alex.babinoff.cheat

Добрый день!

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

 Все заработало

В результате скрипт уже на данной стадии имеет несколько весомых преимуществ перед родным способом:

  • не нужно протыкивать все уровни
  • помещения генерятся строго поверх комнат подложки (никаких шахт итп)
  • корректный перенос имен и других параметров. (В родном же способе параметр для Space - Room Number и Room Name, я так понимаю builtin, в упор не видят комнаты в подложке, если они сделаны в активной опции)

 Прикладываю что получилось, может кому-то пригодится

 alex.babinoff.cheat, огромное спасибо!

 

Anton Devyatov
HVAC engineer
YouTube    Blog
ioavant@gmail.com

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report