Увійдіть в акаунт, щоб завантажувати матеріали та керувати підпискою.
Python в TechEditor: Інтеграція коду та автоматизація інженерних звітів
- Навчальні матеріали по роботі з TechEditor
- Перегляди: 735
Сучасний інженерний світ вимагає гнучкості. Стандартних програмних функцій для реалізації складних алгоритмів або специфічної обробки даних часто недостатньо. Саме тут на сцену виходить Python — мова програмування, що стала стандартом в аналізі даних та інженерії.
У цій статті ми розглянемо, як поєднати потужність бібліотек Python зі зручністю документування в TechEditor. Ви дізнаєтесь, як перетворити TechEditor на середовище виконання скриптів, як налаштувати обмін даними між програмою та кодом, і чому це відкриває широкі можливості для автоматизації ваших звітів. Вам не потрібно бути професійним програмістом — достатньо зрозуміти базові принципи, якими ми поділимося нижче.
Загальна концепція: як TechEditor працює з Python
Загалом, середовище TechEditor дозволяє:
- виконувати Python-код безпосередньо в проєкті TechEditor
- передавати значення змінних з Python до звіту, і навпаки
- оперувати одиницями вимірювання з урахуванням Python-коду
Ключовий принцип: У зв'язці "TechEditor – Python" саме TechEditor виступає сервером. Він ініціює запит, передає вхідні дані інтерпретатору Python, чекає на виконання коду і забирає результати назад у звіт. Це означає, що ви можете використовувати будь-які бібліотеки (NumPy, SciPy, Pandas), встановлені на вашому комп'ютері.
Примітка. Якщо ви передаєте файл “.tec”, що містить код на мові Python, то цей користувач зможе виконати його тільки за умови, що також має ті ж самі модулі та бібліотеки, що й ви.
Отже, чи потрібно модифікувати код, щоб він запустився в TechEditor? Ні, і це зручно! Якщо ваш код не містить помилок і успішно компілюється в середовищі Python, то він майже гарантовано буде виконаний в TechEditor. Ця стаття покаже, як за допомогою нескладних команд передати дані з вашого коду до основного звіту TechEditor, і навпаки.
Також зауважимо, що запуск Python-коду відкриває вам доступ до роботи з файлами та специфічними модулями, як-от API інших програм. За допомогою цього інструментарію ви можете, наприклад, звернутися до BIM-програми, витягнути з неї потрібні дані і передати їх в TechEditor для розрахунку або звітності.
Налаштування середовища
Як встановити Python
Щоб успішно працювати з мовою Python в TechEditor, перш за все потрібно встановити середовище Python на свій комп’ютер. Це можна зробити
- через інсталятор TechEditor — по завершенню установки поставте галочку Python і виконайте інструкції на екрані
- самостійно, з офіційного репозиторія

Зауваження щодо 32-бітної версії Python
Щоб Python-код нормально запускався в TechEditor, потрібна його 32-розрядна версія. Якщо ви вже маєте інстальований Python 64-bit, то Python 32-bit потрібно встановити також (разом вони працюватимуть нормально).
Інтеграція Python-коду з розрахунками в TechEditor
Розглянемо приклад, як виконати елементарний код на Python в програмі TechEditor.
Запустіть ТехЕдітор. Переконайтеся, що він запустився з одним порожнім звітом (якщо ні, додайте звіт вручну).
Додайте до проєкту ресурсний документ Python Script. Ресурс — звичайний текстовий документ, у якому розміщується код. Звіт поки не закривайте, він нам ще знадобиться.

В ресурсному документі напишемо просту функцію, яка обчислює подвоєну суму “x+y” на Python:
# Python Script
def func_double_sum(x, y):
double_sum = 2 * (x + y)
return double_sum
# finish
Сам по собі ресурсний документ виконати не вдастся — він призначений суто для зберігання вихідного коду. Щоб запустити цей код, потрібно звернутися до нього з основного документу. Тут нам і знадобиться звіт.
Перейдемо до вкладки зі звітом. Додамо до звіту спеціальний об’єкт Script Integration, що розміщений на вкладці Objects > Math / Script Integration.
У випадаючому переліку оберіть щойно створений ресурс Resource1, а в текстовому полі Output script запишіть свою функцію з числовими аргументами:

