Чтобы работать в Model Studio, не обязательно понимать все процессы, которые скрыты под капотом. Но гораздо проще, когда основные механики все же разобраны. Давайте попробуем посмотреть, как устроена работа в Model Studio CS, когда она ведется при помощи CADLib МиА. Начнем с основ.
Общая схема
Model Studio работает на базе NanoCAD (или AutoCAD, но для последних версий поддержка прекращена), поэтому, все рабочие файлы - с расширением .dwg. Что это значит для нас? Что при сохранении файла, как и обычно, сохраняются *.bak файлы, с помощью которых можно восстановить предыдущую версию файла. Но в CADLib можно также хранить резервные копии, только перед этим надо связать свой рабочий файл с базой проекта.

Как же устроена эта связь? Если объяснить просто, то в проекте CADLib есть несколько разных структур:
- Здания и сооружения (тут настраивается объектная привязка)
- Разделы проекта (а тут привязка к составу)
- Структуры (необязательная и неограниченная по воображению, можно создать что угодно)
Привязка файла к первым двум структурам обязательна. Когда мы настраиваем текущие переменные для пустого файла, мы как бы говорим, что "в этом файле все объекты попадут в это здание и в этот раздел". Но! Не все так просто, есть два сценария:
- В файле уже есть объекты, а текущие переменные не заданы. Бежим срочно их задавать!

И вот мы, довольные, задали переменные и сохранили файл в базу проекта. Что у нас получится? Model Studio поймет, что для объектов отдельно не заданы текущие переменные и применит параметры по умолчанию (то есть те, которые указаны в целом для файла). По сути, здесь все будет работать правильно.
- Мы хотим изменить уже заданные после публикации текущие переменные (допустим, изменить привязку к тому документации)

И если мы зададим переменные, а потом выделим любой объект, мы увидим, что у них остались старые переменные. С одной стороны, это хорошо, ведь мы можем привязывать разные объекты внутри одного файла в разные разделы структур. С другой стороны, есть риск ошибиться. Если сейчас сохранить файл в БД, то конструкции останутся в старом разделе. А все новые объекты в этом файле будут отправлены в новый раздел. Поэтому, старайтесь отслеживать подобные процессы, чтобы элементы не разлетались по разным местам.
Работа с публикациями
Итак, мы уже разобрали, что файл MS подключается к проекту в CADLib через текущие переменные, и распределяет объекты по структурам проекта:

Публикации - это слепки рабочих файлов, сохраняемые в базе проекта. Если зайти в свойства выбранной публикации, можно увидеть, кто последний работал и сохранял ее в проект, когда это было. Можно также определить по статусу, занята ли публикация (работа в DWG накладывает ограничение на одновременную работу в одном файле). А на вкладке вложения можно найти архивные версии публикации:

Задать количество архивных копий можно в настройках проекта, и к сожалению, здесь работает правило "все или ничего", у нас есть три опции:
- Не сохранять ничего (бэкапов нет)
- Сохранять одну предпоследнюю версию
- Сохранять вообще всё
Понятно, что одной версии может быть маловато, но третья опция чрезмерна, ведь можно очень быстро забить память из-за одного активно публикующегося проектировщика.
Идем далее, публикации можно:
- Создавать
- Захватывать (занимать для редактирования, при этом никто другой не сможет ее редактировать)
- Освобождать от захвата (например, для передаче публикации коллеге)
- Удалять
Кроме того, мы можем подгружать элементы из других публикаций в свою. Для этого в Model Studio создана особая сущность - "объект проекта". Он отображается геометрически в модели, к нему можно привязывать свои элементами, его свойства можно посмотреть, можно выводить его в спецификации или на проекции. Можно даже задействовать его в булевых операциях! (если это не IFC, подгруженное в CADLib) Но есть нюанс, редактировать объекты проекта у себя нельзя, ни параметрически, ни геометрически. Редактировать объект можно только там, где он был создан (в оригинальном файле).
Хранение публикаций на компьютере
Если сохранить файл в БД проекта, а затем открыть расположение в Проводнике:

То мы попадем в папку со странным на первый взгляд номером. Пример пути расположения файла:
C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\Documents\Model Studio CS\Project\8439103A-C409-48EB-BC9B-DF64C8DD0A16
В папку Project в Документах будут попадать все публикации, которые мы сохранили в проекты или взяли на редактирование. При этом, если мы создали файл в другом месте, поработали в нем, а потом сохранили в проект, то он все равно перезаписывается сюда, про исходный файл можно забыть, вся работа обязательно переводится сюда.
Последняя папка является уникальным кодом, по которому CADLib связывает файлы с публикациями у себя, по ним он понимает, что публикация обновляется, и надо заменять объекты, а не записывать к себе новые. Номер не имеет особого смысла и генерируется автоматически, поэтому открыв папку Project, вы не разберетесь, какой код относится к тому или иному проекту.
Давайте рассмотрим сценарий работы:
- Коллега работал над одной из публикаций и сохранялся только локально (через стандартную команду сохранить), не публикуя изменения в проект. Если он заболевает и его работу надо перехватить, то нужно опубликовать изменения с его компьютера и освободить захват файла, чтобы его коллега мог продолжить. Если доступа к компьютеру нет, то возникает проблема - актуальный файл лежит в Project, а в базе проекта находится его старая версия.
Документы проекта
На схеме есть еще одна структура, Документы проекта. Она отличается от остальных структур тем, что в нее не попадают объекты модели, но в нее можно публиковать, к примеру, оформленные листы. Схема постепенно дополняется:

Оформленные в MS листы попадают в привязке к карточке проекта. Связь с листом задается через команду "Ассоциировать лист с проектом" с вкладки CADLib Проект. В одном файле может быть множество листов, и они могут распределяться независимо друг от друга по карточкам.
Особенности работы с библиотекой
Так и где же во всем этом место для библиотеки стандартных компонентов?

На схеме связь показана между файлом и библиотекой, но на самом деле она подключается в сеанс Model Studio CS. Библиотека не связана с проектами или файлами напрямую, но есть несколько линий связи:
- Элементы из библиотеки имеют GUID (уникальный номер) и могут, при изменении оригинала в библиотеке, синхронизироваться и меняться как параметрически, так и геометрически
- Параметризация объектов связана с библиотекой элементов. Это значит, что если базу отключить, то параметры у объектов не пропадут, но их категории сбросятся, и параметры будут общим списком (а некоторые и без заголовка).
- Параметры из библиотеки, привязанные к объектам, попадают в CADLib и создаются в момент публикации. Если параметра не было, он создается по основе из библиотеки, а если он уже есть, то ничего не происходит. Это может приводить к путанице, когда у одного параметра в CADLib и библиотеке компонентов разные заголовки. С новых версий появилась возможность синхронизировать параметры CADLib из библиотеки компонентов.
Итак, мы разобрали в общих чертах, как связаны с собой рабочая зона Model Studio и CADLib, и как работает связка с библиотекой элементов. В следующих статьях мы углубимся немного подробнее и рассмотрим разные сценарии работы над проектом.