Генерация меток slab с текстовыми переменны

 
  • Здравствуйте!

    У нашего оборудования есть специальный атрибут :CTPOS. В нем записываются строки вида:

    У-4_1_3_4_5_6_1_2#У-7_1_3_4_5_6_6_4_4#У-91_1_3_4_5_6_6_4
    У-87_1_3_4_5_6_7_8_9
    У-13_1_3_4_5_6_13_11_509#У-35_509

    Пояснение на примере.
    Имеем: У-4_1_3_4_5_6_1_2

    У-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