Приветствуем вас, уважаемые читатели! В этой статье мы хотели бы поделиться с вами разбором одной из примечательных возможностей nanoCAD BIM Конструкции.

Одно из безусловных преимуществ BIM-систем — однократный ввод данных. Как правило, в развитых системах не приходится вводить одни и те же данные. Все необходимое передается из области хранения в ту область хранения/применения, где в этих данных возникает потребность. Инструментарий, реализующий такой подход, довольно разнообразен: создание проектов из шаблона, передача данных из САПР в PDM и обратно, использование уже готовых чертежей или моделей в виде ссылок и т.п.

В нашей статье речь пойдет о применении проектных данных CADLib Модель и Архив в рамках САПР-среды nanoCAD BIM Конструкции. Сначала мы рассмотрим, каким образом можно считывать проектные данные из CADLib Модель и Архив в атрибуты моделей nanoCAD BIM Конструкции, а затем разберем несколько кейсов применения этих возможностей.

При публикации чертежа в CADLib Модель и Архив предварительно необходимо установить текущие переменные для всего чертежа либо для его объектов по отдельности. Текущие переменные указывают на связь объектов публикации с иерархиями CADLib Модель и Архив. Соотношение текущих переменных и иерархий CADLib представлено на рис. 1. Соответственно, чем больше проект, чем выше уровень декомпозиции иерархий; чем больше информации занесено в узлы иерархий проекта, тем больше число вариаций установки текущих переменных, а значит и больше возможностей использования свойств узлов иерархий CADLib Модель и Архив.

Рис. 1. Взаимосвязь текущих переменных и иерархий CADLib Рис. 1. Взаимосвязь текущих переменных и иерархий CADLib

Чтобы подробнее ознакомиться с публикациями из nanoCAD BIM Конструкции в CADLib Модель и Архив, пройдите по ссылке. Проследовав по другой ссылке, вы узнаете о возможностях публикации из комплекта nanoCAD Инженерный BIM.

Для получения в значениях параметров объектов nanoCAD BIM Конструкции данных из CADLib Модель и Архив необходимо прописывать формулы в комментариях. Редактирование формул осуществляется в окне Мастера функций. Пример вызова этого окна, чтобы внести комментарий к параметру объекта nanoCAD BIM Конструкции, приведен на рис. 2.

Рис. 2. Окно Мастера функций с комментарием параметра Рис. 2. Окно Мастера функций с комментарием параметра

Более обстоятельно узнать о работе Мастера функций можно, ознакомившись с записью соответствующего вебинара.

Рассмотрим подробнее конструктор формул, которые запрашивают данные из проекта CADLib Модель и Архив. Есть два шаблона составления формул:

Вместо слов <имя иерархии> в формулы необходимо подставлять соответствующие слова, обозначающие ту или иную иерархию CADLib Модель и Архив. Ниже приведены имена иерархий, а на изображениях показаны узлы иерархий, имена и параметры которых будут считываться согласно формулам.

Имена иерархий (<имя иерархии>):

  • Discipline — иерархия раздела проекта. На рис. 5 в текущих переменных выделены узлы иерархии разделов проекта, с крайнего узла (Кровля) считываются данные согласно формуле;
    Рис. 5. Текущие переменные разделов проекта Рис. 5. Текущие переменные разделов проекта
  • Project — свойства главного узла иерархии проекта (рис. 6);
    Рис. 6. Свойства проекта CADLib Модель и Архив Рис. 6. Свойства проекта CADLib Модель и Архив
  • Building — подраздел иерархии проекта. Если конструкции (системы) не заданы, берет информацию с ЗиС на уровне здания. На рис. 7 в текущих переменных выделены узлы иерархий ЗиС (зданий и сооружений);
    Рис. 7. Текущие переменные иерархии ЗиС по системам Рис. 7. Текущие переменные иерархии ЗиС по системам
  • Building_situation — иерархия ЗиС. Подраздел иерархии проекта. Устанавливает узлы по ситуации. На рис. 8 в текущих переменных выделены узлы иерархии разделов проекта, с крайнего узла (Кровля) считываются данные согласно формуле;
    Рис. 8. Текущие переменные иерархии ЗиС по ситуации Рис. 8. Текущие переменные иерархии ЗиС по ситуации
  • Structure — пользовательская произвольная иерархия структуры. В текущих переменных на рис. 9 выделен узел иерархии произвольных структур.
    Рис. 9. Текущие переменные иерархии структур Рис. 9. Текущие переменные иерархии структур

