2015-11-06

Связка Archicad и Excel с помощью pdf

Интерактивные каталоги архикада очень хороши для составления  спецификаций по принципу - "один объект-одна строка". Например, для металлического элемента легко получить строку такого типа:


Однако при необходимости получения групповой спецификации, подсчёта площади покрытия с разбивкой по типам, площади огнезащиты - приходится прибегать к помощи смет.

Они позволяют вытянуть из объекта информацию, сгенерированную скриптом вкладки "спецификация". Для выше приведённого металлического элемента с окраской это выглядит так:

Обрабатывать получившийся csv файл можно макросами экселя.
Поскольку у архикада нет штатной поддержки связи с экселевскими таблицами, как у автокада - приходится искать способы вставить отформатированную таблицу обратно, да желательно с возможностью дальнейшего обновления.
Итак, две проблемы - вывод заполненных ячеек в пдф и автоматическое форматирование таблицы.

Решение первой проблемы немного коряво - через vba нельзя задать произвольный размер листа, поэтому я использую А3. Макрос для вывода можно посмотреть тут

С форматированием несколько сложнее. Макрос форматирования таблицы можно посмотреть тут

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





2015-09-06

Эволюционная оптимизация в SmathStudio

SmathStudio очень хорош для быстрого прототипирования алгоритмов. В этот раз опробовал его для написания эволюционного алгоритма несколько нестандартного вида.

Для создания начальной популяции используются ЛПТау последовательности вместо обычного random. Это позволило создать более равномерную и предсказуемую последовательность точек.
Распределение особей в зависимости от способа создания - слева ЛПтау, справа с помощью равномерного случайного непрерывного распределения (uniform)
 
  • Адаптивный механизм формирования новой популяции - помимо обычного скрещивания добавляются новые особи в окрестностях лучших параметров особей из предыдущих популяции. Соотношение количества скрещенных и новых особей зависит от величины мутации. Размер области добавления новых особей также зависит от величины мутации. В качестве отправной точки принимаются значение параметров лучшей особи из предыдущего поколения
Размер области в зависимости от величины мутации

  • Величина мутации меняется в зависимости от скорости сходимости. Если фитнесс-функция на протяжении нескольких поколений меняется незначительно - увеличивается величина мутации. Это не даёт застревать алгоритму на локальном минимуме.
Сходимость алгоритма весьма приличная - при пяти особях в популяции минимум функции Розенброка находит на 5-10 поколении, вплотную подходит к минимуму функции Химельбау в точке [3.0, 2.0] на 40 поколении. С функцией Растригина пока беда - застревает на одной точке. 

В дальнейшем можно использовать его для оптимизации размеров конструкций, также рассчитанных в Smath - размеры подпорных стен, высота крепления анкеров в шпунтовых стенах, шаг прогонов и прочее.

Здесь можно скачать файл с вспомогательными таблицами. После распаковки в переменные Path и Данные необходимо записать путь к файлу и таблицам.

Схожий алгоритм реализован на Python для нахождения минимальных областей течения грунта для диссертации. Исходный код можно посмотреть тут, описание тут.

Поиск минимальных областей течения

Вообще о генетических и эволюционных алгоритмах хорошо написано на хабрахабре
http://habrahabr.ru/post/122222/
http://habrahabr.ru/post/171751/
http://habrahabr.ru/post/114910/




2015-09-02

Автозагрузка модулей VBA Excel для протезирования ArchiCAD

Выполнение рабочей документации АС, КЖ и КМ в Архикаде требует использования нестандартных приёмов. Отсутствие открытого API и формул в интерактивных каталогах приводит к необходимости перенести часть расчётов спецификаций в стороннее приложение. Удобно использовать для этого Excel.

Информация об элементах выводится в текстовый файл через сметные задания или подключение к ODBC, обрабатываются с помощью VBA и выводятся в готовом виде в текстовом файле или формате pdf для вставки видовым экраном непосредственно на макет.
Один из недостатков такого подхода - большое количество файлов с макросами разных версий, сложность поддержки старых проектов. 
Для устранения этих недостатков можно использовать автозагрузку модулей с обработчиками при открытии файла и их сохранения при её закрытии. Это также сделает спецификации возможными для отправки в сторонние организации без риска утечки кода.

