2019-09-28

Archicad: Ведомость отделки 2.0


        С момента съёмки последнего видео про ведомость отделки и экспликацию полов в эксельку и библиотеки были внесены большие изменения. Т.к. по отдельности описывать их времени нет - решил снять несколько видео по работе с новой версией. Смотрим, задаём вопросы.


2018-12-25

Ссылки на библиотеки



Периодически по разным причинам слетают ссылки на библиотеки. В данном посте - последние и актуальные.

Список изменений в библиотеках, можно комментировать

18.10.19    archbib20(использовать вместе с  standart20)    https://yadi.sk/d/l9hFGqHJpDl58w

18.10.19    standart20    https://yadi.sk/d/cST_-oeb-TKP8g

23.09.19    mep20   https://yadi.sk/d/0fYTEVphy-jqsA

30.09.19    Спец.xlsm (бета-версия)    https://yadi.sk/d/JkLdDVcP3NmBt9

23.09.19    Спец.xlsm    https://github.com/kuvbur/material-specification

При обновлении спецификации в эксель лучше также обновить и  сортаменты (содержимое папки sort в папке data)

2018-12-19

Спецификация в Excel - как обновить код существующей спецификации

Начиная с версии 3.21 при запуске кода проверяется наличие обновлений. Если у вас появилось сообщение об обновлении либо появилась необходимость выполнить ручное обновление необходимо выполнить следующее:

1. На вкладке Системные нажать кнопку Сохранить код.
 2. Убедиться, что он сохранился - в папке \data\code\old должны появится файлы с текущей датой. Это позволит вернуться к прежнему коду при необходимости.

3. На любой вкладке (названии листа, внизу) вызвать контекстное меню. Выбрать пункт "Просмотреть код"


4. В появившемся окне в папках Forms и Modules удалить модули и формы (пункт меню Remove...), которые необходимо обновить. Экспорт перед удалением выполнять не надо - жмём Нет. Если не видите вкладки Forms и Modules - сверните секцию Microsoft Excel Objects. Если удалили всё - не страшно.


5. Вызываем контекстное меню на Microsoft Excel Objects и выбираем пункт Import File.

Последовательно загружаем все файлы из папки \data\code\from_git


6. Готово. Запускаем и проверяем.

При обновлении спецификации в эксель лучше также обновить и  сортаменты (содержимое папки sort в папке data). После обновления сортамента нажать кнопку Обновить Сортамент на вкладке Вспомогательные.





2018-07-13

Спецификация в Excel - что делать, если оно само не работает

Что делать, если вот эта экселька не работает?
  1. Версия эксель должна быть не ниже 2013 (для полной работы) или 2010 (может не работать вывод в пдф, лечится правкой кода). Тестировалась только с русской версией.
  2. Убедиться, что экселька скопирована/распакована со всеми подпапками. В случае необходимости - перемещать нужно всю папку со спецификацией.
    Рядом с экселькой должно быть три папки - data, import, list. В папке data->sort должно лежать куча текстовых файлов.
    Если чего-либо из этого нет - нужно докопировать/доразархивировать.
  3. Дать макросу доступ к объектной модели vba. Способ описан тут
    В итоге должно быть так.
     

  4. Проверить разделитель дробной части и разделение разрядов. Группировку нужно отключить, разделитель целой и дробной - запятая, разделитель элементов списка - точка с запятой. После изменений - перезагружаем комп и перевыводим текстовые файлы из архикада. Добраться до окна настроек формата можно так. Итоговый вид должен быть таким.
  5. Если проблемы возникаю с автоматическими спецификациями, выводимыми из архикада версий старше 21 - необходимо проверить и изменить кодировку. Меняется она просто - открываем текстовый файл, который мы сохранили из архикада, блокнотом и сохраняем как с кодировкой ANSI, под тем же именем, с заменой. Вот так

  6. Если всё считает нормально, но в пдф не выводит - убеждаемся, что пдф не открыт. Если версия экселя 2010 и ниже - нужно немного поправить код.
  7. При открытии файла могут появиться ошибки. Это не страшно - просто нажимаем End, идём во вкладку Вид - Макросы и запускаем макрос Start.

  8. Вроде всё основное перечислил. Если ничего из перечисленного не помогает - пишите в комментарии, будем разбираться.

