Мартынец Игорь
03 февраля 2026
Перед тем как приступим к техническому аспекту данной темы, давайте вспомним основы самого решения. Model Studio – достаточно открытое решение компании «СиСофт Девелопмент», имеет много степеней свободы и позволяет пользователю до мельчайших подробностей подготовить основу для формирования схем. Конечно, имеются и свои границы. Элементарная часть условно-графических обозначений (УГО) схемы хранится в БД библиотеки компонентов.
И от ее содержимого библиотеки компонентов, от того, насколько тщательно она подготовлена, зависит результат – готовая технологическая схема, выходные документы-отчеты, задания в смежные отделы проектирования.
Цель данной статьи − показать, как получать данные и передавать их в параметрический текст условного графического обозначения, используя COM-объектную модель.
Новичкам, которые никогда не сталкивались с COM-моделью, будет сложно понять, что такое COM, если не объяснить на простом примере. Как сложно понять, что такое апельсин, пока его не попробуешь, так же и с COM: чтобы понять, что это такое, нужно его пробовать.
COM − это некая абстрактная объектно-ориентированная модель, которая описывает все свойства объекта и его методы. Если под свойствами апельсина мы понимаем его вкус, цвет, запах, форму и т.п., то свойства в COM дают нам понять или почувствовать сам предмет, например точку вставки предмета, слой, на котором он расположен, его цвет и т.п. Методы же позволяют нам определить, как мы можем взаимодействовать с апельсином, т.е. выполнять какие-то действия над предметом. Например, мы можем его почистить, разрезать, выдавить сок и т.п. Другими словами, методы (копирование, перенос, масштабирование, поворот и так далее) позволяют нам взаимодействовать с предметом.
Резюмируем: COM описывает свойства предмета или сущности и методы взаимодействия с предметом или сущностью.
Теперь, когда мы в общих чертах понимаем, что такое COM, можно приступить к рассказу, как он применяется в объектах технологической схемы.
Прежде чем мы окунемся в COM, давайте обозначим наши цели. Итак, перед нами стоит задача вставить деталь-ответвление (тройник переходной) на трубопроводную технологическую линию с возможностью вывода информации по диаметру на магистральном участке тройника и на переходном участке.
За основу возьмем уже имеющееся графическое определение тройника в поставляемой производителем базе данных.
Нам понадобится новый пустой чертеж, созданный по шаблону nMStudio_GOST.dwt, в котором мы будем проводить все действия. Поэтому, запустив с рабочего стола ПО «Model Studio Технологические схемы», на ленте «Model Studio CS» выберите команду «Применить шаблон» и выберите nMStudio_GOST.dwt.
Это необходим сделать, чтобы подтянуть в текущий пустой документ, созданный по дефолтному шаблону, настройки стилей (текстовых, выносок, размерных), применяемых в стандартной БД.
Далее начертите в произвольном месте трубопроводную линию (лента «Технологические схемы -> Трубопроводная линия»). При черчении задайте «Диаметр условный (Ду)» = 80 и Диаметр трубопровода = 89.
Остальные параметры в рамках задачи настройки нас не интересуют, поэтому не будем обращать на них внимание.
Находясь на панели инструментов «Model Studio CS» на вкладке Менеджера библиотек, потащите и бросьте в чертеж УГО «Тройник переходной», как показано на скриншоте ниже
Расположите его в удобном месте на линии
Готово! Теперь можно приступить к следующей части.
Перейдите на ленту «Model Studio CS» и выполните команду «Редактировать оборудование»
В редакторе параметрического оборудования мы имеем инструментарий, который позволит выполнить внешний образ элемента при помощи 2D-примитивов. Нам понадобится примитив «Текстовое поле». Чтобы вставить текстовое поле, щелкаем по корневому элементу дерева параметрического элемента «2D». В появившемся контекстном меню выберите «2D Примитив -> Текстовое поле».
Добавляется текстовое поле с именем TEXTBOX в окне редактора параметрического оборудования.
Сразу зададим геометрические параметры и расположение текстового поля:

