The typical furniture door (frame-and-panel style) is constructed from five main components:
Figure 1: Schematic of a frame-and-panel furniture door, with labeles for the individual pieces.
The software currently supports two fundamental joint types for assembling the door frame components, and additionally, a monolithic frame that has no joints.
In this software they are named VERTICAL and HORIZONTAL depending on preferred arrangement for output. More about this in Intersection Parameter
| Figure 1: Side View | Figure 2: Front View |
|---|---|
| |
| Caption | Caption |
| Butt joint generated with IG.Modell.Processor. This figure shows the side view of the joint assembly. | Front view of the butt joint. This figure provides a frontal perspective, demonstrating the visual seam. |
| Figure 3: Miter Joint Side View | Figure 4: Miter Joint Front View |
|---|---|
| |
| Caption | Caption |
| Miter joint generated with IG.Modell.Processor | Front view of the miter joint |
* Monolithic Frame with Separate Panel: In this construction type, the door frame (comprising stiles and rails) is manufactured as a single fused or milled piece, without mechanical joints between frame members. Although the frame appears to have traditional components (B1–B4), it is structurally continuous. The central panel (P) remains a separate piece, inserted into grooves in the frame to allow for natural movement. In this software Monolithic Frame is named SOLID.
| Figure 5: Monolithic Side View | Figure 6: Monolithic Front View |
|---|---|
| |
| Caption | Caption |
| Monolithic edge. There is no joint. | Front view of monolithic (solid) frame. |
| Figure 7: Cross-Section Profile | Figure 8: Extruded Board |
|---|---|
| |
| Caption | Caption |
| Cross-sectional profile suitable for the stiles and rails (boards) of the furniture element. | Visual representation of the profile extruded into a board. Also this is the general result of Model Type: Extrusion 1.0 |
The frame is defined by four boards arranged in a rectangular pattern. The coordinate system defines each board's placement (see Figure Graphical Representation of Board Positions). The numeric values are always in millimeter.
| Board | Position (x, y) | Rotation | Description |
| :—: | :—: | :—: | :— |
| 1 | A (0, 0) | 0° | Bottom board, placed horizontally left‐to‐right. |
| 2 | B (609.6, 0) | 90° | Right board, placed vertically upwards from bottom‐right. |
| 3 | C (609.6, 609.6) | –180° | Top board, rotated 90°, placed right‐to‐left. |
| 4 | D (0, 609.6) | –90° | Left board, placed vertically downwards. |
Please look on next page for graphic for more clarity.
| Figure 9: Board Placement |
|---|
|
| Caption |
| Board placement and coordinates with labeled corners. |
Frame Dimensions graphic layout explanation:
The dimensions of the example frame on the figure are as follows:
"frame": [
{
"board": "1",
"position": {
"x": 0,
"y": 0
},
"profile": "board"
},
{
"board": "2",
"position": {
"x": 609.6,
"y": 0
},
"profile": "board"
},
{
"board": "3",
"position": {
"x": 609.6,
"y": 609.6
},
"profile": "board"
},
{
"board": "4",
"position": {
"x": 0,
"y": 609.6
},
"profile": "board"
}
]
This example shows how to define board positions using JSON. Each board is given a unique “board” ID and a 2D coordinate (x, y) to specify its placement within the frame layout. Boards align with the overall structure, occupying specific corners or edges of the rectangle.
The global parameter intersection takes a string value and controls how all four boards meet when generating the 3D mesh. It applies to every board in the frame assembly and is required to be set in JSON format.
intersection = "VERTICAL";
{
"intersection": "VERTICAL",
"quality": 50,
"uv": {
"patchSize": 150,
"uvorigin": "ORIGIN",
"uOffset": 0,
"vOffset": 0
},
"paths": [ … ],
"frame": [ … ]
}
| Command | Description |
| :— | :— |
| VERTICAL | Vertical butt joint: boards meet edge-to-edge in the vertical direction. |
| HORIZONTAL | Horizontal butt joint: boards meet edge-to-edge in the horizontal direction. |
| SOLID | Monolithic frame with separate panel: frame and panel share one continuous piece. |
| TRIANGLE | Miter joint (45°): board ends cut at complementary 45° angles to form a seamless 90° corner. |
Use for traditional stile-and-rail frames—boards abut along vertical faces.
Common in stacked or layered panel constructions—boards abut along horizontal faces.
Continuous geometry for frame and panel; panel remains a separate element without visible seam.
Default 45° complementary cuts; future releases may allow custom angles.
intersection may requires changing profile as well if it is not build to be cut as butt joint.| Figure 10: Horizontal Butt Joint | Figure 11: Vertical Butt Joint |
|---|---|
| |
| Caption | Caption |
| Horizontal butt joint | Vertical butt joint (front view) |
| Figure 12: Solid Monolithic Frame | Figure 13: Miter Joint (Triangle) |
|---|---|
| |
| Caption | Caption |
| Solid monolithic frame | Miter joint (45°) |
Below is a typical JSON fragment defining a complex-shaped innerPanel using the SOLID1_3 model:
"innerPanel": {
"model": "SOLID1_3",
"profile": "panel",
"path": "placeholder_SOLID1_3",
"trimProfile": "trim",
"trimPath": "trimFrame",
"offset": {
"panel": {
"translation": { "x": 0, "y": 0, "z": 0 },
"dimensions": { "x": 0.0, "y": 0.0 }
},
"trim": {
"translation": { "x": 0, "y": 0, "z": 0 },
"scale": { "z": 0.01 }
}
}
}
"innerPanel": {
"model": "SOLID1_1",
"depth": 6.3,
"offset": {
"x": 5,
"y": 5,
"z": 2
}
}
The innerPanel object supports three models via the innerPanel.model parameter:
innerPanel object are ignored, and only the frame is generated.Defines position and size adjustments for the panel and trim.
Contains two sub-objects:
x, y, z in millimeters; moves the panel relative to the frame center x, y in millimeters; adjusts panel size (used for SOLID1_1) x, y, z in millimeters; moves the trim z value for additive scaling on the Z-axis (e.g., 0.01 → scale of 1.01, useful for small overlaps)
Specifies how the innerPanel is centered relative to the frame before any offsets are applied.
stringCAVITYValid options:
Illustration:
| Figure 14: Panel Centered to FRAME | Figure 15: Panel Centered to CAVITY |
|---|---|
| |
| Caption | Caption |
| Panel centered to FRAME — aligned with the outer edges of the frame. The red cross shows the frame center. | Panel centered to CAVITY — aligned with the inner empty space of the frame. The green cross shows the cavity center. Particularly useful if the frame boards have different widths. |
Note: This parameter determines the initial positioning of the panel. Subsequent adjustments using offset will move or resize the panel relative to this centered position.
An object that defines positioning and dimension adjustments for the panel and its trim.
It has a nested structure:
* **panel:** Contains transformations for the main panel.
* **translation:** An object with ''x'', ''y'', and ''z'' keys for moving the panel in millimeters relative to the frame's center.
* **dimensions:** An object with ''x'' and ''y'' keys for adjusting the size of a **SOLID1_1** panel in millimeters.
* **trim:** Contains transformations for the trim geometry.
* **translation:** An object with ''x'', ''y'', and ''z'' keys for moving the trim in millimeters.
* **scale:** An object with a ''z'' key for additive scaling on the Z-axis (e.g., 0.01 results in a scale of 1.01), useful for creating overlaps.
Note:
A legacy flat structure for offset with top-level x, y, z keys exists but is not recommended for new configurations.
| Figure 16: EMPTY | Figure 17: SOLID1_1 | Figure 18: SOLID1_3 |
|---|---|---|
| | |
Caption: Visual representation of the EMPTY, SOLID1_1, and SOLID1_3 models for the innerPanel parameter. |
||
*Figure: Visual representation of the EMPTY, SOLID1_1, and SOLID1_3 models for the innerPanel parameter.*
*Figure 2: flatPanel with SOLID1_3
The subframe structure is used to attach one or more secondary frames to a primary model. Each subframe is composed of individual pieces that are generated based on a specified model type, intersection logic, and profile path.
| Figure 25: Subframe Illustration |
|---|
|
| Caption |
| FlatPanel frame with generated subframe in red. |
Type: array of objects
Required: No
Defines one or more subframes attached to the main model. Each subframe entry references a specific model type, intersection mode, profile path, and an identifier. Typically, four subframe pieces are defined per subframe.
: Type: string Enum: `FLATPANEL1_0` Default: `FLATPANEL1_0`
Specifies the model type used for the subframe.
* **intersection**
: **Type:** ''string'' // **Enum:** `TRIANGLE`, `SOLID` // **Default:** `TRIANGLE` \\
Defines how the subframe boards are intersecting each with one another.
* **profile**
: **Type:** ''string'' \\
References a path ID defined in the global `paths` array used to generate the subframe profile.
* **id**
: **Type:** ''string'' \\
Unique identifier for the subframe. This value is used to reference and name generated subframe elements.
* **offset**
: **Type:** ''object'' // **Required:** No \\
Defines an optional translation offset of the subframe in millimeters.
^ Offset Parameters ^ Description ^
| **x** | horizontal offset (width) in mm. |
| **y** | vertical offset (height) in mm. |
| **z** | depth position offset in mm. |
* **pieces**
: **Type:** ''array of 4 objects'' // **Required:** Yes \\
Contains exactly four subframe pieces (see illustration above), each defined by a unique ID. Optional UV parameters overwrites may be provided for individual pieces.
* **id**
: **Type:** ''string'' \\
Unique global identifier for the subframe piece (also used as the output mesh name).
* **uv**
: **Type:** ''object'' // **Required:** No \\
Optional UV mapping settings for the piece.
^ UV Parameters ^ Description ^
| **rotation** | Rotation of UV map in degrees. |
| **patchSize** | Size of UV patch in millimeters. |
| **uvorigin** | **Enum:** `ORIGIN`, `CENTER`. Defines UV anchor point. Default: `ORIGIN`. |
| **uOffset** | UV translation offsets for U-axis in millimeters. |
| **vOffset** | UV translation offsets for V-axis in millimeters. |