¬аше окно в мир —јѕ–
Ќовости —татьи јвторы —обыти€ ¬акансии Ёнциклопеди€ –екламодател€м
—татьи

23 €нвар€ 2023

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

јндрей Ўиршов, инженер-конструктор ќќќ Ќѕ÷ Ђ ропус-ѕќї

јндрей Ўиршов

ќригинал публикации на сайте компании Ђ“оп —истемыї
ѕараметризаци€ форматки

ѕри создании чертежа детали или сборочной единицы конструктор создаЄт и заполн€ет форматку, вписыва€ в неЄ среди прочих данных наименование и обозначение издели€. ‘айл издели€ сохран€етс€ на диск под определЄнным именем. »м€ файла может быть любым, но лучше всего файлу дать им€ в форме
  <обозначение> <наименование>.grb (или  — .grs дл€ учебной версии).
¬ таком случае файл издели€ будет проще найти.

“аким образом, информаци€ о наименовании и обозначении издели€ содержитс€ в двух местах файла: в форматке и в его имени. ѕо умолчанию пользователь вручную отслеживает правильность сведений об изделии в обоих местах. »спользу€ параметрические возможности T‑FLEX CAD, можно сделать так, чтобы форматка самосто€тельно считывала обозначение и наименование издели€ из имени файла и тем самым автоматически поддерживала актуальность сведений об изделии. –ассмотрим, как это сделать. ѕредставленный ниже способ параметризации будет работать в любой версии T‑FLEX CAD.

—начала выполним параметризацию дл€ детали, а потом — дл€ сборочной единицы.

—оздайте новый файл и сохраните его с некоторым именем в форме <обозначение> <наименование>.grb. ѕусть файл будет называтьс€ јЅ¬√ƒ-01.02.03.01 ¬ал.  райне важно, чтобы вначале шло обозначение издели€, потом ровно один пробел и после него — наименование издели€. ¬ противном случае параметризаци€ будет работать неправильно (рис. 1).

ѕараметризаци€ форматки

–ис. 1. “естовый файл

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

¬ окне редактора переменных выберите ѕеременна€Ќова€ переменна€ или нажмите сочетание клавиш Ctrl+N. ѕо€витс€ диалоговое окно ѕараметры переменной (рис. 2).

ѕараметризаци€ форматки

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

„то такое переменна€? ѕредставим, что есть нека€ деталь, котора€ представл€ет собой диск с отверсти€ми. ” детали есть несколько исполнений, которые отличаютс€ числом отверстий. ¬ одном исполнении 4 отверсти€, в другом — 6, в третьем — 8. “о есть имеетс€ число (параметр), которое обозначает количество отверстий. ќбозначим его N — это и есть переменна€, то есть им€, название или обозначение какого-либо числа или выражени€.

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

»м€ текстовой переменной об€зательно начинаетс€ со знака доллара $. —амо им€ может быть на любом €зыке — русском или английском. ¬ программировании общеприн€то давать имена на английском. ћы же дл€ упрощени€ понимани€ будем давать имена на русском.

ƒавайте создадим первую текстовую переменную $им€_файла. ¬ поле ¬ыражение впишите: tgetv("shortfilename") и нажмите кнопку ќ . ¬ы увидите, что значением выражени€ стало… название файла (рис. 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. ѕеременна€ $обозначение

Ќаконец, создадим переменную $наименование с выражением tpart($им€_файла, 19, 3). ѕолучим наименование издели€. ‘ункци€ tpart получает подстроку из строки и принимает три параметра: строку, из которой получаем подстроку, пор€дковый номер символа, с которого читаем подстроку, и количество символов, которые нужно прочесть. ¬ нашем случае у первой буквы слова ¬ал пор€дковый номер 19 (пробелы считаютс€). —лово ¬ал состоит из трЄх символов. ѕоэтому мы указали, что начать нужно с 19-го символа и вз€ть три символа (рис. 5 и 6).

ѕараметризаци€ форматки

–ис. 5. ќпределение позиции буквы ¬ слова ¬ал в тексте

ѕараметризаци€ форматки

–ис. 6. ѕеременна€ $наименование (итераци€ 1)

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

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

ѕараметризаци€ форматки

–ис. 7. ѕодсчЄт позиции первого символа

ѕараметризаци€ форматки

–ис. 8. ѕеременна€ $наименование (итераци€ 2)

ќсталось научить T‑FLEX CAD определ€ть, сколько символов составл€ет обозначение издели€. ƒл€ этого из длины всей строки $им€_файла нужно вычесть длину обозначени€ вместе с пробелом после него. «аменим число 3 на выражение:
   strlen($им€_файла) - strlen($обозначение + " ").

¬о втором strlen() к строке $обозначение прибавили пробел (он между двойными кавычками). »тоговое выражение дл€ переменной $обозначение (рис. 9):
   tpart($им€_файла, strlen($обозначение) + 2, strlen($им€_файла) - strlen($обозначение + " ")).

ѕараметризаци€ форматки

–ис. 9. ѕеременна€ $наименование (итераци€ 3)

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

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

ѕараметризаци€ форматки

ѕараметризаци€ форматки

–ис. 10. —в€зывание переменных с форматкой:
а) переменна€ $обозначение, б) переменна€ $наименование