Практическая часть применения данных формул будет состоять из трех приемов:

  • автозаполнение полей штампов из свойств CADLib Проект;
  • формирование шифра по иерархиям проекта в свойствах объектов nanoCAD BIM Конструкции;
  • использование дополнительных возможностей навигации по объектам проекта с помощью Спецификатора.

Автозаполнение полей штампов из свойств CADLib Проект

Множество данных, которыми заполняется проект в CADLib Модель и Архив, может понадобиться и в nanoCAD — в частности, для автоматизации заполнения штампов. Таким образом, изменение информации в проекте CADLib Модель и Архив централизованно изменяет данные в штампах чертежей.

Выполнить такую автоматизацию можно в нескольких вариантах штампов:

  • в виде параметрического объекта nanoCAD BIM Конструкции
    • плюсы: штампы будут корректно отображаться на листах в иерархии документов проекта; не потребуются какие-либо дополнительные объекты,
    • минусы: агрегировать данные для таких штампов можно только в рамках объектов nanoCAD BIM Конструкции, что исключает использование возможностей автоматизации, предлагаемых Платформой nanoCAD. В сравнении с альтернативными вариантами штампов функциональность меньше — например, при вставке логотипа компании или автоматической нумерации листов;
  • в виде блоков
    • плюсы: не требуются дополнительные модули; существуют широкие возможности автоматизации и агрегирования с использованием функционала Платформы nanoCAD; реализована автоматизация печати благодаря сторонним утилитам, создающим листы печати по границам блока формата чертежа,
    • минусы: штампы некорректно отображаются на листах в иерархии документов проекта, потребуются дополнительные промежуточные объекты;
  • в виде штампов модуля «СПДС» Платформы nanoCAD
    • плюсы: возможности автоматизации еще шире благодаря использованию модуля «СПДС» Платформы nanoCAD,
    • минусы: те же, что и для штампов в виде блоков.

Штамп как параметрический объект nanoCAD BIM Конструкции

Такой штамп удобнее создавать из уже имеющегося блока в инструментальной палитре. Вызов панели инструментов с блоками форматов проиллюстрирован на рис. 10.

Рис. 10. Блоки форматов чертежей на панели инструментов Рис. 10. Блоки форматов чертежей на панели инструментов

Чтобы создать на основе такого блока новый параметрический объект nanoCAD BIM Конструкции, необходимо разбить блок, а затем импортировать графику в окне редактора параметрического объекта. Импорт графики форматки показан на рис. 11.

Рис. 11. Импорт графики в параметрический объект nanoCAD BIM Конструкции Рис. 11. Импорт графики в параметрический объект nanoCAD BIM Конструкции

Как результат импорта (рис. 12) в параметрическом объекте появится множество отрезков, которые по расположению соответствуют импортированным.

Рис. 12. Результат импорта графики Рис. 12. Результат импорта графики

После этого в окне редактора параметрического объекта нужно добавить текстовые объекты, а в самом параметрическом объекте — добавить свойства, значения которых будут приходить в текстовые объекты. Последовательность передачи информации демонстрируется на рис. 13.

Рис. 13. Передача информации из свойств объекта в редактор параметрического объекта Рис. 13. Передача информации из свойств объекта в редактор параметрического объекта

Можно писать формулу сразу в текстовом объекте, но тогда значение параметра не будет отображаться в свойствах параметрического объекта штампа. Дополнительно вы можете добавить графику других вариантов штампов (переключение между ними осуществляется с помощью «ручки»), а для удобства редактирования добавить пользовательскую форму.

При обновлении таких штампов потребуется использовать несколько команд:

  • обновление в окне CADLib Проект или команду clp_update_drawing;
  • изменение значения LOD при помощи команды pe_set_lod либо по кнопке в строке состояния.

