Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

Рекламодатель:
ООО «С3Д Лабс»

ИНН 7715938849 ОГРН 1127747049209

1 - 2023

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 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):

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

Рис. 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).

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

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

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

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

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

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

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

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

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

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

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

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

Регистрация | Войти

Мы в телеграм:

Рекламодатель:
ООО «Нанософт разработка»

ИНН 7751031421 ОГРН 5167746333838

Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557