2018-02-20

Спецификации в Архикад - 3. Экспликация полов

    Продолжая тему о ведомости отделки расскажу об одном из способов создания экспликации полов.
    Всего таких способов мне известно 3.

1. Ручной.
    Складываем площади помещений из экспликации, вычитаем отверстия, прибавляем нахлёст, руками вбиваем текст. Минусы очевидны, хотя при должной усидчивости, малых объектах (одно-два помещения) - самый надёжный. В случае ошибок пенять на программу будет сложно, а это не BIM-подход.

2. Выводом из зоны через ведомости.
    Единственный, до недавнего времени,  известный мне (полу)автоматический способ. С помощью паспорта зоны каждой зоне присваивается номер пола и его конструкция. Затем с помощью графического построителя ведомостей (экс-смет) выводится экспликация. Минусы, на мой взгляд, такие - сложность изменения типа пола в пределах проекта (добавить/поменять слой в типе пола 1, например); ограничение на длину названия слоя, отсутствие конструкции пола в 3д и, как следствие; невозможность показать флажками конструкцию на разрезах. С последним минусом иногда поступают так - моделируют многослойным перекрытием конструкцию пола. 

3. Различные комбинации интерактивных каталогов и видов.
    Например таблица выводится каталогами, с описанием слоёв и площадями, а схема пола - дербанится видовыми экранами из разрезов. Первое время так и я поступал. Минусы - обозначения полов, потолков - вручную, изменения зон не отслеживаются.

    Было решено попробовать в качестве четвёртого способа следующую комбинацию костылей - Аксессуарами привязываться к элементу (перекрытию, зоне) -> Вытаскивать ведомостями площадь и периметр в эксель для суммирования одинаковых типов -> Подключать результат к ГДЛ-таблице в архикаде, заодно отрисовывая состав.
   Состав, в свою очередь, задаётся в одном месте - в параметрах модельного вида.
Это позволяет создавать несколько вариантов применяемых полов/потолков, загружать конструкции из другого проекта, редактировать типы в одном месте, зная, что и флажки и толщины в 3д и экспликации будут обновлены. 
Настройки модельного вида следующие



Плющки, которые есть в объектах-аксессуарах:
Обозначение подвесных потолков по ГОСТ. Высота до потолка берётся из зоны.
Возможность добавить/вычесть кусок площади вручную. 
Индивидуальный коэфф. запаса для каждого участка (от 1 до 15%). Полезно на стадии П накинуть на всякие непонятные помещения.
Если в полу много отверстий - просто натягиваем аксессуар зоны на перекрытие с этими отверстиями. В итоге площадь пола будет точнее, чем просто взять площадь помещения (в самой зоне-то отверстия не нужны, её площадь будет больше площади пола). Полезно для пром. зданий, где смежники дырявят все плоскости.

У такого подхода также есть минусы.
1. Иногда у аксессуаров зон/перекрытий со сложным контуром неверно определяются номера зон. Косяк, увы, в архикаде, а именно в поведении команды REQUEST "Zone_relations". Решается отображением номеров помещений и ручной корректировкой. Также на скрытом листе |Лог| в эксельке  в случае небивки площадей потолка/пола и зоны выводится предeпреждение. 
2. Нужно помнить о том, что в проекте в данный момент времени может быть только один модельный вид, с которого читаются настройки. 
3. Если не исправят баг с определением номеров помещений - будет печально. Хотя просмотреть номера быстрее, чем считать вручную.

Ну и конечно, нужно внимательно проверять результат. Оптимально использовать для этого интерактивные каталоги - выводить там общую площадь, например, и сравнивать с экселькой.

Небольшое видео с примером работы


Ссылки на библиотеки
Спецификация - https://yadi.sk/d/JkLdDVcP3NmBt9
archbib20.lcf - https://yadi.sk/d/dN9IRMGO3SB2KY