Примечание. Вместо команды установки LOD в линейке программных продуктов Model Studio CS можно использовать команду _mss_refresh. В nanoCAD BIM Конструкции такая команда отсутствует.

Штамп в виде блока

Создать этот штамп можно на основе уже готовых блоков из палитры инструментов Платформы nanoCAD. Однако напрямую передать информацию из CADLib Модель и Архив в такой блок не получится, потребуется промежуточный пользовательский параметрический объект nanoCAD BIM Конструкции. В объекте должны присутствовать одно или несколько свойств с прописанными формулами получения информации из CADLib. И это должны быть те свойства, которые выводятся в окно свойств Платформы nanoCAD. Таким образом, упомянутые свойства можно будет считать с помощью функционала полей или таблиц nanoCAD. Параметризация промежуточного объекта продемонстрирована на рис. 14.

Рис. 14. Параметризация промежуточного объекта Рис. 14. Параметризация промежуточного объекта

Далее в блок штампа можно добавить атрибут с полем, которое ссылается на свойство из промежуточного параметрического объекта (рис. 15).

Рис. 15. Добавление поля по свойству промежуточного объекта Рис. 15. Добавление поля по свойству промежуточного объекта

На рис. 16 показан результат добавления поля в штамп чертежа.

Рис. 16. Результат добавления поля Рис. 16. Результат добавления поля

При обновлении таких штампов потребуется использовать несколько команд:

  • обновление в окне CADLib Проект или команду clp_update_drawing;
  • переключение «модель/лист» или команду регенерации чертежа.

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

Для штампов, формируемых с применением модуля «СПДС», всё выглядит аналогичным образом — с той лишь разницей, что уровень автоматизации и параметризации таких штампов выше, а для обновления значения в штампе потребуется использовать команду spregen. Демонстрация автозаполнения такого штампа доступна по ссылке.

Формирование шифра по иерархиям проекта в свойствах объектов nanoCAD BIM Конструкции

По умолчанию в свойствах узлов иерархий проекта CADLib Модель и Архив указываются коды, обозначающие данный узел иерархии и путь до него по вышестоящим узлам (рис. 17).

Рис. 17. Формирование шифра узлов иерархий Рис. 17. Формирование шифра узлов иерархий

Брать это свойство можно напрямую из узла, с помощью формул вида:

  • hierarchy("building_situation").Element.Parameters["CLP_FULL_CODE"]- для иерархии ЗиС (проекта) по ситуации;
  • hierarchy("Building").Element.Parameters["CLP_FULL_CODE"]- для иерархии ЗиС по системам.

Тем не менее удобнее обойтись одной формулой, которая сначала формировала бы шифр по ситуации, обозначая таким образом принадлежность к зданию, этажу, помещению и т.п. (рис. 18), а затем по принадлежности к системам (рис. 19).

Рис. 18. Запрос шифра по ситуации иерархии ЗиС Рис. 18. Запрос шифра по ситуации иерархии ЗиС Рис. 19. Запрос шифра по системам иерархии ЗиС Рис. 19. Запрос шифра по системам иерархии ЗиС

Сложность здесь заключается в том, что если просто сложить строчки шифра, начало обоих шифров будет одинаковым. Пример сложения ранее представленных формул приведен на рис. 20.

Рис. 20. Сложение формул получения шифров по иерархии ЗиС Рис. 20. Сложение формул получения шифров по иерархии ЗиС

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

Рис. 21. Формула получения корректного шифра по иерархии ЗиС Рис. 21. Формула получения корректного шифра по иерархии ЗиС

Текст формулы:

=string(hierarchy("Building_situation").Element.Parameters["CLP_FULL_CODE"])&
    "."&(if(count(split(string(hierarchy("Building").Element.Parameters["CLP_FULL_CODE"]), "."))=2, "", (string(hierarchy("Building").Element.Parameters["CLP_FULL_CODE"]) \
    (split(string(hierarchy("Building").Element.Parameters["CLP_FULL_CODE"]), ".")[0]&
    "."&
    split(string(hierarchy("Building").Element.Parameters["CLP_FULL_CODE"]), ".")[1]&
    "."))))