В свойствах тройника отсутствует параметр, отвечающий за условный диаметр магистрали PART_PIPE_DN. Если добавить этот параметр в свойства компонента, то автоматически этот параметр будет заполнен из данных сегмента линии.
|
*Примечание. Мы не будем добавлять параметр PART_PIPE_DN, так как необходимо получить информацию о диаметре через связь тройника с сегментом. |
В параметре «Текст» нажмите на кнопку с троеточием.
В мастере функций можно приступить к созданию формулы. Формулу будем создавать при помощи объектно-ориентированной модели COM.
Вернемся к нашему примеру. Нажмите на кнопку «Добавить запрос к COM»
Используем Фильтр и выберем пункт «Элементы схем» − этот пункт содержит только те СОМ, которые относятся к объектам схемы
В отфильтрованном списке разверните объект IMSSymbol
Дважды щелкните по свойству SegmentData. Обратите внимание на то, что нижняя строка заполнилась.
Далее выберите «Фильтр –> Базовые объекты Model Studio CS». Разверните объект IElement и дважды щелкните по свойству Parameters (при этом автоматически свойство добавится в нижнюю строку и перейдет к объекту IParameters) и дважды щелкните по нему.
Строка будет иметь следующее наполнение: object.SegmentData.Parameters. Далее дважды щелкните по методу Item
при этом автоматически метод добавится в нижнюю строку и перейдет к объекту IParameter. Строка будет иметь вид: object.SegmentData.Parameters.Item([Index])
Дважды щелкните по Value
Строка будет иметь вид: object.SegmentData.Parameters.Item([Index]).Value
Нажмите на кнопку «Ок». Построение строки завершено.
В мастере функций в методе Item вместо [Index] необходимо указать в кавычках имя параметра "PART_PIPE_DN".
Итоговая функция имеет теперь вид:
object.SegmentData.Parameters.Item("PART_PIPE_DN").Value
Нажмите в мастере функций «Ок»
Теперь значение Текст = 80
Можно было бы закончить на этом, но перед нами предстоит еще провести испытание на различного рода события, в которых может участвовать тройник. При этом поведение текста нам будет не совсем понятным и нужно будет контролировать поведение текста в зависимости от тех или иных событий. Например, нужно учесть (1) событие, когда меняется направление потока, (2) событие, когда тройник перемещается/размещается вдоль горизонтального и вертикального участка линии, (3) событие, когда тройник нужно развернуть в противоположную сторону.
Выделите корень параметрического элемента, щелкнув по 2D. Это необходимо, чтобы снять выделение зеленым цветом TEXTBOX:
Далее в чертеже выделим тройник и при помощи ручки поворота
перевернем объект опцией «Перевёрнут»
Наблюдаем, что текст вместе с тройником переворачивается вверх тормашками, чего допустить никак нельзя.
Реагирование на событие переворота
Откроем окно «Свойства» (CTRL+1). Переворот фиксируется в свойстве «Ориентация»:
Вставляем в командную строку nanoCAD выражение
(progn (vl-load-com) (vlax-dump-Object (vlax-ename->vla-object (car (entsel)))))
далее нажимаем Enter, и в ходе выполнения выбираем тройник. В командной строке (клавиша F2) будут перечислены все свойства тройника, как показано на скриншоте ниже.
Здесь свойство ReversedOrientation и есть Ориентация.
Будем использовать это свойство для анализа и переворачивания текста. Также нам понадобится группа как некий контейнер, при помощи которой будем переворачивать текст.
Создаем группу в параметрическом редакторе.
Выполним команду «Редактировать оборудование» с ленты Model Studio CS
В ходе действия команды выделите тройник.
В окне параметризатора выберите 2D и, щелкнув ПКМ, вызовите контекстное меню
В созданную группу перенесите текст TEXTBOX, как показано на картинке ниже:
Выделите текст TEXTBOX и установите параметрические свойства текста «Базовая точка» - «Y координата» = -1.5, чтобы текст оказался по центру тройника
Далее все манипуляции будем проводить с созданной группой.
Чтобы наш текст развернулся и развернулись все входящие в группу элементы, если такие есть, нам необходимо управлять направлением ориентации этой группы. Т.е. мы должны менять направление ориентации группы, как только меняется свойство ReversedOrientation. Соответственно выполним следующее:
Выделите группу GROUP. В параметрах группы выделите ячейку «Направление» - «Х координата» -> нажмите на кнопку с троеточием
В окне «Ориентация в пространстве» выделите ячейку «Направление» - «Х координата» -> нажмите на кнопку с троеточием
В окне «Мастер функций» установите следующую формулу:
if(object.ReversedOrientation,-1,1)
Эту формулу следует читать так: если свойство Ориентация = Перевернуто, то направление текста по ординате X переворачиваем; оно равно -1. Если Ориентация = По умолчанию, то значение направление текста по ординате X равно 1.
Нажмите на кнопку Ок в «Мастере функций», далее на кнопку ОК в окне «Ориентация в пространстве». Текст перевернется. «Направление» - «Х координата» теперь имеет значение -1
Обратите внимание, что теперь напротив «X направление» появился значок функции. Это говорит о том, что параметр вычисляется по формуле
Теперь текст всегда будет нужной нам ориентации, как бы мы ни меняли направление.
Теперь еще один момент. Сместим группу относительно центра тройник, задав статическое значение «Базовая точка» - «Y координата» = 2 (можно задать другое значение в зависимости от высоты текста: высота текста, деленная пополам, плюс расстояние на зазор между текстом и тройником).
Теперь текст сместился от центра тройника
Следующий шаг – это проверка поведения при смене направления потока линии.
Выделите тройник.
Убедитесь, что в свойствах тройника установлено значение «Да» в свойстве «Ориентировать по связи». Как только вы устанавливаете «Да», то автоматически появляется еще одно свойство «Ориентировать по потоку» со значением «Да».
В принципе, можно отключить ориентацию по потоку и тогда можно не проводить следующие действия. Но пользователь не всегда может помнить, что нужно сделать с отключением ориентации по потоку, поэтому все равно придется контролировать это свойство через параметры.
Когда вы выполняете команду «Изменить направление» на ленте «Технологические схемы»,
в свойствах сегмента линии появляется параметр FLOW_DIRECTION («Направление потока», см скриншот ниже). Текст будет снова перевернутым как на горизонтальном, так и на вертикальном участке. Чтобы посмотреть, как работает на горизонтальном участке, самостоятельно его дочертите и перенесите тройник на этот сегмент.
Чтобы исправить ситуацию, нам поможет флип с направлением по Z-координате [ИМ4] для нашей группы GROUP
Поэтому выделите группу GROUP в редакторе параметрического оборудования и в «Ориентация» - «Z координата» нажмите на кнопку с троеточием
В окне «Ориентация в пространстве» и в «Ориентация» - «Z координата» нажмите на кнопку с троеточием
В мастере функций укажите следующую формулу:
if(object.SegmentData.Parameters("FLOW_DIRECTION").value="1",
-1*(object.SegDirection[0]+object.SegDirection[1]),
object.SegDirection[0]+object.SegDirection[1]
)
При помощи выражения object.SegmentData.Parameters("FLOW_DIRECTION").value считываем значение из данных сегмента, к которому прикреплен тройник. Выражение object.SegDirection[0] возвращает значение ординаты X направления текущего сегмента, а выражение object.SegDirection[1] возвращает значение ординаты Y направления текущего сегмента.
Мы используем [ИМ5] сумму значений двух ординат направления сегмента, чтобы определить разворот нашего текста. Если сегменты не ортогональные, то нужно будет задействовать тригонометрические функции. Для упрощенного понимания оставим все как есть.
Проверим работу, нажав везде на кнопку Ок.
На этом мы закончим этот обзор. Не забудьте добавить в БД Менеджера библиотек созданный вами элемент.
В завершение хочу сказать, что благодаря этому краткому обзору вы смогли ознакомиться с параметризатором, ознакомиться с работой в COM и учитывать особенности работы с условными графическими обозначениями их свойств в решении Model Studio CS Технологические схемы.
В следующем обзоре мы познакомимся с интересной темой: передача переходного диаметра в тройник из присоединенной к узлу тройника технологической линии. Вы получите опыт и понимание того, как достучаться до COM-данных технологической линии, присоединенной к узлу условно-графического отображения тройника.
Следите за нашими публикациями!
С уважением, Игорь Мартынец
Ведущий специалист САПР
АО «Бюро САПР»
2026 год
Ведущий инженер САПР
Образование:
Херсонский индустриальный институт (создан на базе Одесского технологического института). Квалификация: инженер.
Опыт и карьерный путь:
Начал карьеру в проектном институте АО «Галургия» (Пермь), ведущем НИИ и проектном центре в области добычи и переработки горно-химического сырья. Получил бесценный опыт разработки проектной документации.
Работал в проектно-конструкторском отделе ОАО «Лукойл ПермНефтеОргСинтез», что позволило понять масштаб и сложность многопроцессных производств и необходимость совершенствования методов управления инженерной документацией.
С 2001 года полностью сосредоточился на области САПР и автоматизации проектирования, отвечая на запросы цифровизации в нефтяной и химической промышленности.
Сегодня продолжаю развиваться в области автоматизации инженерной деятельности, уделяя особое внимание современным подходам к разработке сложных проектов, интеграции платформ и трансформации процессов в эпоху цифровизации промышленности.