СЕРИЯ АВТОМАТИЗАЦИИ PLAXIS

Начните использовать Python для автоматизации PLAXIS

Пошаговое руководство по автоматизации

PLAXIS — это программное обеспечение для моделирования методом конечных элементов, с которым инженеры-геотехники наверняка столкнутся на определенном этапе своей карьеры. Моделирование сложных геотехнических задач в PLAXIS может быть сложной задачей и представляет собой трудоемкую работу по моделированию, часто включающую повторяющиеся задачи.

Как инженеры, мы всегда хотим автоматизировать скучное и спроектировать крутое.

В этом контексте программирование, а точнее Python, является лучшим доступным инструментом для автоматизации повторяющихся задач.

Python существует уже много лет, но только недавно получил признание более широкого сообщества из-за простоты использования, большого количества приложений и поддержки огромными сообществами разработчиков открытого исходного кода. Это отличный язык программирования для науки о данных, автоматизации рабочих процессов и веб-разработки.

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



Цель

Несмотря на то, что PLAXIS Python API разрабатывался уже давно, по-прежнему не хватает подробных руководств по внедрению этой техники инженерами-геотехниками.

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

Отказ от ответственности

Было много платных курсов, которые учат инженеров использовать встроенный редактор Python в PLAXIS, который, я согласен, довольно хорошо разработан. Но лично я предпочитаю использовать свою собственную среду программирования для написания сценариев по следующим трем причинам:

  1. Хорошо разработанная интегрированная среда разработки (IDE) более удобна для кодирования, поскольку она улавливает неправильный синтаксис и выявляет ошибки, что крайне важно для начинающих.
  2. Встроенный редактор Python менее гибок для импорта пользовательских модулей. В будущем, когда у вас будет больше опыта программирования, вы обнаружите, что нам нужно много времени, чтобы отделить функции, которые мы пишем в виде модуля, что делает наш скрипт менее загруженным. Этим можно хорошо управлять в IDE.
  3. Мы не хотим хранить сценарии для себя, а хотим поделиться ими с коллегами. IDE обеспечивает идеальную интеграцию с платформами для обмена кодом, такими как GitHub, GitLab и т. д.

Конечная цель этого руководства — показать вам, как использовать скрипт Python для создания вашего первого структурного элемента в PLAXIS 2D. Это можно сделать с помощью следующих четырех шагов.

  1. Установить интегрированную среду разработки (IDE)
  2. Активировать среду PLAXIS
  3. Подключиться к PLAXIS API
  4. Создайте первый элемент пластины

Наконец, в этом руководстве предполагается, что читатели используют ОС Windows и у них установлен PLAXIS 2D V22. Итак, приступим!

Шаг 1. Установите интегрированную среду разработки (IDE)

IDE — это программное приложение, которое предоставляет комплексные средства для программирования, обычно состоящие из редактора исходного кода, средств автоматизации сборки и отладчика.

Существуют различные варианты IDE, такие как Visual Studio Code (VS Code), PyCharm, Jupyter Notebook и т. д., которые не отличаются по функциональности и полностью зависят от предпочтений пользователей при выборе IDE. Эта инструкция демонстрирует установку VS Code.

Установите Visual Studio Code (VS Code) со следующей инструкцией:

Загрузите последний код VS для Windows: https://code.visualstudio.com/download

Следуйте указаниям мастера установки и проверьте параметры, как показано ниже.

После установки откройте VS Code на рабочем столе. Вы увидите следующий интерфейс.

Добавьте свою рабочую папку в Проводник, щелкнув правой кнопкой мыши Проводник -> Добавить папку на рабочее место…

Теперь вы настроили код VS и готовы начать кодирование!

Шаг 2: Активируйте среду PLAXIS

После того, как ваша виртуальная среда и IDE настроены, вы можете начать писать скрипт Python в IDE.

Чтобы написать скрипт Python, вы должны следовать следующему процессу:

  • Откройте IDE-терминал
  • Прямо в предпочитаемую рабочую папку (в терминале)
  • Активировать среду PLAXIS Python
  • Создайте файл .py в папке

Откройте IDE-терминал

Щелкните значки «предупреждения» в нижней строке меню:

Вы увидите окно Shell:

Перейдите на вкладку «Терминал» в верхней строке меню, как указано. Вы должны увидеть, что находитесь в рабочей папке.

Прямо в предпочитаемую рабочую папку

Если это не правильная рабочая папка. Вы можете ввести:

cd ‹путь к вашей рабочей папке›

