(Ultimate Guide) Start Using Python to Automate PLAXIS
Philip Chin Fung Tsang
Design Coordinator - Tunnel at CPB Contractors | Python Content Writer | ATSym Chair | ?Innovating with Artificial Intelligence, Automation, & Digital Transformation in Geotechnics & Tunnel Design
PLAXIS is a Finite Element modelling software that geotechnical engineers will definitely come across at certain point of their career. Modelling complex geotechnical problems in a PLAXIS can be challenging and represents time-consuming modelling work often involving repetitive tasks.
As an engineer, we always want to automate the boring and engineer the awesome.
In this context, programming, more specifically Python, is the best available tool to automate repetitive tasks.
Python has been around for many years but only recently get recognised by the larger community because of its ease of use, large extent of applications and support by huge open-source communities. It is a great programming language for data science, workflow automation and web development.
PLAXIS has a well-developed Application Programming Interface (API) which allows users to operate PLAXIS through programming. More details can be seen on the official Bentley website.
Goal
Although the PLAXIS Python API has been developed for a long time, there is still a lack of thorough guidelines to introduce this technique to geotechnical engineers.
This tutorial assumes readers have zero experience in programming so I will show how to set up the programming environment from scratch.
Disclaimer
There have been a lot of paid courses which teach engineers to use the built-in Python editor in PLAXIS which I agree is quite well-developed. But I personally prefer to use my own programming environment to write scripts because of the following three reasons:
The ultimate goal of this tutorial is to show you how to use Python script to create your first structural element in PLAXIS 2D. This can be done with the following four steps.
Lastly, this tutorial assumes readers are using Windows OS and have PLAXIS 2D V22 installed. So let's get started!
Step 1: Install Integrated Development Environment (IDE)
IDE is a software application which provides comprehensive facilities for programming, usually consisting of source code editor, build automation tools and debugger.
There are various options for IDE, such as Visual Studio Code (VS Code), PyCharm, Jupyter Notebook etc, which have no difference in functionality and are completely up to users' preference for the choice of IDE. This instruction demonstrates the installation of VS Code.
Install Visual Studio Code (VS Code) with the following instruction:
Download the latest VS code for Windows:?https://code.visualstudio.com/download
Follow the installation wizard, check the options as shown below.
Once installed, open VS Code on Desktop. You will see the following interface.
Add your work folder in Explorer by right-clicking Explorer -> Add Folder to Workplace...
You have now got VS code set-up and is ready to start coding!
Step 2: Activate PLAXIS Environment
Once your virtual environment and IDE are set up, you can start writing Python scripts within IDE.
To write a Python script, you should follow the process below:
Open IDE terminal
Click the highlighted icon:
You will see the Shell comes up:
Head to "Terminal" tab. You should see that you are in the work folder.
Direct to your preferred work folder
If it is not the correct work folder. You can type:
cd <your work folder path>
For example, I am currently in Current Projects folder and I want to locate to 00_Digitalisation->01_Python-FE. The folder path is:
C:\Users\phtsang\Desktop\Current_Projects\00_Digitalisation\01_Python-FE
In IDE terminal:
It should show the correct folder name as shown above.
Activate PLAXIS Python Environment
To activate the PLAXIS Python environment, we will need to select PLAXIS built-in python interpreter which contains all the functionalities required to operate PLAXIS. The python interpreter is automatically installed when PLAXIS is installed.
Location of the Python interpreter:
领英推荐
C:\ProgramData\Bentley\Geotechnical\PLAXIS Python Distribution V2\python\python.exe
Edit (24/10/2023): New directory for PLAXIS V2023.1/2
C:\ProgramData\Seequent\PLAXIS Python Distribution V2\python\python.exe
To select a specific environment,?use the Python: Select Interpreter command from the Command Palette (Ctrl+Shift+P). Click "Enter interpreter path..." , then browse the python.exe in the location mentioned above.
In the Terminal tab, select Command Prompt in the drop-down list as highlighted below.
You should see (PLAXIS) in front of the working directory if the environment is activated successfully.
Create .py file in the folder
Click the New file icon:
Create .py file as below:
Next section we will start connecting to the PLAXIS API.
Step 3: Connect PLAXIS API
I will first create an empty python script and call it "create_plate.py" as shown below.
After that, we write the code below to the python file. Three things are doing here:
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()
To test that the code above is working properly, we will run "create_plate.py" in the terminal as shown below. Type "python create_plate.py" and click Enter.
(PLAXIS) C:\Users\phtsang\Desktop\PLAXIS_V22\Script>python create_plate.py
The PLAXIS 2D app should be opened automatically. If the server is configured correctly, you should see "SERVER ACTIVE" as shown below.
Now that we connect to the PLAXIS API server, we can then create a plate element in PLAXIS using Python script.
Step 4: Create First Plate Element
In this part of the tutorial, we aim to create a plate element with positive and negative interfaces. Then we assign "Concrete" material to the element.
First, we define the material name and geometry. I plan to create a line from (-10,0) to (10,0). The square bracket [ ] is called list in python, which is a very common data type to store values. To access the values stored in a list, it is called in the following syntax:
If I want to access the coordinates of first point, I use
x coordinate = -10 = first_point[0]
y coordinate = 10 = first_point[1]
0 and 1 here called index which always starts from 0.
Then we create the material and assign it to the plate material list. To create plate material, the command "g_i.platemat()" is used. The code underneath is to assign the plate object to a list.
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']
After that, we create plate element with "g_i.plate()" based on the pre-defined coordinates.
plate=g_i.plate(
? ? (first_point[0],first_point[1]),
? ? (second_point[0],second_point[1]),
? ? )
plate1=plate[-1]
Then, create interfaces using "g_i.posinterface()" and "g_i.neginterface()".
plate2=plate[-2]
g_i.posinterface(plate2)
g_i.neginterface(plate2)
Finally, set "Concrete" to the plate element.
plate1.setmaterial(platematerials[0])
If you rerun the script, you will see the following is created in PLAXIS. As you see, the "Concrete" material is created and is assigned to the plate element we created.
Congratulations! You have just created your first plate element in PLAXIS using Python!
Conclusion
That's the end of the first tutorial on automating PLAXIS with Python. In the future, I will keep posting tutorials on using Python in PLAXIS. More than that, I'm also keen to share knowledge on how to use Python to automate boring workflow in engineering.
If you're interested in hearing more about Python, PLAXIS and workflow automation, feel free to follow my page. You can also support me by following me on Medium where I will provide source code and more general programming techniques in the future.
Engenheira Geotécnica | Doutoranda pela UnB
2 年Thaks Philip Chin Fung Tsang, this article helped me a lot
Lecturer at Vietnam Maritime University
2 年Hello, thank you for your instruction. I used your code to start Plaxis, however, it is closed immediately after being opened. Do you have some suggestions for me to solve this issue?
Principal Geotechnical Engineer at WSP
2 年Nice work Philip Chin Fung Tsang . Some good guidance for those looking to take their PLAXIS modelling capabilities to the next level. I'd be interested to hear your thoughts on applications in practice and whether you're using python for pre- or post-processing routines? I find most of the major efficiencies with python in the work I do are with post-processing workflows although this likely depends on the type of analysis you are doing.
Mining Geotech | Railway Geotech
2 年It would be very nice if you can develop a series in Youtube :)
Geotech/Tunnel Professional | Engineering Management | FIEAust CPEng RPEQ MEng MSc | AAICD
2 年Good job Philip, its really helps to document like this.