2017-10-19

Спецификации в Архикад - 2. Ведомость отделки

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

    Далее - проблема с площадью поверхностей колонн в зоне. У зоны есть параметры ROOM_WALLS_PRM, ROOM_WALLS_SURF - но нет никакого параметра, позволяющего получить периметр или площадь колонн. Стандартное решение вопроса - махинации с периметров (Периметр_Зоны - Периметр_Стен = Периметр_Колонн). Такое решение не подходит, если зонами выделены участки внутри помещений.


    Правда, лазейку в виде Ведомостей (бывшие Сметы) - они оставили. С их помощью можно получить площадь и периметр стен, примыкающих к зонам. Но!

1. Необходимо использовать не Номер Зоны, а её ID. И не только из-за проблем с сортировкой. Временами Номера Зон в Ведомостях просто оказываются пусты! Также некорректно иногда работает команда REQUEST "Zone_relations" при попытке вывести номер зоны, в котором расположен объект в ведомости. Это потребуется нам в дальнейшем при выводе экспликации полов.

2.Странная методика расчёта площади стен при включении замыкания у проёмов. К счастью - всё в запас.
3. Площадей поверхности колонн по прежнему нет, выдумываем алгоритм за разработчиков. Вводим доп. параметр, куда руками (BIM-руками) вводим длину участков зоны, не примыкающую к стенам. Тогда эти участки не будут восприняты как колонна.
4. У зоны нет никаких параметров, позволяющих получить координаты проёмов. Площадь панелей мы можем только вычислить по хитрым формулам. Т.е. отловить проёмы, уменьшающие площадь панелей - просто так нельзя. Только аксессуарами интерьера стен, кои кошмарно лагают и утяжеляют модель.

В итоге получаем следующую схему - через Ведомости выводим набор данных (геометрию и финишное покрытие зоны, состав, площадь, и периметр примыкающих стен и т.д.) и обрабатываем эти данные в сторонней программе. Удобнее было бы, конечно, использовать Python, но в силу исторически сложившихся обстоятельств был использован Excel+VBA. Проще подправить, проще обучить, нет паники от непонятных инноваций.

Результат - на видео ниже




Ссылки на библиотеки
Спецификация - https://yadi.sk/d/JkLdDVcP3NmBt9
archbib20.lcf - https://yadi.sk/d/dN9IRMGO3SB2KY

2016-10-31

Специфицирование GDL объектов

В Архикаде есть беда - в каталогах не отображаются значения параметров GDL объектов, если этим параметры заданны массивом. Т.е. если насмотритесь роликов про ревитовские семейства и пожелаете сделать что-то похожее в Архикаде - то больше геометрии и общей массы вы не получите. Есть один выход - использовать механизм, более древний, чем каталоги. Настолько древний, что внятного руководства по написанию графических шаблонов я так и не нашёл.

Было решено вывод информации в спецификации делать через вызов специального объекта - Спецификатора. Стало немного проще - из любого объекта вызываем макрос и сообщаем ему - есть столько-то и того-то.
Вызов спецификатора из объекта

Спецификатор это дело обрабатывает - в зависимости от типа объекта формирует нужную строку:

Формирование строки для вывода в ведомости компонентов 
Всё, скрываем ненужные слои (удобно создавать комбинацию слоёв с элементами, которые должны попасть в ту или иную спецификацию) и сохраняем ведомость 

Фрагмент ведомости компонентов
К чему я это рассказываю. С помощью такого механизма можно быстро подключать для специфицирования сторонние или авторские разработки. Более того - это можно применять не только в архикаде, но и в автокаде (через извлечение данных). Объект просто должен отдавать строку определённого формата
Принцип формирования строки для элемента

Получившийся (из любой программы) файл сохраняем в папку import....
Структура папок для спецификаций. Менять её нельзя.
... и запускаем файл Спец_1.13


Выбираем нужный вариант спецификации, экспортируем в пдф и вставляем его в архикад(автокад). Всё, готово.