Например, сейчас я нахожусь в папке «Текущие проекты» и хочу найти 00_Digitalisation-›01_Python-FE. Путь к папке:

C:\Users\phtsang\Desktop\Current_Projects\00_Digitalisation\01_Python-FE

В IDE-терминале:

Должно отображаться правильное имя папки, как показано выше.

Активировать среду PLAXIS Python

Чтобы активировать среду PLAXIS Python, нам нужно будет выбрать встроенный интерпретатор Python PLAXIS, который содержит все функции, необходимые для работы PLAXIS. Интерпретатор Python устанавливается автоматически при установке PLAXIS.

Расположение интерпретатора Python:

C:\ProgramData\Bentley\Geotechnical\PLAXIS Python Distribution V2\python\python.exe

Чтобы выбрать конкретную среду, используйте команду Python: Select Interpreter из палитры команд (Ctrl+Shift+P). Нажмите «Ввести путь к интерпретатору…», затем найдите файл python.exe в указанном выше месте.

На вкладке «Терминал» выберите «Командная строка» в раскрывающемся списке, как показано ниже.

Вы должны увидеть (PLAXIS) перед рабочим каталогом, если среда успешно активирована.

Создайте файл .py в папке

Щелкните значок «Новый файл»:

Создайте файл .py, как показано ниже:

В следующем разделе мы начнем подключаться к PLAXIS API.

Шаг 3: Подключите PLAXIS API

Сначала я создам пустой скрипт Python и назову его «create_plate.py», как показано ниже.

После этого мы записываем приведенный ниже код в файл python. Здесь делают три вещи:

  1. Импорт модулей из среды PLAXIS Python. Чтобы работать с PLAXIS со скриптом Python, нам нужно использовать функции (более известные как методы с точки зрения программирования), разработанные PLAXIS. Модуль, который мы импортируем, называется «plxscripting.east».
  2. Откройте настольное приложение PLAXIS 2D. Путь Plaxis2DXInput.exe должен быть таким же, как указано ниже, если принят путь установки по умолчанию. Если это не так, просто измените путь на правильный каталог. Номер порта и пароль можно оставить по умолчанию, но вы можете выбрать любые значения.
  3. Запустите сервер сценариев PLAXIS с предварительно определенным номером порта и паролем.
from plxscripting.easy import *
import subprocess, time

PLAXIS_PATH = r'C:\Program Files\Bentley\Geotechnical\PLAXIS 2D CONNECT Edition V22\\Plaxis2DXInput.exe'  # Specify PLAXIS path on server.

PORT_i = 10000  # Define a port number.
PORT_o = 10001

PASSWORD = 'SxDBR<TYKRAX834~'  # Define a password (up to user choice).

subprocess.Popen([PLAXIS_PATH, f'--AppServerPassword={PASSWORD}', f'--AppServerPort={PORT_i}'], shell=False)  # Start the PLAXIS remote scripting service.

time.sleep(5)  # Wait for PLAXIS to boot before sending commands to the scripting service.


# Start the scripting server.

s_i, g_i = new_server('localhost', PORT_i, password=PASSWORD)
s_o, g_o = new_server('localhost', PORT_o, password=PASSWORD)


s_i.new()

g_i.gotostructures()

Чтобы проверить, что приведенный выше код работает правильно, мы запустим «create_plate.py» в терминале, как показано ниже. Введите «python create_plate.py» и нажмите Enter.

(PLAXIS) C:\Users\phtsang\Desktop\PLAXIS_V22\Script>python create_plate.py

Приложение PLAXIS 2D должно открыться автоматически. Если сервер настроен правильно, вы должны увидеть «СЕРВЕР АКТИВЕН», как показано ниже.

Теперь, когда мы подключились к API-серверу PLAXIS, мы можем создать элемент пластины в PLAXIS с помощью скрипта Python.

Шаг 4: Создайте первый элемент пластины

В этой части урока мы стремимся создать элемент пластины с положительным и отрицательным интерфейсами. Затем мы назначаем элементу материал «Бетон».

Во-первых, мы определяем имя материала и геометрию. Я планирую создать линию от (-10,0) до (10,0). Квадратная скобка [ ] называется списком в python, это очень распространенный тип данных для хранения значений. Чтобы получить доступ к значениям, хранящимся в списке, он вызывается со следующим синтаксисом:

Если я хочу получить доступ к координатам первой точки, я использую

координата x = -10 = первая_точка[0]

координата у = 10 = первая_точка[1]

