Positioning
The plugin automatically aligns the 3D models of a Komponenten-Liste in a row: kitchen units, rows of cabinets, shelving units, fence panels, counters. You simply specify the dimensions for each module—the plugin calculates the position, rotation, and corners.
Without the plugin, you would have to manually calculate the coordinates and angle of each module in every rule line. As soon as the customer inserts, deletes, or rearranges a module, these calculations are no longer accurate.
The Principle: The Thread
The plugin places an invisible “thread” through the scene and places the modules in sequence along it. For each module, the thread follows these steps:
- Place the module at the current point in the current direction of travel,
- move forward by width,
- rotate by angle,
- move forward by width (rotated).
Where the thread ends, the next module begins. A straight module requires only step 2, while a corner module requires all four.
The row runs in the x-direction; a positive angle rotates clockwise (as viewed from above). Calculations are made in meters and exclusively within the base area—the height is derived from the model itself.
Prerequisites
- The plugin is in Ihrem Konfigurator eingetragen.
- You have created a Komponenten-Liste in which the customer adds their modules (e.g., “kitchen unit” with base cabinet, corner cabinet, tall cabinet).
- There is a 3D model for each module type.
- Developer mode is enabled in your Profil—you need it to view the Key field in properties. Without a key, the plugin cannot read dimensions.
Setup
1. Create a "Positioning" model
- Click on Loading...in the sidebar, then onLoading....
- Select Positioning and click the "+" button.
- Give the model a name, e.g., “Kitchen Island Layout.”
The model includes three slots: Input Before, Input, and Input After.
2. Place the model in the scene
Place it in the scene using a rule, just like any other model. In most cases, a rule without a condition—which always displays the layout—is sufficient.
3. Link the module list
- In the rule behind the model, click on Loading....
- Under Module List, select the component list containing your modules.
Without this binding, all dimensions will remain at 0, and all modules will end up stacked on top of each other at the origin.
4. Create Dimension Features in the Component
Within the component list, create three numeric features and assign each one a Key:
| Key | Meaning |
|---|---|
breite | Distance before the bend, in meters |
winkel | Rotation of the direction of travel at the end of the module, in degrees |
breite_gedreht | Distance after the bend, in meters |
The attributes berechnet may be hidden—the customer does not need to
see them. It is common to perform a calculation based on a
Wert-Eigenschaft of the module type, such as Breitenwahl / 1000, when the
customer enters millimeters.
A feature without a key cannot be found—this is the most common setup error.
5. Place Module Models in the Slot
The rule that displays a 3D model for each module has been drawing the models directly into the scene. Reroute them to the layout:
- In this rule, click the pencil icon in the header of the Model column.
- Under Slot Assignment, select the entry Positioning > Input (or the name you gave your layout model).
From now on, the models will no longer be drawn directly but will be placed by the layout.
6. Check the Models’ Anchors
The plugin places each module with its origin at the calculated point on the thread. Where the visible model is positioned relative to this point is determined by Anker des Modells.
Convention: back-bottom-right—that is, exactly where the module connects to the previous one and stands on the floor. This ensures that the modules automatically stand on the floor and fit together seamlessly .
Straight Modules and Corner Modules
Straight Modules: Set only breite; winkel and breite_gedreht remain 0.
Corner modules:
breite= Length of the incoming side up to the bendwinkel= Rotation angle in degrees; positive = clockwise from the top (usually 90)breite_gedreht= Length of the outgoing leg, often the cabinet depth
A corner module reverses the direction of flow for all subsequent modules. Two corner modules, each at 90°, result in a U-shape; four result in a closed rectangle. Odd angles are allowed (e.g., 45 for a diagonal corner); negative values rotate counterclockwise.
Example: Kitchen unit with a corner
| # | Type | breite | winkel | breite_gedreht |
|---|---|---|---|---|
| 1 | Base cabinet | 0.60 | 0 | 0 |
| 2 | Base cabinet | 1.20 | 0 | 0 |
| 3 | 90° corner cabinet | 0.90 | 90 | 0.60 |
| 4 | Base cabinet | 0.80 | 0 | 0 |
Module 1 starts at the origin, Module 2 at 0.60 m, Module 3 at 1.80 m. The line extends to 2.70 m, turns 90° there, and continues 0.60 m forward—where Module 4 is located, perpendicular to the first row. If the customer adds another cabinet before Module 3, the corner automatically shifts accordingly.
Troubleshooting
| Observation | Cause |
|---|---|
| All modules are stacked on top of each other | Module list not bound, or the dimension features have no key |
| Individual modules are stacked on top of each other | For this module type, breite is missing or the key is incorrect |
| Modules are offset from their positions | Anchor of the GLB models does not match |
| The corner rotates in the wrong direction | Swap the sign for winkel |
There is more detailed documentation available for this plugin, including debug output, multiple models per module, and special cases at the beginning and end of the series. If needed, please inquire at support@objectcode.de.