Редактор шаблонов в Текле

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

Живет сам редактор по следующему пути:

..\TeklaStructures\19.0\nt\TplEd\tpled.exe

Для того чтобы не создавать спецификации и отчеты вручную, а доверить это занятие Текле и создан этот редактор. С его помощью мы создаем текстовые файлы с расширением .rpt, и .tpl — которые являются по сути инструкциями для Теклы, в соответствии с которыми программа выбирает из модели данные и предоставляет их пользователю в том или ином виде.

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

Звучит несколько запутанно, однако прием встречается практически повсеместно, позволяя задавать отдельным деталям дополнительные свойства в автоматическом режиме, не прибегая к программированию на C#. Изобретательность наших зарубежных товарищей, в использовании этого приема, порой достигает невообразимых вершин. При том, что ту же задачу обычно можно решить быстрее, проще и с меньшим расходом вычислительных ресурсов.

Работа в самом редакторе идет подобным же образом — вроде все понятно, но как-то уж больно запутанно. Так что цель этой статьи это разобрать не столько работу с редактором, сколько принципы механики формирования отчетов и графических шаблонов.

Ссылки по теме редактора шаблонов:

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

А тут можно кое, что узнать про мультиязычные шаблоны — собственно это следует из гайда по шаблонам теклы (см.выше)

 

Tekla templates — object.inp feat contentattributes.lst

Но начнем мы с того, что разберем один нюанс — у нас есть object.inp где мы объясняем Текле какие атрибуты должны иметь наши Текла объекты. Но при этом найти эти же объекты в списке доступных атрибутов, из редактора шаблонов — не так-то просто. Точнее, вы их там не найдете вовсе.

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

  • contentattributes.lst контейнер, в котором содержатся ссылки на файлы с актуальными описаниями атрибутов. Файлы добавляются с помощью инструкции — INCLUDE. Последовательность в которой файлы перечислины — являются порядком их загрузки.
  • contentattributes_global.lst  — Этот файл содержит атрибуты забитые в редактор на уровне компилятора или как-то так. И цитата из гайда —  Do not edit this file. — в смысле этот файл не трогать.   Просто знайте, что он есть, а еще в него можно заглядывать чтобы ознакомится со списком атрибутов доступных в текле по умолчанию.
  • contentattributes_userdefined.lst —  этот файл содержит атрибуты назначенные пользователем (UDA), такие же как те, что в object.inp. Чтобы в редакторе исопользовать ваши собственные атрибуты необходимо сохранить отдельно текущую версию этого файла (на всякий слуачй) и потом добавить в него свои атрибуты. Стоит обратить внимание что атрибут прописывается несколько раз. Сначала он объявляется в первой части файла. А потом задается элементам модели(балки, сборки, болты и т.п.), для которых вы хотите иметь доступ к этому атрибуту. Элементы  перечислены в contenttypes.lst.

Файлы можно найти в настройках используемого окружения (Например C:\TeklaStructures\19.0\Environments\middle_east\template\settings).

Зачем понадобились дополнительные файлы, спросит пытливый читатель? Что же, дело в том, что Template Editor — это вполне самостоятельная программа, которая к Текле какой-то особенной привязки не имеет. Назначение программы — создать текстовый файл с инструкцией в формате понятном для Теклы. Сама инструкция может быть чрезвычайно запутана и содержать в себе кроме указаний, какие данные запрашивать и выводить, еще и мини программы результаты выполнения которых могут быть использованы в качестве новых данных, либо в качестве аргументов для других программ, которые в свою очередь… и так далее и так далее.

Поэтому Template Editor не сильно интересуется тем какая именно схема пользовательских атрибутов (object.inp) будет использована для той или иной модели. Так что если вы хотите при создании шаблона использовать ваши атрибуты — имеет смысл добавить их в contentattributes_userdefined.lst. Хотя можно и не добавлять, просто приготовьтесь к тому, что редактор будет постоянно ругаться на некорректные аргументы, что не особенно страшно, но эта мелочь может мешать процессу отладки отчета.

Теперь собственно о шаблонах.

Редактор атрибутов Tekla Structures, разделы

 

Шаблон состоит их нескольких принципиальных разделов

  1. Заголовок шаблона (Header) — он создается один раз в процесс выполнения инструкции.
  2. Заголовок страницы — при достижении некоторого колличества строк в отчете, автоматически создается новая страница. Этот заголовок будет дублирован для каждой страницы отчета.
  3. Строки — это самый интересный раздел. С их помощью мы можем выводить интересующие нас параметры для интересующих нас объектов.Редактор Шаблонов, Tekla выводим объекты в отчет.

