Getting started
1. Get ALLPLAN
You will need ALLPLAN to work with its API. You can download it from ALLPLAN Connect upon prior registration. If you are a professional developer, who wants to develop plugins for ALLPLAN, contact us to get a license to a pre-release ALLPLAN version.
Download ALLPLAN Apply for a license
2. Get the SDK
The PythonPart SDK is a collection of tools designed to aid programmers in developing their own PythonParts. Here are the tools that you get:
Tool | Description |
---|---|
Start Python Debug | Enables you to connect your IDE with Allplan in order to debug your code. Learn more about debugging . |
Install Python Package | Allow you to install a site package from Python Package Index locally on your machine. Learn more below . |
Encrypt PythonPart Script | Tool to encrypt and thereby protect your python source code. Learn more . |
Download PythonPart examples | Tool to download the latest examples from the github repository. Learn more below |
Create VS-Code Workspace | With this tool you can pre-configure the workspace for VS-Code. Learn more below . |
Beside that, the SDK will also install some python site-packages on your PC that are relevant for PythonParts development. Here's the overview:
Package | Description |
---|---|
reloader | Enables you to try out changes in your code without having to restart Allplan Learn more below . |
debugpy | Needed for debugging. Learn more here . |
graphviz | Needed for profiling. Learn more here . |
Installation
- Use the link above and download the SDK.
- Drag-and-drop the downloaded
.allep
file to Allplan to install it. - Restart Allplan.
-
The SDK can be found on the Actionbar in the tab Plugins.
3. Get the examples
For better understanding of PythonParts framework, we offer a repository on GitHub with example PythonParts. You can access it anytime by clicking the Git symbol in the navigation bar. Every time you browse this documentation and see an admonition like this:
... there is a complete, ready-to-use implementation example of a certain feature. Clicking on PYP will bring you directly to the PYP file. Clicking on PY you bring you the python script.
The examples are grouped into following subdirectories:
Folder | Description |
---|---|
BasisExamples | contains examples from ALLPLAN BasisElements library |
ContentExamples | contains complex PythonPart examples |
GeometryExamples | contains examples from the ALLPLAN Geometry library |
InteractorExamples | contains examples from the ALLPLAN IFW_Input library |
PaletteExamples | contains examples demonstrating the palette functionalities |
ReinforcementExamples | contains examples with special reinforcement functionalities |
StructuralFramingExamples | contains examples with special structural framing functionalities |
ToolsAndStartExamples | contains helpful start examples |
Tip
The examples are fully functional PythonParts and you can try them out in Allplan. To get them,
use the tool Download PythonPart Examples that we provide in our SDK.
It will download the examples directly to Allplan and you can try them yout by going to
Library -> Private -> Examples -> PythonParts
4. Configure your IDE
Info
We recommend VS-Code as IDE. Feel free to choose another IDE (VisualStudio, pycharm, etc...). If you decide to do so, jump over to the 5th step.
Here is how you can configure your workspace in Visual Studio Code :
-
Run the tool Create Visual Studio Code Workspace from the SDK
-
Specify, where to save the workspace file by pressing Search...
-
Open the created
.code-workspace
file by double-click or run Visual Studio Code, and go to
File -> Open workspace from file -
Install extensions recommended by us. VS-Code will ask you to do so directly after opening the workspace with a prompt like this. Here's what you get, when you click Install::
-
Python: extension for code formatting, refactoring, debugging, unit test and more. Installing it, will also include following extensions:
-
Pylance: a performant, feature-rich language server for Python.
-
Python debugger: a debugger extension, based on debugpy.
-
-
Pylint: tool for linting your python code. Learn more below
-
Better align: tool for vertical alignment of code in any language for better readability
-
PythonPartTools: tool offering helpful functionalities specific for PythonParts framework
Tip
You don't have to install all of them. You can go to the tab Extensions (Ctrl+Shift+X) and type
@recommended
into the search field to get an overview of them and install only what you need. -
After these steps you are ready to go. Here is a checklist for you so you can make sure you have configured your IDE correctly:
-
Your folder structure includes path to the examples (provided you downloaded the examples as described in the 3rd step).
PythonParts
folder contains the PYP files whereasPythonPartsScripts
contains the PY files. It is just a starting point: reorganize the folders as you need them to. -
You get auto-completion suggestions of ALLPLAN Python API members, as shown on th eGIF below. By default by pressing Ctrl+Space.
-
You get parameter hints containing the documentation of the current member, as shown below. By default by pressing Ctrl+Shift+Space.
-
Type checking points out wrong variable types in your code:
-
You can jump to the member definition by pressing F12 or clicking its name while holding Ctrl
-
VS-Code lints your code and checks for convention violations, missing documentation, etc. Learn more below .
5. Attend the PythonParts course
First steps are always difficult. Therefore, before you start coding, we recommend you to have a look on the course for beginners: ALLPLAN start now - PythonParts.
Tips
Python environment
ALLPLAN comes with a python environment preinstalled. You don't have to download and install Python on
your own. The interpreter python.exe
is located in the ...\Prg\Python
folder, usually under:
C:\Program Files\Allplan\$your_version$\Prg\Python
.
To check the current Python version, in the windows shell navigate to the folder with python
and call python.exe --version
, like:
Directories included in the sys.path
are listed below. Please note, that the order may be
different and the list may not be exhaustive:
📁 ...\Etc\
├── 📁 PythonParts-site-packages
├── 📁 PythonPartsFramework
├── 📁 PythonPartsFramework\GeneralScripts
└── 📁 PythonPartsScripts <!--(1)!-->
📁 ...\Prj\$Project_name$\
└── 📁 PythonPartsScripts <!--(2)!-->
📁 ...\Std\
├── 📁 PythonParts-site-packages
└── 📁 PythonPartsScripts <!--(3)!-->
📁 ...\Usr\$User_name$\
├── 📁 PythonParts-site-packages
└── 📁 PythonPartsScripts <!--(4)!-->
📁 ...\Prg
- Folder for scripts delivered by ALLPLAN. Don't put your own scripts here!
- Here you can put scripts, that should work only in a certain project
- Here you can put scripts, that should work across the entire office
- Here you can put scripts, that should work only for a certain user
Trace window
The ALLPLAN trace window is a useful tool for the PythonPart development and we strongly recommend enabling it. This can be done directly in ALLPLAN application by pressing Ctrl+F3. A dialog as shown on the right will pop-up. Check the box Write into window.
Warning
After turning trace window on, you have to restart ALLPLAN! The python related output is not printed directly after activating the window, but only after restarting ALLPLAN.
When an error occurs in the Python script, it is reported in the trace window. In addition, a lot of information reported by the PythonParts framework is displayed.
If ALLPLAN crashes, the trace window gets closed. To be able to investigate the reason of the
crash, the trace output should be saved into a file, which can be achieved by checking the box
Write into file. Now, the output is saved to allplan_python.out, located in the TMP
directory of ALLPLAN. The TMP path can be obtained in Allmenu under
Service -> File explorer -> My own temporary CAD data (TMP)
Lint your code
Linting code means checking for errors, enforcing coding standards and looking for code smells or type errors. Pylint is the tool that does exactly this. When you use VS-Code and you have configured your workspace as described above, this tool will should run in the background and try to enforce coding standards by providing you hints like this:
The coding guidelines are defined in the file pylintrc
, delivered with ALLPLAN and located under
...\Etc\PythonPartsFramework\pylintrc
Info
If you want to use your own guidelines, provide the path to your own pylintrc
file in the
workspace settings:
Reloader
Our SDK includes a python module called reloader. It is the module from PyPI , but with little modifications so not exactly the same. It is important to know, what is its purpose and what troubles it may cause.
When a PythonPart is started, the python script with its logic also gets loaded. When the PythonPart is started for the second time, it's not loaded again to ensure performance. It stays in the memory until ALLPLAN is closed. This behavior is OK, as long as you don't want to modify the script very often.
While developing PythonParts, you change the script constantly and test it in ALLPLAN all over again. Having to restart ALLPLAN each time would be extremely annoying. Reloader solves this problem: it reloads the script every time the PythonPart is started.
Bug
Reloader may cause problems with some dependency packages, like numpy or requests. When your PythonPart works well for the first time, but breaks when starting for the second and consecutive time, it's likely the reloader that causes the problem.
In this case, deactivate the reloader by renaming the file reloader.py
to something else.
After installing the SDK, the file is located in:
...\usr\__your_username__\PythonPartsScripts\AllepPlugins\AllplanGmbH\PythonPartSDK\reloader.py
Info
In the versions prior to 2025, the reloader was delivered with ALLPLAN. If you migrated from
past versions, make sure the file reloader.py
is present neither in your etc
nor in prg
directory.
Site packages
Your PythonPart will probably depend on another packages from the Python Package Index . Some of them are already delivered with Allplan. To check which ones, run following command in windows shell:
This will list all the packages installed in the ...\Prg\Python\libs\site-packages
. However, there are
also three other directories, where site-packages can be installed:
📁 ...\Etc\
└── 📁 PythonParts-site-packages
📁 ...\Std\
└── 📁 PythonParts-site-packages
📁 ...\Usr\$User_name$\
└── 📁 PythonParts-site-packages
You can also check, what's installed there, by running:
cd X:\Path\To\Your\Prg\Python
python.exe -m pip list --path X:\Path\To\Your\Etc\PythonParts-site-packages\
If you don't find your desired packager in neither if these folders, you can install it using InstallPythonPackage. This tool is included in the SDK.
To install a site-package, follow these steps:
- Run the tool
- Type in the name of the package you want to install, e.g.
numpy
-
Select the desired location(1)
-
Option Where package will be installed std
...\Std\PythonParts-site-packages usr
...\Usr$username$\PythonParts-site-packages etc
...\Etc\PythonParts-site-packages
-
-
Click Install
- Check the log printed in ALLPLAN trace window
Info
It it possible to have two packages with the same name in two different locations. When
this package gets imported with import ...
statement, python looks for it in the
environment paths according to the import resolution. Here is the search order:
- ...\std\PythonParts-site-packages
- ...\usr$username$\PythonParts-site-packages
- ...\etc\PythonParts-site-packages
Package that first gets found will be used.
For example: numpy 1.23.4 is installed in usr
and another numpy 2.0.1 is installed
in std
. Python will first search the std
path, find the version 2.0.1 and load it.
The version 1.23.4 found in usr
will not overload the already loaded 2.0.1.
Note
Please note that this tool only installs the site-package on your PC. When your PythonPart needs to be delivered to the users, the site-packages must also be installed on their PCs. It is the Allep installer that will take care of this.