Разработчик и интегратор российского ПО
для управления жизненным циклом изделий
Тележка с продуктами   телефонная трубка   изображение конверта
Продукты Решения Услуги Загрузки и поддержка Купить Контакты О компании

Параметризация форматки в T-FLEX CAD

Автор: Андрей Ширшов, инженер-конструктор ООО НПЦ «Кропус-ПО»


Российский программный комплекс T-FLEX PLM

При создании чертежа детали или сборочной единицы конструктор создаёт и заполняет форматку, вписывая в неё среди прочих данных наименование и обозначение изделия. Файл изделия сохраняется на диск под определённым именем. Имя файла может быть любым, но лучше всего файлу дать имя в форме <обозначение> <наименование>.grb (или  — .grs для учебной версии). В таком случае файл изделия будет проще найти.

Таким образом, информация о наименовании и обозначении изделия содержится в двух местах файла: в форматке и в его имени. По умолчанию пользователь вручную отслеживает правильность сведений об изделии в обоих местах. Используя параметрические возможности T‑FLEX CAD, можно сделать так, чтобы форматка самостоятельно считывала обозначение и наименование изделия из имени файла и тем самым автоматически поддерживала актуальность сведений об изделии. Рассмотрим, как это сделать. Представленный ниже способ параметризации будет работать в любой версии T‑FLEX CAD.

Сначала выполним параметризацию для детали, а потом — для сборочной единицы. Создайте новый файл и сохраните его с некоторым именем в форме <обозначение> <наименование>.grb. Пусть файл будет называться АБВГД-01.02.03.01 Вал. Крайне важно, чтобы вначале шло обозначение изделия, потом ровно один пробел и после него — наименование изделия. В противном случае параметризация будет работать неправильно.

Рис. 1. Тестовый файл

Тестовый файл

Откроем редактор переменных, нажав клавишу V или иконку в ленте. В T‑FLEX CAD нет необходимости задумываться, какой текущий язык ввода у клавиатуры — русский или английский: комбинации горячих клавиш не зависят от раскладки клавиатуры. Просто нажимаем клавишу V, и открывается редактор переменных.

В окне редактора переменных выберите ПеременнаяНовая переменная или нажмите сочетание клавиш Ctrl+N. Появится диалоговое окно Параметры переменной.

Рис. 2. Редактор переменных и окно параметров переменной

Редактор переменных и окно параметров переменной

Что такое переменная? Представим, что есть некая деталь, которая представляет собой диск с отверстиями. У детали есть несколько исполнений, которые отличаются числом отверстий. В одном исполнении 4 отверстия, в другом — 6, в третьем — 8. То есть имеется число (параметр), которое обозначает количество отверстий. Обозначим его N — это и есть переменная, то есть имя, название или обозначение какого-либо числа или выражения.

В T‑FLEX CAD переменные бывают двух типов: вещественные и текстовые. Если результат выражения — число (неважно, целое или с дробной частью), то переменная вещественная. Если результатом выражения является текст, то переменная текстовая. В этой статье мы будем обрабатывать текст, поэтому все наши переменные будут текстовыми.

Имя текстовой переменной обязательно начинается со знака доллара $. Само имя может быть на любом языке — русском или английском. В программировании общепринято давать имена на английском. Мы же для упрощения понимания будем давать имена на русском.

Давайте создадим первую текстовую переменную $имя_файла. В поле Выражение впишите: tgetv("shortfilename") и нажмите кнопку ОК. Вы увидите, что значением выражения стало… название файла.

Рис. 3. Переменная <em>$имя_файла</em>

Переменная $имя_файла"

Что мы сделали? Мы использовали специальную функцию tgetv(). Эта функция позволяет извлекать различные сведения о файле T‑FLEX CAD: дата создания и последнего изменения чертежа, текущее время и многое другое. Выдаваемая информация зависит от названия параметра в двойных кавычках, который ей передаём, — "shortfilename" говорит функции, что нужно выдать имя файла. Если мы передадим "filename", то получим полный путь к файлу, включая его расширение .grb. С полным перечнем возможностей этой функции можно ознакомиться во встроенной справке T‑FLEX CAD или же в онлайн справке.

Итак, мы имеем строку "АБВГД-01.02.03.01 Вал", которая содержит обозначение и наименование изделия. Мы решили, что название файла будет начинаться строго с обозначения изделия. Также положим, что обозначение изделия не содержит пробелов, то есть является одним словом.

Создадим новую текстовую переменную $обозначение и в поле Выражение впишем: tword($имя_файла, 1). Функция tword() извлекает отдельное слово из строки. Функция принимает два аргумента: строку, из которой необходимо извлечь слово, и порядковый номер этого слова в строке. В нашем случае функция tword() извлекает первое слово из значения переменной $имя_файла — строки "АБВГД-01.02.03.01 Вал". Тем самым получаем обозначение изделия.

Рис. 4. Переменная $обозначение

Переменная $обозначение