Использование в свойствах такой формулы позволяет определить, что опубликованный в примере объект относится к:

  • стройплощадке — Демо;
  • зданию — 004;
  • первому этажу — 1;
  • первому помещению — 1;
  • разделу «Архитектура» — АС;
  • подразделу «Интерьеры» — И.

Получить эту информацию в рамках CADLib Модель и Архив не составляет особой сложности. При выделении объекта в окне базы данных можно посмотреть, к каким иерархиям данный объект относится. Также, если для объекта вызвать контекстное меню, можно выбрать пункт с узлом ситуации — в таком случае эта иерархия автоматически откроется в окне базы данных (рис. 22).

Рис. 22. Определение принадлежности объекта к иерархиям в CADLib Модель и Архив Рис. 22. Определение принадлежности объекта к иерархиям в CADLib Модель и Архив

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

Рис. 23. Шифр по принадлежности к иерархиям ЗиС у объекта Рис. 23. Шифр по принадлежности к иерархиям ЗиС у объекта

Разберем формулу. Первая ее часть (она выделена на рис. 24) получает значение шифра по ситуации. Далее посредством операции объединения строк, выполняемой с помощью символа &, добавляется вторая часть шифра — по обозначению системы.

Рис. 24. Первая часть формулы получения шифра по иерархиям ЗиС Рис. 24. Первая часть формулы получения шифра по иерархиям ЗиС

Вторая часть вычисляется сложнее — есть условия, которые нужно обработать:

  • первые два узла в шифре следует исключить во избежание дублирования;
  • нужно учесть случай, при котором в текущих переменных не заданы системы и в шифр попадает информация принадлежности к зданию по ситуации.

Чтобы обработать второй пункт, необходимо ввести условие проверки размера массива по шифру (рис. 25). Если в массиве два элемента, значит в текущих переменных иерархия по ЗиС системы не была установлена, и тогда к шифру по ситуации ничего не добавляется.

Рис. 25. Проверка размера массива Рис. 25. Проверка размера массива

Примечательно, что для работы функции Count может требоваться разное количество аргументов. В нашем случае он всего один. Функция Split формирует массив строк, разбивая исходную строку с разделителем по точке.

Если функция Count возвращает значение больше 2, то по условию функции if выполняется следующая строчка кода (рис. 26), в которой вычисляется добавляемый к ситуации шифр — с учетом, что из него нужно удалить первые два повторяющихся элемента: стройплощадку и здание. В рассматриваемой нами формуле это осуществляется при помощи строкового вычитания. Как результат получаем необходимый шифр.

Рис. 26. Удаление дубля шифра по системам иерархии ЗиС Рис. 26. Удаление дубля шифра по системам иерархии ЗиС

Формула задания шифров в иерархиях CADLib Модель и Архив прописывается в соответствующих настройках проекта (рис. 27). Ее можно изменить под необходимые вам условия.

Рис. 27. Настройки формулы вычисления шифра в иерархиях ЗиС Рис. 27. Настройки формулы вычисления шифра в иерархиях ЗиС

Дополнительные возможности навигации по объектам проекта с помощью Спецификатора

Поскольку информация о принадлежности объекта той или иной иерархии CADLib Модель и Архив может быть загружена при помощи ранее изученных формул, мы можем учитывать эту информацию при специфицировании. Например, если требуется специфицировать элементы отдельно по этажам либо есть потребность осуществлять навигацию по объектам с помощью Спецификатора.

Разберем некоторые возможности навигации по объектам:

  • выделение объектов проекта по их принадлежности к иерархии и собственному свойству;
  • навигация по объектам модели одного чертежа, в котором объектам установлены разные текущие переменные.

Видеодемонстрация доступна по ссылке.

В окне CADLib Проект программы nanoCAD BIM Конструкции есть возможность вызвать окно перекрестной фильтрации (рис. 28).

Рис. 28. Вызов окна перекрестной фильтрации Рис. 28. Вызов окна перекрестной фильтрации

В этом окне можно выбрать или загрузить в модель объекты, принадлежащие сразу нескольким узлам иерархии. Например, всю систему электроосвещения только на втором этаже (рис. 29).