ƒавайте проверим, как это работает. —охраните файл, закройте его и дайте файлу новое обозначение и наименование. Ќапример, јЅ¬√ƒ-01.02.03.02 ¬ал укороченный. ѕосле этого снова откройте файл. ≈сли всЄ сделано правильно, при открытии файла вы сразу увидите в форматке новые актуальные обозначение и наименование.

ќсталось сделать файл шаблоном. ¬ левом верхнем углу окна раскройте кнопку —охранить и выберите —охранить как прототип. ƒайте прототипу название, например, ƒеталь и закройте файл. „тобы увидеть изменени€ в окне приветстви€, закройте его и откройте заново, нажав кнопку флажка в правом верхнем углу окна. “еперь при создании новой детали используйте этот шаблон, и форматка будет автоматически заполн€ть пол€ наименовани€ и обозначени€ издели€ (рис. 11).

ѕараметризаци€ форматки

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

¬ыполним параметризацию дл€ сборочной единицы.

—оздайте новый файл из шаблона сборочной единицы и скопируйте в этот файл переменные. ƒл€ этого откройте вначале файл с параметрической форматкой, откройте редактор переменных, кликните по имени самой верхней переменной, а затем, зажав клавишу Shift, кликните по имени нижней переменной. “ак вы выберете все переменные. «атем выберите ѕравка →  опировать или просто нажмите Ctrl+C. ѕеременные скопированы в буфер обмена. Ќе закрыва€ файл с параметрической форматкой, откройте файл, где нужно вставить переменные. ¬ нЄм откройте редактор переменных и нажмите CTRL+V (ѕравка → ¬ставить). ѕеременные скопированы.

¬ файле сборки переменна€ $обозначение уже содержит не только обозначение сборочной единицы, но и —Ѕ на конце. ƒважды кликните по названию переменной $обозначение в редакторе переменных и измените ее им€ на $обозначение_—Ѕ (рис. 12).

ѕараметризаци€ форматки

–ис. 12. ѕеременные сборочной единицы до редактировани€

—оздадим новую текстовую переменную $обозначение со следующим выражением:
   tpart($обозначение_—Ѕ, 1, strlen($обозначение_—Ѕ) - 2).

«десь всЄ просто: мы берЄм значение переменной $обозначение_—Ѕ и читаем эту строку с первого символа, кроме последних двух. „тобы отступить на два символа от конца строки, берЄм длину строки $обозначение_—Ѕ и из длины строки вычитаем два символа. Ќа выходе получаем обозначение сборочной единицы без —Ѕ на конце (рис. 13).

ѕараметризаци€ форматки

–ис. 13. ѕеременные сборочной единицы после редактировани€

Ќо есть небольша€ проблема: с форматкой св€зана переменна€ $обозначение_—Ѕ. „тобы это исправить, в редакторе переменных нажмите кнопку ѕоказать скрытые переменные и найдите переменную $ќбозначение. Ётой переменной соответствует выражение {$обозначение_—Ѕ}. »справьте выражение на {$обозначение}, снова нажмите кнопку ѕоказать скрытые переменные, а затем кнопку ќ . “еперь с форматкой св€зана нужна€ переменна€ $обозначение (рис. 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. —труктура выражени€ дл€ подсчЄта символов наименовани€ файла

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

—амое левое выражение провер€ет, есть ли скобка в тексте. ≈сли скобка есть, функци€ 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

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

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

ѕараметризаци€ форматки

–ис. 17. »тоговые переменные дл€ параметрической форматки детали

ѕараметризаци€ форматки

–ис. 18. »тоговые переменные дл€ параметрической форматки сборочной единицы

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

¬ заключение поговорим о случае, когда, возможно, придЄтс€ вернуть форматку к прежнему состо€нию до параметризации. —амый надЄжный способ это сделать — открыть редактор переменных, нажать в нЄм кнопку ѕоказать скрытые переменные и найти переменные $ќбозначение и $Ќаименование. ƒл€ этих переменных задайте выражение "" (просто пара двойных кавычек). —нова нажмите кнопку ѕоказать скрытые переменные и затем кнопку ќ . ѕосле этого вы сможете писать в форматке любой текст, а созданные нами переменные дл€ параметризации форматки — удалить (рис. 19).

ѕараметризаци€ форматки



¬акансии:

јктуальное обсуждение

RSS-лента комментариев

-->

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: Ќадо ли жалеть свои мозги?
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

Ќадо ли жалеть свои мозги? — ƒавид Ћевин (1 июн€ 2023)
isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2023 √руппа компаний «Ћ≈ƒј—»

ѕерепечатка материалов сайта допускаетс€ с согласи€ редакции, ссылка на isicad.ru об€зательна.
¬ы можете обратитьс€ к нам по адресу info@isicad.ru.