Наконец, создадим переменную $наименование с выражением tpart($имя_файла, 19, 3). Получим наименование изделия. Функция tpart получает подстроку из строки и принимает три параметра: строка, из которой получаем подстроку, порядковый номер символа, с которого читаем подстроку, и количество символов, которые нужно прочесть. В нашем случае у первой буквы слова Вал порядковый номер 19 (пробелы считаются). Слово Вал состоит из трёх символов. Поэтому мы указали, что начать нужно с 19-го символа и взять три символа.

Рис. 5. Определение позиции буквы В слова Вал в тексте

Определение позиции буквы В слова Вал в тексте

Рис. 6. Переменная <em>$наименование</em> (итерация 1)

Переменная $наименование (итерация 1)

Этот код рабочий, но он сломается, если после изменения названия файла изменится число символов, составляющих обозначение или наименование файла. Чтобы этого не было, T‑FLEX CAD должен будет самостоятельно подсчитать позицию первого символа наименования изделия и сколько символов надо прочесть.

Позицию первого символа подсчитать легко: это длина строки $обозначение плюс два символа. Заменим число 19 на выражение strlen($обозначение) + 2, где strlen() — это функция, возвращающая длину строки. В итоге выражение переменной $обозначение примет вид: tpart($имя_файла, strlen($обозначение) + 2, 3).

Рис. 7. Подсчёт позиции первого символа

Подсчёт позиции первого символа

Рис. 8. Переменная <em>$наименование</em> (итерация 2)

Переменная $наименование (итерация 2)

Осталось научить T‑FLEX CAD определять, сколько символов составляет обозначение изделия. Для этого из длины всей строки $имя_файла нужно вычесть длину обозначения вместе с пробелом после него. Заменим тройку на выражение: strlen($имя_файла) - strlen($обозначение + " "). Во втором strlen() к строке $обозначение прибавили пробел (он между двойными кавычками). Итоговое выражение для переменной $обозначение: tpart($имя_файла, strlen($обозначение) + 2, strlen($имя_файла) - strlen($обозначение + " ")).

Рис. 9. Переменная <em>$наименование</em> (итерация 3)

Переменная $наименование (итерация 3)

Переменные работают, осталось связать их с форматкой. Создайте форматку. Прямо в форматке в поле обозначения детали впишите: {$обозначение} и кликните в стороне. Аналогично в поле наименования впишите: {$наименование}.

Для вставки переменной можно также использовать клавишу F8.

Рис. 10a. Связывание переменных с форматкой: переменная $обозначение

Рис. 10б. Связывание переменных с форматкой: переменная $наименование

Связывание переменных с форматкой:
а) переменная $обозначение, б) переменная $наименование

Давайте проверим, как это работает. Сохраните файл, закройте его и дайте файлу новое обозначение и наименование. Например, АБВГД-01.02.03.02 Вал укороченный. После этого снова откройте файл. Если всё сделано правильно, при открытии файла вы сразу увидите в форматке новые актуальные обозначение и наименование.

Осталось сделать файл шаблоном. В левом верхнем углу окна раскройте кнопку Сохранить и выберите Сохранить как прототип. Дайте прототипу название, например, Деталь и закройте файл. Чтобы увидеть изменения в окне приветствия, закройте его и откройте заново, нажав кнопку флажка в правом верхнем углу окна. Теперь при создании новой детали используйте этот шаблон, и форматка будет автоматически заполнять поля наименования и обозначения изделия.

Рис. 11. Сохранение файла как прототип

Сохранение файла как прототип

Выполним параметризацию для сборочной единицы. Создайте новый файл из шаблона сборочной единицы и скопируйте в этот файл переменные. Для этого откройте вначале файл с параметрической форматкой, откройте редактор переменных, кликните по имени самой верхней переменной, а затем, зажав клавишу Shift, кликните по имени нижней переменной. Так вы выберете все переменные. Затем выберите Правка → Копировать или просто нажмите Ctrl+C. Переменные скопированы в буфер обмена. Не закрывая файл с параметрической форматкой, откройте файл, где нужно вставить переменные. В нём откройте редактор переменных и нажмите CTRL+V (Правка → Вставить). Переменные скопированы.

В файле сборки переменная $обозначение уже содержит не только обозначение сборочной единицы, но и СБ на конце. Дважды кликните по названию переменной $обозначение в редакторе переменных и измените его имя на $обозначение_СБ.

Рис. 12. Переменные сборочной единицы до редактирования

Переменные сборочной единицы до редактирования

Создадим новую текстовую переменную $обозначение со следующим выражением: tpart($обозначение_СБ, 1, strlen($обозначение_СБ) - 2). Здесь всё просто: мы берём значение переменной $обозначение_СБ и читаем эту строку с первого символа, кроме последних двух. Чтобы отступить на два символа от конца строки, берём длину строки $обозначение_СБ и из длины строки вычитаем два символа. На выходе получаем обозначение сборочной единицы без СБ на конце.

Рис. 13. Переменные сборочной единицы после редактирования

Переменные сборочной единицы после редактирования

