Release Notes
2025-0-2
-
Extended description of how to read data from reinforcement elements is now available here.
-
Bug fixes: Initializing a parameter of type
RefPointButton
as a list does not result in an error anymore.
2025-0-1
-
Bug fixes:
- Modifying a door swing created with Python API could lead to a crash. This has been fixed now.
-
New content in the documentation
- In this new paragraph you will learn how to process handles in an interactor PythonPart
- In this new paragraph you will learn more on how dependency packages are handled in the Python environment of ALLPLAN, and in this you will learn more about the environment itself
- In this new paragraph you can learn more on how to make the entire palette content dynamic.
2025-0-0
- New icon gallery allows you to browse the ALLPLAN's internal icon collection and choose the one, you would like to place e.g. on a button or in the combobox
- In the new article you can learn more about implementing a hierarchy in your PythonPart. Especially about the nested hierarchy - a new concept introduced in ALLPLAN 2025.
- Getting started article is now available to watch as a short video
RC-3
- The Python version was upgraded to 3.12.6
- New method GetPlacementMatrix in BarPlacement class allows to determine the position of the first rebar in a linear or rotational placement. This allows to determine the entire geometry of a rebar placement in global coordinate system.
-
Bug fixes:
-
In the case of multiple country-specific office standards (e.g.
Std.eng\
,Std.deu\
,Std.cze
, etc...), the Allep installer now installs the plugin in the current directory.Warning
Action bar icons are not displayed correctly when the plugin is installed in one of these directories. This will be fixed in future versions.
-
It is now possible to create dynamic picture combo box by filling the tag
<ValueTextList>
from the script usingControlPropertiesUtil.set_value_text_list
- Initializing a list parameter with an asterisk, like
<Value>["Foo"]*5<Value>
is possible again. - It is now possible to modify parameters of an interactor PythonPart using ModifyPythonPartParameterUtil
-
RC-2
- It is now possible to get the sub-position number from a polygonal rebar placement with the method GetBarPositionData. The placement must be unlinked beforehand.
-
Bug fixes:
- Creating a general opening in an entity-based wall (e.g. with spline axis) was causing ALLPLAN to crash.
- The method Vector2D.Orthogonal is now returning a new object (orthogonal vector). Before the fix, it mutated the vector and returned a reference to it.
RC-1
-
Minor bug fixes:
- When a handle is controlling a list parameter, the values are now recalculated correctly after moving the handle
- HandleModificationService is now working
correctly, even if the
build_ele_list
contains more than one BuildingElement
Beta-2
- New article about connecting (associating) a PythonPart with another element. Learn more here.
- New article about ALLPLAN elements. Learn more here.
-
Minor bug fixes:
- After installing an Allep-Plugin by drag-and-drop, the installer war still running in the background. This is fixed now.
- Installing an Allep-package into USR wasn't generating any icons on the Actionbar. This is now fixed.
- Connected PythonPart was not updated in case change of plane reference. This has been fixed.
- It is now possible to create a recess with an opening part in it.
- In some cases, calling
GetElements()
.
Beta-1
-
The tools in the SDK were updated:
- There is a new extension for VS-Code available in the Visual Studio Marketplace: PythonPartTools .
- Tool for debugging was made more intuitive. Learn more in this article.
- For beginners: it is easier to start coding. Learn more in the getting started article.
-
The Python version was upgraded to 3.12.4
-
Improvements to Allep Installer:
- The user can now install your plugin by drag-and-drop
- The user can now update your plugin by reinstalling it
- You can place a hard separator into the Actionbar
- You can now organize your files into sub-directories
- The unexpected behavior of the Actionbar, when more than 13 plugins are installed, is now fixed.
-
The examples are now available for download in a GitHub repository and are no longer delivered with ALLPLAN. You can access the repository anytime by clicking the icon in the navigation bar.
- Reloader is no more delivered with ALLPLAN. As a developer, you have to install the SDK to use it. Learn here why.
- When the PythonPart is implemented as script object, the BaseScriptObject now inherits from BaseScriptObjectData which gives you access to much more data inside the script object class. Learn more here.
- requests - a popular package for easy implementation of HTTP requests - is now delivered with ALLPLAN.
- The palette can be now refreshed after
on_control_event
. The contract has been changed in both BaseScriptObject as well as in [BaseInteractor.BaseInteractor.on_control_event] and expects now a bool return value.
WIP-6
- The BarPlacement object can now be read from a BaseElementAdapter which enables you to access the data of existing rebar placements specific to linear, polygonal and rotational types of placements, such as: spacing, bending shape being placed, its shape polygon, bending rollers etc.
- With the new utility ModifyPythonPartParameterUtil it is now easier to modify and recalculate existing PythonParts with a script. Learn more here.
- New API functionality for creating flush pier. See documentation of the FlushPierElement.
-
Improvements to the Allep Installer:
- Installation to STD and USR is now possible
- Keys
task-area
andtools
are now optional
-
You can now place a ComboBox with an editable text box in the property palette. Learn more here.
-
New value types of parameter:
-
With the following new utility classes you can more easily create sloped openings inside architectural elements, like walls or slabs by providing just the volume (BRep or a polyhedron) that cuts out the wall or slab.
- GeneralOpeningSlopedBRepUtil
- GeneralOpeningSlopedPolyhedronUtil
- SlabOpeningSlopedBRepUtil
- SlabOpeningSlopedPolyhedronUtil
The classes calculate the bottom and top plane reference and a polygon in the ground view necessary to create a recess or niche.
-
Instructions on how to handle the property palette inside an interactor PythonPart. Learn more here
WIP-5
- The Allplan Extension Package (Allep) allows to pack multiple PythonParts into one plugin and ship it to the end-user more easily.
- Newly exposed PolyhedronUtil offers new useful methods for processing a polyhedron geometry, for example repairing an invalid geometry.
- New API functionality for creating joints. See documentation of the JointElement.
- It is now possible to modify the display name of a PythonPart. Learn more here.
-
New service in the NemAll_Python_BaseElements, the ZoomService, allows you to zoom to a specific element(s) inside the viewport(s). Check out the example ZoomService ( PYP | PY)
-
The new progress bar is accessible via the class ProgressBar in the NemAll_Python_Utility module.
Warning
Methods referring to the old progress bar has been deprecated. Refer to the API reference, to see what methods to use to access the new progress bar.
-
The creation of PythonPart groups has been simplified and documented. Learn more in this article
-
The handling of slab openings with API has been improved:
- The read access is granted
- Placing opening symbols inside the opening is possible
See the examples SlabOpening ( PYP | PY) and ModifySlabOpening ( PYP | PY)
-
The polyhedron geometry validation when calling the DrawElementPreview is now disabled by default, which increases the performance during preview draw of complex geometries. In case of unexpected results, this validation can be turned back on by calling
SetValidateGeometry
-
Articles about the key components of the PythonParts framework: the palette and the script has been completely refactored.
-
New type of contract is available in the PythonParts framework: beside a standard PythonPart and an interactor you can now create a script object PythonPart
WIP-4
- New API functionality for creating polygonal niche or recess. See documentation of the GeneralOpeningElement
- New extensive articles about accessing and modifying elements inside ALLPLAN model.
- It is now possible to provide a library dialog for selecting a smart symbol or a SmartPart. Learn more here.
- It is now possible to specify maximum and minimum values for point and vector parameters. Learn more here.
- It is now possible to show some controls from a row on the left side of the palette. Learn more here.
- It is now easier to provide an info box with a more extensive description for a parameter in the palette. Learn more here.
- The UX when using list parameters can now be improved by using a new parameter type, the MultiIndex. Learn more here.
- New parameter type DynamicList enables the user to append and delete items from the list. Learn more here
- The alignment of the text parameter can now be controlled with the new tag
<Orientation>
. Learn more here - It is now possible to place pictures in the palette with picture parameter not only a path to a .png file, but also ALLPLAN internal resource ID or an option of a dedicated enumeration classes. Learn more here
- A picture from ALLPLAN's image resources can now be shown on a button by accessing an option of a dedicated enumeration class. Learn more here
- The layout of the palette can now be controlled with an advanced logic by adding a script to do that into the .pyp file. Learn more here
- There are some new options of a reference point button. Learn more here
WIP-3
-
New class DoorOpeningElement in the NemAll_Python_ArchElements module allows you to create door openings. See the example DoorOpening ( PYP | PY)
-
The article about element selection has been completely rewritten.
- New extensive article about coordinate input.
- It is now possible (and even recommended) to delete model elements with the
PythonPartTransaction. See new argument
elements_to_delete
in the execute method. - New tags
<ValueTextList>
and<ValueTextIdList>
, relevant for the definition of a picture combo box and for a picture button list - You can now control the visibility/enable state of multiple directly consecutive parameters with a condition group
- You can now create a list of tuples in the palette, that stretch over the entire width of the palette. This allows you to create controls layout similar to a table. Learn more here
Warning
Module level attributes representing values of enumeration classes have been deprecated in 2025-WIP-3. Instead of using:
Use the full name:
WIP-2
-
New extensive article: geometry operations including tips and how-to´s for e.g.:
- Quantity take-offs
- Boolean operations
- Brep tessellation
- and more...
Examples for the above mentioned article are available in the directory ...GeometryExamples/Operations ( PYP | PY)
-
New extensive articles about reinforcement covering topics, such as:
Examples for the above mentioned article are available in these:
-
New article about creating a PythonPart
-
New classes in the NemAll_Python_ArchElements module:
- GeneralOpeningElement: allows creation of a niche or recess
- WindowOpeningElement: allows creation of a window opening
Implementation examples are located in the directory ...ArchitectureExamples/Objects ( PYP | PY)
-
With the new tag
<EnumList>
it is now possible to point out to an option of any enumeration class e.g., in a PictureButtonList or a PictureResourceComboBox -
It is now possible to refer to a picture resource through dedicated enumeration classes. They are available in the NemAll_Python_AllplanSettings module and their names begins with
PictRes
. E.g., PictResRevealType. The can also be used in a PictureButtonList or a PictureResourceComboBox
WIP-1
-
New classes in the NemAll_Python_Precast module:
- PrecastMWSElement: allows creation of MWS reinforcement group
- AssemblyGroupElement: allows creation of reinforcement assembly
-
New functionalities of the parameter PlaneReferences:
- new possibilities to set constraints
- new edit controls with possibility to hide them individually
-
Including parameters from external .pyp files can now be done with the new value type: Include
- Tag
<Constraint>
can now be defined in the CheckBox parameter - New value types to control font style and font emphasis
- New value type date
- It is now possible to access the TextElement and LabelElement from the BaseElementAdapter of type TextBlock_TypeUUID or GeneralVariableText_TypeUUID respectively, by using the GetElements function and modify them by using the ModifyElements function.
- New class in the API InputAngleSettings to control the system angle (rotation of the crosshair).
- New tag
<ShowFavoriteButtons>
in the script node of the PYP file allows you to hide the favorite icons. -
New method set element attributes of the ModelEleList makes it easier to append attributes to ModelEleList. Refer to this article
to learn more.