Тема: Автоматическая ведомость отделки помещений

Автоматическую эскпликацию помещений в АДТ настроить достаточно просто.
А кто-нибудь сталкивался с настройкой автоматической ведомости отделки помещений? Достаточно простой на уровне рабочки дляобычного жилого дома.
Недавно загорелся идеей сделать себе такую штуку, но столкнулся с рядом проблем.
Предположив, что для  этого лучше использовать все же спейсы, сломал голову, как из площади стен помещения вычесть оконные и дверные проемы. В 9 версии в Менеджере зон/помещений (спейсов/зон) натолкнулся на такую фишку (в 8 ее почему-то нет) - при генерировании в границах стен автоматического спейса при заходе через его Свойства в менеджер зон/помещений выдает параметры плоскостей данного спейса - потолка и стен с указанием их площадей, а также площадей встроенных в них дверей и окон(!). Думал как это можно использовать - до сих пор ломаю голову.
Если кто-то сталкивался с созданием автоматической ведеомости отделки или знает, как эти новые данные со спейсов в 9 АДТ можно использовать - просьба, если не сложно, поделиться опытом. Самая главная проблема - как учесть наличие в стенах проемов, а остальное решается достаточно просто.
Заранее спасибо.

Re: Автоматическая ведомость отделки помещений

Александр В пишет:

как из площади стен помещения вычесть оконные и дверные проемы.

Это решено, искать в свойствах стены! Беда в том что стена м.б. одна общая на несколько помещений!

Re: Автоматическая ведомость отделки помещений

Александр В пишет:

В 9 версии в Менеджере зон/помещений (спейсов/зон) натолкнулся на такую фишку (в 8 ее почему-то нет)

Неправда, есть!

Re: Автоматическая ведомость отделки помещений

Александр В пишет:

Думал как это можно использовать — до сих пор ломаю голову.

Можно, если добраться через лисп или VBA до этих самых плоскостей.

Re: Автоматическая ведомость отделки помещений

> Александр В
Попробуй с этой просьбой обратиться к господам программистам, к Александру Ривилису, например!
Я просто уверен, что ему это по зубам!

Re: Автоматическая ведомость отделки помещений

Ок, вычли из стены окна и двери. но как полученный результат передать спейсу? или иному объекту, чтобы затем передать его в таблицу?
Да, нашел, в 8 тоже есть эти параметры плоскостей.
Видимо, да, остается только программить...

Re: Автоматическая ведомость отделки помещений

Александр В пишет:

но как полученный результат передать спейсу?

Никуда, ничего передавать и ненадо!
Т.к. работать надо только со спейсами!!!
Неужели не заметно, что спейсы именно для этого и заточены? Это как бы отпечаток помещения в объёме, за вычетом всех проёмов и выступов и модификаторов разного рода. Просто нужен доступ к плоскостям.

Re: Автоматическая ведомость отделки помещений

Да все со спейсами понятно. smile
Просто функция вычитания из стен проемов окон и дверей для решения данной проблемы врядли применима. Если только для облегчения подсчетов вручную.

Re: Автоматическая ведомость отделки помещений

Александр В пишет:

Просто функция вычитания из стен проемов окон и дверей для решения данной проблемы врядли применима

не понял!!!
Space автоматом генерит всё необходимое, осталось только вытащить!

Re: Автоматическая ведомость отделки помещений

да я не про спейс, а про функцию у стен interference condition smile
про спейсы это очевидно. они и только они.
пошел на форумы AUGI, погляжу что там еще есть.

Re: Автоматическая ведомость отделки помещений

> Александр В
Сходи, нам потом расскажешь!

Re: Автоматическая ведомость отделки помещений