0 и 1 здесь называются индексом, который всегда начинается с 0.

Затем мы создаем материал и назначаем его в список материалов пластин. Для создания пластинчатого материала используется команда «g_i.platemat()». Код ниже предназначен для назначения объекта пластины в список.

material=['Concrete']
first_point=[-10,0]
second_point=[10,0]

# Create material
for i in range(len(material)):
    g_i.platemat('Identification',material[i])


platematerials = [mat for mat in g_i.Materials[:] if mat.TypeName.value == 'PlateMat']

После этого мы создаем элемент пластины с помощью «g_i.plate()» на основе заранее определенных координат.

plate=g_i.plate(
    (first_point[0],first_point[1]),
    (second_point[0],second_point[1]),
    )
plate1=plate[-1]

Затем создайте интерфейсы, используя «g_i.posinterface()» и «g_i.neginterface()».

plate2=plate[-2]
g_i.posinterface(plate2)
g_i.neginterface(plate2)

Наконец, установите «Бетон» на элемент плиты.

plate1.setmaterial(platematerials[0])

Если вы повторно запустите скрипт, вы увидите, что в PLAXIS создается следующее. Как видите, материал «Бетон» создан и назначен на созданный нами элемент плиты.

Поздравляем! Вы только что создали свой первый элемент пластины в PLAXIS с помощью Python!

Бонус

Конечно, нам часто нужно создать более одного структурного элемента в PLAXIS. В этом разделе мы стремимся создать четыре элемента пластины, которые образуют прямоугольник со следующими координатами:

  • (-10,0)
  • (-10,10)
  • (10,10)
  • (10,0)

Сначала нам нужно создать список (назовем его «df_plate»), в котором указаны координаты каждого элемента пластины. Первая и вторая точки сохраняются как (x1,y1) и (x2,y2) соответственно. В списке я использовал новый тип данных под названием Dictionary, который очень часто используется в Python. Подробнее об этом в следующем уроке.

df_plate=[{'x1':-10,'y1':0,'x2':10,'y2':0},{'x1':-10,'y1':10,'x2':-10,'y2':0},{'x1':-10,'y1':10,'x2':10,'y2':10},{'x1':10,'y1':10,'x2':10,'y2':0}]

Поскольку на этот раз нам нужно получить доступ к нескольким элементам в списке, мы будем использовать концепцию под названием цикл for. Это позволяет нам перебирать элементы и соответственно создавать точки в PLAXIS. Это можно сделать с помощью следующего кода:

for i in range(len(df_plate)):
    plate=g_i.plate(
        (df_plate[i]['x1'],df_plate[i]['y1']),
        (df_plate[i]['x2'],df_plate[i]['y2']),
        )
    plate1=plate[-1]

Ваш окончательный сценарий должен выглядеть так:

# Plate
#Material name and geometry
material=['Concrete']

df_plate=[{'x1':-10,'y1':0,'x2':10,'y2':0},{'x1':-10,'y1':10,'x2':-10,'y2':0},{'x1':-10,'y1':10,'x2':10,'y2':10},{'x1':10,'y1':10,'x2':10,'y2':0}]

# Create material
for i in range(len(material)):
    g_i.platemat('Identification',material[i])

platematerials = [mat for mat in g_i.Materials[:] if mat.TypeName.value == 'PlateMat']

#Create Plate
for i in range(len(df_plate)):
    plate=g_i.plate(
        (df_plate[i]['x1'],df_plate[i]['y1']),
        (df_plate[i]['x2'],df_plate[i]['y2']),
        )
    plate1=plate[-1]

#Create Interface

    plate2=plate[-2]
    g_i.posinterface(plate2)
    g_i.neginterface(plate2)
#Set Material

    plate1.setmaterial(platematerials[0])

Если вы повторно запустите скрипт, вы увидите, что в PLAXIS создается следующее. Теперь вы можете создавать несколько элементов с помощью скрипта Python.

Заключение

Это конец первого руководства по автоматизации PLAXIS с помощью Python. К настоящему моменту вы должны уметь создавать структурные элементы в PLAXIS с помощью скрипта Python. В будущем я продолжу публиковать туториалы по использованию Python в PLAXIS. Более того, я также хочу поделиться знаниями о том, как использовать Python для автоматизации скучного рабочего процесса в инженерии.

Если вам интересно узнать больше о Python, PLAXIS и автоматизации рабочих процессов, подписывайтесь на мою страницу.

Вы можете найти код, продемонстрированный в этом посте, на моем Github.