Натисність OK. Переконайтеся, що функція виконана коректно:

Передача математичних даних зі звіту до Python
Вище ми навели приклад Python-коду, який не залежить від нашого документу. Перепишемо тепер скрипт так, щоб він став допоміжним модулем для основних розрахунків.
Додамо на початок звіту блок вхідних даних. Це можна зробити за допомогою Math Object, Math LaTeX Object або інших об’єктів.
Використаємо Slider. Отже, маємо дві змінні x та y, що керуються повзунками:

Повернемося до ресурсу. Змінимо код на наступний:
# Python Script
import techeditor
def func_double_sum():
x = techeditor.math_translator_calc( "x" )
y = techeditor.math_translator_calc( "y" )
double_sum = 2 * (x + y)
return double_sum
# finish
Спочатку ми імпортуємо програмний модуль techeditor (про нього поговоримо нижче). З самої функції видаляємо аргументи — вони будуть братися безпосередньо з нашого звіту.
Далі маємо блок змінних x та y. Значення кожної змінної призначається спеціальною функцією math_translator_calc, в яку ми передаємо її назву (змінну, яку ми використали в слайдері).
Повернемося до об’єкту Python, що вже інтегрований в наш звіт. Двічі клацніть його для редагування і скоригуйте функцію відповідно до нового формату:

Натисніть OK. Переконайтеся, що рухаючи слайдери, ви впливаєте на обчислення у вашому Python-коді:

Функції модуля techeditor для Python
В останньому прикладі ми використали модуль techeditor. Він містить спеціальні функції, що дозволяють обмінюватися даними між TechEditor та Python:
- math_translator_add( cmd ) — додає строку cmd до математичної моделі документу;
- math_translator_calc( cmd ) — обчислює вираз cmd і вертає дійсне число (float) або строку текста (str);
- math_translator_clear() — очищає математичну модель документу.
Функція math_translator_add стає у пригоді, якщо треба додати змінну або функцію до звіту через Python. Наступний код додає до звіту змінну “delta=5.5”:
techeditor.math_translator_add( "delta=5.5" )
Функція math_translator_calc обчислює значення аргументу. Її ми вже розглянули вище.
Функція math_translator_clear видаляє усі змінні та функції звіту, тому її слід використовувати обережно.
Як працювати з одиницями вимірювання в Python
Мова програмування Python не має стандартних типів даних, які б дозволили інженерам оперувати фізичними величинами з довільними одиницями вимірювання. Проте, це робить TechEditor, отже тепер наша задача — коректно передати ці дані в Python.
Додамо одиниці вимірювання до змінних x та y. Нехай вони матимуть розмірність довжини і вимірюватимуться в міліметрах:

Якщо зараз подивитися у звіт, отримаємо таку картину:

Python сприйняв наші дані як звичайний текст. Це, по суті, правильно: спочатку він склеїв їх разом як текстові константи, а потім вивів на екран двічі (пам’ятаємо про коефіцієнт 2 у формулі).
Перепишемо код. Оскільки Python “не знає” про фізичні величини — нехай усі операції з ними виконує сам TechEditor, за допомогою функції math_translator_calc:
# Python Script
import techeditor
def func_double_sum():
double_sum = techeditor.math_translator_calc( "2*(x+y)" )
return double_sum
# finish
Тепер маємо правильний результат:

Але лишається питання: чи можна працювати зі змінними TechEditor всередині Python, щоб мати можливість обробляти фізичні величини як звичайні float-числа?
Це можливо, якщо “прибрати” одиниці вимірювання:
# Python Script
import techeditor
def func_double_sum():
x = techeditor.math_translator_calc( "empiric(x•{mm})" )
y = techeditor.math_translator_calc( "empiric(y•{mm})" )
double_sum = 2 * (x + y)
return double_sum
# finish
Тут ми використовуємо стандартну функцію TechEditor empiric(), яка відсікає одиниці фізичної величини і залишає тільки її числове значення. На виході маємо правильне число типу float (але попередньо приводимо все до міліметрів).
Передача даних з Python до звіту
TechEditor також дозволяє зворотну передачу даних — з Python-коду до звіту. Це може бути корисним, якщо ваш код виконує якісь специфічні обчислення, а до фінального звіту потрібно передати кілька ключових значень.
Наведемо приклад коду на Python, який генерує випадкове число в діапазоні 1..25 і передає його в змінну RANDOM_VALUE. TechEditor має ввести цю змінну в розрахунок і показати її дійсне та подвоєне значення в звіті.
Код в ресурсному документі:
# Python Script
import random
r = random.randint(1, 25)
# finish
Діємо через об’єкт Script integration, як і раніше. Обираємо Python-ресурс, а в полі Output script записуємо ім’я змінної з Python “r”.
Нижче, в полі Integrate with mathematical model, вказуємо ім’я цільової змінної — RANDOM_VALUE (це вже для TechEditor), а навпроти неї — базову змінну “r”. Натискаємо OK.
Подвоєне значення RANDOM_VALUE виводимо в звіті нижче, через об’єкт Math Object. Відтепер це повноцінна змінна і з нею можна працювати у звіті за звичайними правилами TechEditor (в тому числі, додати одиниці вимірювання і перетворити на фізичну величину):

Оновити випадкове значення тепер можна, натискаючи клавішу F5 (ручний перерахунок звіту).
Як бачимо, інтеграція Python перетворює TechEditor з інструменту для оформлення звітів на потужну обчислювальну платформу. Використовуючи об'єкт Script integration, ви можете:
- Виконати складні математичні операції, недоступні у стандартному редакторі.
- Автоматизувати рутинні процеси генерації даних.
- Працювати з зовнішніми API та файловими системами безпосередньо зі звіту.
Що далі? Спробуйте відтворити приклад з цієї статті у своєму проєкті. Якщо у вас виникнуть питання або ідеї щодо складніших сценаріїв — запрошуємо до обговорення в нашій спільноті в Discord. Також не забудьте переглянути готові рішення в Dystlab Store, які можуть значно прискорити вашу роботу.
Часті питання (FAQ)
Q: Чи можу я виконувати розрахунки на Python, а результати автоматично оформлювати в TechEditor?
A: Так. Для цього використовується об’єкт Script integration. Він дозволяє передавати змінні з Python у середовище TechEditor, де вони стають доступними для використання у формулах та тексті звіту.
Q: Чи можливо запустити генерацію звіту TechEditor автоматично через скрипт Python (зовні)?
A: Ні. Архітектура TechEditor передбачає, що програма працює як сервер (хост). Тобто TechEditor запускає Python-код всередині себе, а не навпаки.
Q: Чи підтримує Python в TechEditor роботу з фізичними величинами (одиницями вимірювання)?
A: Так, і це одна з ключових переваг. Використовуючи спеціалізований модуль techeditor, ви можете оперувати фізичними величинами, і програма коректно розпізнає розмірності при поверненні даних у звіт.
Q: Чи можна звернутися з Python до іншої програми?
A: Так, якщо ця програма має відповідний API.
Q: Я вже маю інстальований Python, але мій код не запускається в TechEditor. В чому проблема?
A: Ймовірно, на вашому комп’ютері відсутня 32-бітна версія Python (вона може бути інстальована паралельно з 64-бітною).
Віталій Артьомов
"Працюю, щоб зробити «Made in Ukraine» світовим знаком якості та стилю"
Керівник, співзасновник Dystlab, розробник TechEditor. Інженер, науковець, к.т.н. з понад 20-річним досвідом в аналізі конструкцій та автоматизації інженерних розрахунків. Консультую проєктні компанії в Україні, Європі, Канаді, США.
Обговорити рішення для бізнесу: Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. | +380504576819 (WhatsApp)