Рис. 29. Перекрестная фильтрация объектов проекта по иерархиям ЗиС Рис. 29. Перекрестная фильтрация объектов проекта по иерархиям ЗиС

Однако сразу выбрать определенные объекты, а не всю систему целиком, не получится. Их понадобится дополнительно искать. Упростит задачу окно Спецификатора, в котором можно выделить принадлежность элементов иерархиям CADLib Модель и Архив, а также указать дополнительные собственные свойства — для выделения в отдельные строки.

Рассмотрим условный пример. Для начала потребуется добавить соответствующие свойства в настройках списка параметров базы (рис. 30). Сделать это мы можем с помощью Менеджера библиотек.

Рис. 30. Настройка списка параметров базы элементов с помощью Менеджера библиотек Рис. 30. Настройка списка параметров базы элементов с помощью Менеджера библиотек

Формулы свойств для добавления в список параметров показаны на рис. 31.

Рис. 31. Формулы получения наименования иерархий крайних узлов в текущих переменных Рис. 31. Формулы получения наименования иерархий крайних узлов в текущих переменных

Для наглядности добавим формулу шифра из предыдущего примера.

Далее необходимо выделить все объекты базы и назначить в их свойствах добавленные параметры. После этого объекты nanoCAD BIM Конструкции всегда будут вставляться с этими параметрами.

Примечание. Пока объекту в чертеже не назначены текущие переменные, по результатам обсчета формулы будет выводиться сообщение об ошибке.

Смоделируем условный пример здания (рис. 32).

Рис. 32. Условный пример здания Рис. 32. Условный пример здания

В свойствах объектов есть ранее добавленные параметры, но значения выдают ошибку (рис. 33). Здесь это сделано намеренно, перед началом моделирования текущие переменные не назначались. В рассматриваемой задаче разные объекты будут иметь разные текущие переменные.

Рис. 33. Ошибка получения значений параметров в случае неустановленных текущих переменных Рис. 33. Ошибка получения значений параметров в случае неустановленных текущих переменных

Назначим для объектов текущие переменные отдельно, в соответствии с иерархиями проекта. На рис. 34 выделены узлы иерархий, используемых в данном примере.

Рис. 34. Узлы иерархий, использующиеся в текущих переменных Рис. 34. Узлы иерархий, использующиеся в текущих переменных

Теперь в свойствах объектов вместо сообщений об ошибках есть значения параметров. Составим соответствующую спецификацию. В настройке выборки укажем включение всех типов объектов (рис. 35).

Рис. 35. Настройка спецификации, выборка типов объектов Рис. 35. Настройка спецификации, выборка типов объектов

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

Рис. 36. Список параметров для вывода в спецификацию Рис. 36. Список параметров для вывода в спецификацию

В настройках группировки укажем свойства по ситуации ЗиС и системам (рис. 37).

Рис. 37. Настройка группировки параметров в спецификации Рис. 37. Настройка группировки параметров в спецификации

В итоге спецификация позволяет быстро найти объекты, которые относятся к определенной иерархии CADLib Модель и Архив и имеют определенное значение по типу изделия. Например, таким образом можно быстро выделить всю мебель первого этажа (рис. 38).

Рис. 38. Пример работы спецификации при нахождении типа объекта Рис. 38. Пример работы спецификации при нахождении типа объекта

Кроме того, использование подобной спецификации упрощает работу с чертежом, в котором разные объекты имеют разные текущие переменные. Соответственно это также упрощает навигацию по объектам проекта. Проще искать объекты, которым текущие переменные не назначены. Пример продемонстрирован на рис. 39.

Рис. 39. Пример нахождения объектов без текущих переменных Рис. 39. Пример нахождения объектов без текущих переменных

Рассмотренные приемы позволяют ускорить и оптимизировать работу с чертежами, публикуемыми из nanoCAD BIM Конструкции в CADLib Модель и Архив.

Файл с определением параметров, которые использовались в статье, доступен по ссылке. Все параметры записаны в категорию CADLib. Для их добавления в базу воспользуйтесь функцией импорта CDE-файлов в Менеджере библиотек.

Олег Ачкасов,
инженер САПР
ООО «Макссофт-24»
E-mail: oleg@maxsoft.ru