Там, по-моему, пусто. Сейчас сам сижу с такой же задачей, но универсальности не получается хоть тресни :(
Если интересно, могу рассказать (примерно) общую идею реализации. На лиспе (поскольку в ObjectARX ни бум-бум).

Re: Автоматическая ведомость отделки помещений

> Александр В
PS Кстати, Space в ADT единственный нерукотворный 3D объект произвольной формы, к-рый однозначно определён, благодаря этому на нём можно строить какие-то расчёты! Который ещё к тому же умеет автоматически обновляться при изменении образующих его объектов!

Re: Автоматическая ведомость отделки помещений

> Кулик Алексей aka kpblc
Алексей, конечно интересно!
Давай лиспом доберёмся до этих граней Space? остальное дело техники.

Re: Автоматическая ведомость отделки помещений

Это да, но программное представление АЕС-объектов - это жуть.

Re: Автоматическая ведомость отделки помещений

> Vitaly
Для начала общая идея:
1. Получить все Space текущего файла (независимо от того, в какой внешней ссылке они находятся).
2. Получаем сразу же все стены, все проемы этих стен.
3. Получить координаты вершин каждого Space
4. Определить ближайшие стены к каждой вершине
5. Определить проемы, принадлежащие стене (см.п.4) "внутри" помещения (то есть у которых хотя бы одна из сторон попадает между вершинами Space).
6. Просуммировать площади проемов, вычисленных в п.5. Получаем все площади всех проемов. Вычитаем их из WallArea для Space и получаем значение "Х"
7. Через ObjectDBX открываем файл-владелец Space и в обрабатываемый Space записываем в PropertySet вычисленное значение (если надо будет формировать несколько спецификаций разной степени детализации, то это самый логичный путь).
Теперь проблемы:
1. Можно получить все стены или помещения, но с проемами не все так просто - надо попутно определять "хозяина", к которому они приякорены.
2. До координат вершин Space просто так не добраться, приходится выполнять перенос хранящихся в программном представлении координат в центр Space и выполнять дополнительный поворот.
3. С п.4 самый большой проблем. В стенах необязательно хранится их ширина, особенно если стена многокомпонентная, и ширины компонентов заданы в стиле. Приходится лезьть в стили стен. Сюда же - если один (или несколько) компонентов имеют переменную ширину, зависящую от общей ширины стены, то их надо как-то высчитывать уже для конкретного объекта стены. Этот момент лично мне решить не удалось вообще.
4. С определением проемов тоже грустно - необходимо выполнять множество преобразований, чтобы определить "попадаемость" проемов внутрь стены. Необходимо также не забыть про многоярусные стены и многоярусные же проемы. А также про проемы с непрямоугольной формой или пользовательскими профилями, которые попадают внутрь Space частично.
5. Для проемов, опять же. Это у меня все просто - всегда измерение выполняется по наружной стороне. А если по внутренней? Откуда брать данные о реальном размере проема?
Сейчас я застрял (в логике) именно на определении "попадаемости" проема внутрь помещения. Сижу уже вторую неделю.
6. Открывание через ObjectDBX файла рассматривалось не раз, но тут тоже далеко не все гладко: я не проверял, но сильно подозреваю, что указатель будет изменен. Как их согласовывать - пока не представляю.
---
P.S. Вариант с ручным назначением якоря для проема к помещению не рассматриваю из-за того, что сделать якорь от двух помещений к одной двери нереально.

Re: Автоматическая ведомость отделки помещений

> Кулик Алексей aka kpblc
Ок, смотрю...

Re: Автоматическая ведомость отделки помещений

Только что специально проверил - указатели, полученные при обработке в текущем файле, отличаются от указателей, полученных через ObjectDBX. Возможно, удастся использовать vla-get-handle и handent, но я бы на это особо не рассчитывал. Скорее всего, придется использовать порядок следования в списке, а это не очень устойчивое решение (как мне кажется).

Re: Автоматическая ведомость отделки помещений

> Кулик Алексей aka kpblc
У меня есть пример на VBScript доступа к объекту DUCT в MEP, может на его основе, по подобию и к space удастся подобраться?

Re: Автоматическая ведомость отделки помещений

Так у меня проблема не столько с доступом к объектам, сколько с логикой подбора (хотя код, конечно, глянуть интересно. Хотя с VBS отношения не очень, разобраться попробую). Сейчас плюнул на универсальность, рисую код только для собственных условий (масса ограничений типа никаких многоярусных конструкций; проемы только прямоугольные; объекты Space на всю высоту помещения; не учитывается Space Boundary; проем если "попал" в помещение, то учитывается целиком ну и тому подобное).

Re: Автоматическая ведомость отделки помещений

Кулик Алексей aka kpblc

Я немножко не понимаю зачем нам координаты вершин спейсов, принадлежность проемов к стенам и т.п? Если цель - сделать автоматическую ведомость отделки, то нам достаточно лишь получить доступ к данным со спейсов, назначенных нами как помещения. Там уже есть все - и площади стен помещения и площади проемов в СТЕНАХ ЭТОГО ПОМЕЩЕНИЯ. Как таковые координаты проемов нам не интересны, поскольку нам нужна лишь площадь. Мне кажется, нужно просто вытащить эти параметры спейсов и путем их вычитания добавить спейсу новый параметр - что-то вроде "площадь стен за вычетом проемов". Или создать проперти сет для спейсов, который считывал бы эти данные - тогда занести их в автоматическую таблицу вообще будет просто.
Я конечно не силен в программировании, но решение проблемы мне видится примерно так.

Re: Автоматическая ведомость отделки помещений

> Александр В
В объекте Space для ADT от версии 2005 до 2008 включительно (2009 еще не видел) нет свойства площадь стен без проемов! Если бы это было, то и через элементарный PropertySet можно было бы до них добраться.
Для примеру: поставить несколько стен (любой высоты, любого стиля); вставить объект Space. Для Space создать новый PropertySet (для объекта), в который засунуть все возможные свойства этого объекта. "Навесить" созданный PropertySet на этот Space. Посмотреть все цифры. Запомнить. Вставить хотя бы 1 окошко или дверь. Проверить совпадение цифр. И можно чесать затылок.

Re: Автоматическая ведомость отделки помещений

P.S. Площадей проемов в свойствах Space не существует (повторюсь еще раз). А то, что выдает Zone Manager в АА2008, есть результат динамического вычисления, насколько я понял.

Re: Автоматическая ведомость отделки помещений

Мне кажется и нужно добраться до этого результата динамического вычисления, а не вычислять все самому. beee

Re: Автоматическая ведомость отделки помещений

PS.

В объекте Space для ADT от версии 2005 до 2008 включительно (2009 еще не видел) нет свойства площадь стен без проемов! Если бы это было, то и через элементарный PropertySet можно было бы до них добраться.

Мне кажется, вот и ответ на наш вопрос smile