У-4 - это номер узла;
1, 3, 4, 5, 6, 1, 2 - позиции.
Нам необходимо в Outfitting Draft научиться вытаскивать из этого атрибута отдельные строки для создания метки (LABS) и генерировать метку автоматически в зависимости от номера узла, так как каждый узел имеет свое количество позиций.
Что мы сделали: создали библиотеку меток типа SYTM, в которой создали на каждый узел свою SYTM.
С помощью макроса мы разбиваем строку атрибута :CTPOS по символу '#' на подстроки и загоняем в массив.
Затем командами BEFORE и AFTER в цикле обрабатываем каждый элемент массива и в зависимости от номера узла (У-4, У-87 и т. д.) создаем SLAB на чертеже для выделенного элемента из нужного нам SYTM.
Проблема в том, что нам необходимо также автоматически расставить позиции в этой метке, а ограниченный синтаксис команд Intelligent Texts, таких как #:CTPOS(P_5:)(P_:1) и т.д. не позволяет это сделать, так как в атрибуте :CTPOS во всех элементах разное количество символов и они каждый раз на новом месте.
Мы пробовали задавать в тексте меток глобальные переменные, которым из макроса присваивалось бы значение номера узла, но после сохранения меток SYTM вместо текста вида $!!POS1 записывается само значение этой переменной.
Можно в макросе номера позиций проставлять в кружки как текстовый примитив, но мы хотим, чтобы метка сохранялась как одно целое, а не как метка с пустыми кружками и налепленными поверх них текстовыми примитивами, которые неудобно передвигать по полю чертежа.
А почему бы не формировать строчку "#:ctpos(p_5:)(p_:1)" во время работы макроса, индивидуально для каждой метки, записываем её например в аттрибут atext метки, а в шаблоне метки, пишем #atext