Public sPathMod As String
Private Sub Workbook_Open()
    sPathMod = "C:\ArchiCAD_bib\_ArchiBibl\_macro\" 'путь к папке с модулями
    r = LoadMod("calc") 'загрузка модуля
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    r = DelMod("calc") 'выгрузка модуля
End Sub
Function DelMod(ByVal namemod As String) As Boolean
    If Len(Dir$(sPath & namemod & ".bas")) > 0 Then 'если модуль существует
        ThisWorkbook.VBProject.VBComponents.Item(namemod).Export sPath & namemod & ".bas" 'сохраняем модуль
        ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents(namemod) 'удаляем модуль 
    End If
End Function
Function LoadMod(ByVal namemod As String) As Boolean
    If Len(Dir$(sPathMod & namemod & ".bas")) > 0 Then 'если модуль существует
 ThisWorkbook.VBProject.VBComponents.Import sPathMod & namemod & ".bas" 'импортируем модуль
End Function

При открытии файла может возникнуть ошибка 1004
В этом случае необходимо через Параметры-Центр обеспечения безопасностью дать доступ VBA к объектной модели

2015-03-03

Расчёт шумоизоляции в промздании

Впервые столкнулся с необходимостью расчёта звукоизоляции операторской (от воздушного шума).

Порядок действий таков:
1. Определяем нормативные значения шума по СП 51.13330.2011 табл. 1

2. Вытягиваем у ОВ и ТХ паспорта на агрегаты и схему их расстановки. Проверяем наличие в паспортах шумовых характеристик в виде октавных уровней звуковой мощности.
Мне не повезло - ТХ дали только ориентировочное значение в дБА.
Для такого случая в учебнике [3] предлагается выход - исходя общих характеристик производства подобрать показатель спектра ΔLA, табл. 16.6.
Выбор показателя спектра - дело ответственное. Затем, зная его, можно определить поправки для пересчёта из дБА в дБ, табл 16.5. Он и будет определять - какая громкость будет у той или иной частоты.
Значения K(ΔLA) для ΔLA = 11. Звук преимущественно низкий.
Значения K(ΔLA) для ΔLA = 8. Звук преимущественно высокий.
Для ОВ в паспортах отсутствовало значения для среднегеометрической частоты 63 Гц. Пришлось придумывать по соседнему значению.

3. Прохождение шума через стену можно считать только для источника, находящегося в двух метрах от стены. в моём случае источники располагались гораздо дальше. В таких случаях можно взять дополнительную расчётную точку, расположенную возле стены. Есть сомнения в правильности приведения двух точечных источников в отдалении  одним точечным вблизи. Сомнения увеличивает п. 7.4 "Октавные уровни звукового давления, дБ, в расчетных точках в производственных и вспомогательных помещениях промышленных предприятий и общественных зданий определяют с учетом вкладов прямого и отраженного звука, определяемых схемой размещения оборудования и расчетных точек в помещении, а также акустическими характеристиками помещения." Но другого решения я пока не нашёл.
Здесь затруднений быть не должно - все формулы прямиком из СНиП 23-03-2003. Значения коэффициента звукопоглощения можно принять по [4].

4. Необходимо определить частотную характеристику изоляции воздушного шума стеной.

Однородная кирпичная стена, всё строго по СП 23-103-2003.

5. Финишная прямая - прохождение звука через стену.
Если источник один, то осталось сравнить значение уровней звука в точке Р2 с допустимыми и сделать выводы. У меня источников было два, звук проходил через две перпендикулярные стены. Поэтому перед сравнением провел энергетическое суммирование по формуле 

Всё, расчёт окончен. Шумоизоляция не требуется. 

Фрагмент плана с обозначением расчётных точек и источников звука

Фрагмент разреза


Список литературы
[1] СП 51.13330.2011 Защита от шума
[2] СП 23-103-2003 Проектирование звукоизоляции ограждающих конструкций жилых и общественных зданий
[3] "Звукоизоляция и звукопоглощение", Учебное пособие под редакцией академика РААСН, профессора, доктора технических наук Г.Л. Осипова, изд-во "Астрель", Москва, 2004г.