Reinforcement
Reinforcement bars
Rebar shape
Creating a rebar reinforcement with Allpln Python API begins with defining a bending shape of the rebar, which is represented by the BendingShape object. It contains informations like shape, diameter, steel grade, etc.
PythonParts framework offers numerous helper classes for defining the bending shape of a rebar. We describe them closely in this article.
Rebar placement
The second step is placing the rebar. To to do that we have to construct a placement object. The most general object representing a placement is the BarPlacement, but there are also special types of placements in Allplan, which are represented by different classes. To learn more about all of them, refer to this article.
Rebar classes relationships
The relationships of reinforcement placement classes are shown on the diagram below. It is worth notice, that:
- All the classes representing rebar placement inherits from the AllplanElement class, which means that they can be used to create rebars in the drawing file (using the CreateElements function in an Interactor PythonPart or in a Standard PythonPart, by including the placement objects in the CreateElementResult object).
- It also means, that you can apply information to them, that are common for all elements in a drawing file, like attributes or pen, stroke and color.
- Almost all the placement classes are composed by the BendingShape. This is logical, since this class defines the shape of the bar we want to place
- Helper classes, offered by the PythonPart framework to construct the shapes and placements more easily, are not shown on the diagram to keep it legible. Refer to the articles about placement and shape definition to learn about them.
classDiagram
direction BT
class AllplanElement{
<<Abstract>>
+CommonProperties CommonProperties
+Attributes Attributes
}
class ReinfElement{
<<Abstract>>
}
class BarPlacement{
int positionNumber
BendingShape BendingShape
BendingShape EndBendingShape
Matrix3D BendingShapeMatrix
Point3D StartPoint
Point3D EndPoint
Vector3D DistanceVector
Line3D RotationAxis
GetBarCount() int
SetLabel()
}
class CircularAreaElement{
int positionNumber
int steelGrade
Line3D RotationAxis
Polyline3D contourPoints
float outerAngleStart
float outerAngleEnd
float innerAngleStart
float innerAngleEnd
SetOverlap()
SetBarProperties()
}
class ExtrudeBarPlacement{
int PositionNumber
Path3D path
float crossBarDistance
AddCrossBendingShape()
AddLongitudinalBarProp()
Extrude()
}
class SweepBarPlacement{
int PositionNumber
Path3DList paths
float crossBarDistance
AddSectionBars()
}
class LongitudinalBarProperties{
BendingShape shape
float overlappingLength
float startLength
}
class BendingShape{
float Diameter
int steelGrade
BendingShapeType bendingShapeType
float hookLengthStart
float hookAngleStart
HookType hookTypeStart
float hookLengthEnd
float hookAngleEnd
HookType hookTypeEnd
VecDoubleList BendingRoller
Polyline3D ShapePolyline
}
class HookType{
<<Enumeration>>
eAnchorage
eAngle
eStirrup
}
class BendingShapeType{
<<Enumeration>>
}
ReinfElement --|> AllplanElement
BarPlacement --|> ReinfElement
ExtrudeBarPlacement --|> ReinfElement
SweepBarPlacement --|> ReinfElement
CircularAreaElement --|> ReinfElement
LongitudinalBarProperties "*" --o ExtrudeBarPlacement
BendingShape "1-2" --o BarPlacement
BendingShape "*" --o ExtrudeBarPlacement
BendingShape "*" --o SweepBarPlacement
BendingShape "1" --o LongitudinalBarProperties
HookType "2" --o BendingShape
BendingShapeType "1" --o BendingShape