При добавлении строки необходимо указать тип объектов которые будут этой строкой выводиться.

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

Редактор атрибутов блока - свойства строк, Tekla Structures

Кроме того что при создании строки указывается тип объкта, можно дополнительно отфильтровать с помощью правил (Rule) а по сути небольших программ:

Tekla_strucutres-Template_editor-Row-rule

 

 

 

 

Функции контроля вывода строк

  • IsFirst ()
  • IsLast ()
  • Output ()
  • PageBreak ()
  • StepIn ()
  • StepOut ()
  • StepOver ()

Примеры

if (GetValue(«LENGTH»)>50 then Output() else StepOver() endif

 

Функции для получения значений атрибутов

GetValue ()
NextValue ()
PreviousValue ()
IsSet ()

Функции для работы с переменными

GetFieldFormula ()
CopyField  ()
Sum  ()
Total ()
Count  ()
All  ()

Функции для работы со строками

find  ()     пример:  find(«ab-cd»,»-«) — возвратить значение 2.
match  () пример: match(«abc», «abc») вернет TRUE;  match(«abc»,»b») вернет FALSE.

mid  () пример: mid(«abcd»,1,2) вернет «bc»

length  () 
reverse  ()   пример: reverse(«tekla») — вернет «alket»
getat  ()
setat  ()

 

Пример работы со строками:

mid(GetValue(«assembly_name»),0,find(GetValue(«assembly_name»),»-«))+»-» + GetValue(«ASSEMBLY_SERIAL_NUMBER») 

Функции для конверсии типов данных

int () — превращаем атрибут в целое число.
double () — дробное число
string ()  — строку
vwu (Value with unit) () — примеры: vwu(2.0,»rad») — вернет 114.59 градусов;  vwu(4.0,»in») — вернет 101.60 мм
format (102)

 

Математические функции

собственно они стандартные но на некоторых остановимся чуть подробнее

ceil () — возвращает округленное целое число в большую сторону — ceil(1.01) — вернет 2
floor () — наоборот — округляем в меньшую floor(1.99) — вернет 1
min () — min(12,3,6) = 3
max () — max(12,3,6) = 12
sqsum () — sqsum(60,70)  = 8500
ave () — ave(3,6,9) = 6  |  [(3+6+9)/3 = 6]
sqave () — sqave(81,36,9) = 2646   | [(81^2+36^2+9^2)/3 = 2646]

sqrt ()

round ()

Статья в процессе обновления. Но любые вопросы можно задавать прямо тут в комментариях. Извините за доставленные неудобства.

 

Вывести информацию только о пластинах (полосах, и прочих плоских элементах:

if (GetValue(«PROFILE_TYPE») == («B»)) then
Output()
else
StepOver()
endif

Толщина пакета деталей для болта

Запрос  GetValue(«BOLT_MATERIAL_LENGTH») —  вернет толщину пакета деталей который для которого используются болты.

Редактор шаблонов в Текле: 5 комментариев

  1. Роман 25.02.2017 at 21:58

    Здравствуйте, а не подскажите как менять фон в редакторе шаблонов, раньше был белый, сейчас стал чёрный. Версия 21.0.

  2. shtirlic 04.07.2017 at 15:23

    Добрый день! Читаю ваши статьи — очень полезные. Нахожу в них много нового для себя.
    Задался таким вопросом- можно ли создать таблицу таким образом, чтобы в зависимости от параметров увеличивалось не только количество строк, но и столбцов? К примеру по строкам идут сборки, а по столбцам пользовательский атрибут(дата к примеру)? Причем значения атрибута неизвестны с самого начала, а задаются руками в модели.

    • Вячеслав 10.07.2017 at 14:00

      Нет, ведомости расхода стали текловскими шаблонами не сделать…
      Вообще, это общая проблема для подобных программ (в ревите та же беда), видимо, для западных норм нехарактерны горизонтально-динамические таблицы.

      • DonJad 10.07.2017 at 15:44

        После появления реляционных баз данных и компьютеров горизонтально динамические таблицы мягко говоря потеряли актуальность.

        Но у нас, как и реснички их продолжают поддерживать, с упорством достойным лучшего применения.

        Но если очень нужен именно такой репорт можно сделать следующим образом
        — делаем обычный репорт,
        — открываем его в Экселе, и превращаем в Pivot Table
        — результат отправляем в Теклу

Добавить комментарий

Имя *
E-mail *
Сайт