Но есть небольшая проблема: с форматкой связана переменная $обозначение_СБ. Чтобы это исправить, в редакторе переменных нажмите кнопку Показать скрытые переменные и найдите переменную $Наименование. Для этой переменной будет выражение "{$обозначение_СБ}". Исправьте выражение на "{$обозначение}", снова нажмите кнопку Показать скрытые переменные, а затем кнопку ОК. Теперь с форматкой связана нужная переменная $обозначение.

Рис. 14. Редактирование связи переменной с форматкой

Редактирование связи переменной с форматкой

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

Наконец, давайте усложним задачу. Пусть после обозначения файла в круглых скобках будет некоторое примечание. Например, АБВГД-01.02.01 Вал (вар.  2). И содержимое в круглых скобках не должно попасть в форматку.

Появление круглых скобок влияет только на подсчёт количества символов наименования изделия в переменной $наименование. Если скобки нет, то из длины всей строки $имя_файла вычитаем длину строки обозначения + символ пробела: strlen($имя_файла) - strlen($обозначение + " ").

Если круглая скобка есть, вначале необходимо вычислить позицию последнего символа наименования изделия. Это позиция круглой открывающей скобки минус два символа. Для поиска позиции скобки будем использовать функцию tfind(). Эта функция принимает два аргумента: строку, в которой ищем символ, и сам символ. В нашем случае это tfind($имя_файла, "(") - 2.

Итак, когда скобки нет, число символов наименования изделия определяется выражением strlen($имя_файла) - strlen($обозначение + " "). Когда скобка есть, выражение изменится на tfind($имя_файла, "(") - 2 - strlen($обозначение + " "). Остаётся научить T‑FLEX CAD выбирать, когда какое выражение использовать.

Общее выражение для подсчёта числа символов наименования изделия имеет вид: tfind($имя_файла, "(") > 0 ? tfind($имя_файла, "(") - 2  - strlen($обозначение + " ") : strlen($имя_файла) - strlen($обозначение + " "). Оно состоит из трёх частей:

  • Левая — всё, что идёт до знака вопроса;
  • Средняя — между знаком вопроса и двоеточием;
  • Правая — всё после двоеточия.

Рис. 15. Структура выражения для подсчёта символов наименования файла

Структура выражения для подсчёта символов наименования файла

Среднее выражение вычисляет число символов наименования изделия, когда в тексте присутствует открывающая скобка, правая — когда скобки нет.

Самое левое выражение проверяет, есть ли скобка в тексте. Если скобка есть, то функция tfind() найдёт её и вернёт некоторое положительное число большее нуля и неравенство будет выполнено. Выполнение неравенства приведёт к тому, что сработает только среднее выражение, правое выполняться не будет.

Если скобки нет, функция tfind() вернёт ноль, и условие в левой части будет нарушено. Это приведёт к тому, что выполнится только правое выражение, а среднее выполняться не будет.

Итоговое выражение для переменной $наименование для детали: tpart($имя_файла, strlen($обозначение) + 2, tfind($имя_файла, "(") > 0 ? tfind($имя_файла, "(") - 2 - strlen($обозначение + " ") : strlen($имя_файла) - strlen($обозначение + " "))

Аналогично итоговое выражение для переменной $наименование для сборочной единицы: tpart($имя_файла, strlen($обозначение_СБ) + 2, tfind($имя_файла, "(") > 0 ? tfind($имя_файла, "(") - 2 - strlen($обозначение_СБ + " ") : strlen($имя_файла) - strlen($обозначение_СБ + " "))

Всё то же самое, но вместо $обозначение используем $обозначение_СБ.

Выражение очень длинное. Если у вас T‑FLEX CAD 16 и выше, в редакторе переменных нажмите кнопку «Установки» и поставьте флажок «Многострочный режим». После этого вы сможете видеть всё выражение целиком.

Рис. 16. Включение многострочного режима в T‑FLEX CAD 17

Включение многострочного режима в T‑FLEX CAD 17

Сохраните повторно файлы детали и сборочной единицы как прототипы и согласитесь с предложением T‑FLEX CAD перезаписать файлы прототипов. После этого форматка новых файлов сможет учитывать комментарии в скобках.

Ниже показаны итоговые выражения переменных для параметрической форматки детали и сборочной единицы.

Рис. 17. Итоговые переменные для параметрической форматки детали

Итоговые переменные для параметрической форматки детали

Рис. 18. Итоговые переменные для параметрической форматки сборочной единицы

Итоговые переменные для параметрической форматки сборочной единицы

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

В заключение поговорим о случае, когда, возможно, придётся вернуть форматку к прежнему состоянию до параметризации. Самый надёжный способ это сделать — открыть редактор переменных, нажать в нём кнопку Показать скрытые переменные и найти переменные $Обозначение и $Наименование. Для этих переменных задайте выражение "" (просто пара двойных кавычек). Снова нажмите кнопку Показать скрытые переменные и затем кнопку ОК. После этого вы сможете писать в форматке любой текст, а созданные нами переменные для параметризации форматки — удалить.

Рис. 19. Как убрать параметризацию форматки

Как убрать параметризацию форматки

Дополнительно

Подробнее о
T‑FLEX CAD
Есть вопросы?
Напишите нам!


Поделиться ссылкой:

© 2023 ЗАО «Топ Системы»