Table of Contents

Multi-connector Structure

Note

This is currently a preview feature and not available for all users.

Overview

Multi-connector structure is a structure logic that allows construction of modular products using parts and connectors. For any part in the composition, the configuration permits definition of connectors, which points to which another item can be connected. The role of parts inside the structure can be categorized based on the number of connectors they have. Parts with a single connector acts as end pieces, parts with two connectors can be used to build a linear segment, and parts with more than two connectors can be used to introduce branches to the structure. Additionally, at least one part must have a root connector, which is used to start the building by connecting it to the floor, wall, or a parent component.

Products using multi-connector structure can vary a lot in complexity. A simple configuration with a small number of parts and connectors works in a similar way than a Slot or a Linear Structure. On the other hand, complex three-dimensional patterns can be created by having many connectors with different rotation values.

Base properties

RootProperties

ITEM_TYPE: MultiConnectorStructureDefinition

Property Name Type Localized Description
Enabled Toggle/scripting N Toggle this to enable/disable all the elements under the multi-connector structure. If toggle is disabled, in the web app they will be hidden
DisplayName Text Field Y Used as a subcategory name
ItemPlacement Radio Button N When instantiating an element: - PlaceSingle (will show the possible placer one time only, then you need to click the element again.) - PlaceInSequence (will show the placer automatically after every addition, hence making adding new elements faster.)

Optional property sets

Connectivity Matrix

Multi-connector Structure Connectivity Matrix Properties

PROPERTY_SET: MultiConnectivityMatrixProperties

Property Name Type Localized Description
Expand Matrix Button N Opens a new panel for editing the connectivity matrix
Connections chart view N Specifies if two connectors of connector types given by the row and column are allowed to form a connection

CustomProperties

Custom Property set (or sets) allow definition of logic that defines something that otherwise is not predefined in the system logic.

PROPERTY_SET: CustomProperties

Property Name Type Localized Description
Name Text field N The name of the custom property. It can be referred to from other scripts
Value Scripting N Value or scripting logic that the property has

ValidationRule

Validation rule property set is used to define logic that can be useful to ensuring the item where the validation rule is will follow define rules.

PROPERTY_SET: ValidationRule

Property Name Type Localized Description
DisplayMessage Text Field Y Text that is shown on the Planner when the conditions of the rule are true
Level Radio Button N Selection should the rule show error, suggestion or indicating something is missing
Trigger Scripting N The logic that defines the validation rule
Note

Validation rule level states correspond the next error levels. Error => "Error" Missing Selection => "Warning" Suggestion => "Info"

If the "add to cart" button is available, in case we have an error, the add to cart button will be disabled and not clickable until the error is fixed.

ClassificationTag

Classification tag allows the configurator to assign a custom tag name to a product item. These tags are exposed in the scripting system via the Tags property alongside automatic tags such as role:product and list:*. Use the built-in Contains function to check whether a component or structure has a given tag:

Contains(Tags, 'BottomMAT')
Contains(Root.Bottom.Component.Tags, 'BottomMAT')

PROPERTY_SET: ClassificationTag

Property Name Type Localized Description
Tag Text field N A label that is associated with the item it's been configured to

Per part configuration

The Parts that are placed as children of the Multi-connector Structure are considered as items where the logic of the Multi-connector Structure will apply. In order to the part to be available, at least one Connector property set must be added to it. By default, a newly added parts has three connectors: Left, Right and Ground. These are not mandatory and can be freely modified by the user.

Example of the Multi-connectorStructurePropertyset

parameter type explanation
Name text Name of the connector. This name is used as a scripting property on the component, enabling this.<ConnectorName>.IsConnected expressions. Connector names must be unique on each part.
Type text Type of the connector
Alignment 3D coordinate the position of the connector in 3D space
Offset 3D coordinate absolute offset of the 3D mesh on the bounding box
AlignedOffset 3D coordinate relative offset of the 3D mesh on the bounding box
Rotation degrees on 3d axises degree of turn in the respective 3D axis relative to the bounding box
DisabledBeforeInstantiation toggle If enabled this connector is used only if the part is already placed in the scene. Setting this to true can be useful in symmetric corner parts in order to single out a primary connector.

As opposed to linear structure, two connecting connectors must have an opposite rotation in order for them to connect in the right way. By default, the connector points up, and has an axial alignment in Z-axis. Refer to the 3D terminology and 3D configuration guides for detailed explanation of the parameters for alignment, offset, AlignedOffset and Rotation

Multi-connector Logic Connectivity Matrix

Connectivity matrix controls which connectors are allowed to join together. The matrix is formed on columns and rows and checkmarks crossing the column and row.

Scripting

Multi-connector structures and their components expose several built-in properties for use in scripts.

Structure-level properties

Property Type Description
ComponentCount Number Total number of components currently placed in the structure.

Component-level properties

Each component exposes connector properties in two complementary forms:

Named access — each connector is directly accessible by its authored Name. If a part has connectors named Left, Right, and Root, the component exposes top-level properties Left, Right, and Root, each being a connector record with the fields listed below. Named access is the recommended approach when connector names are known.

Important

Connector names must be unique on each part. A connector name that matches another scripting property on the same part (for example the indexed array accessor Connectors, a custom property, or another connector with the same name) causes a runtime data generation error.

Indexed access — the Connectors array provides zero-based indexed access in the authored order of the Connector property sets on the part. For example, if a part has three Connector property sets defined in the order Left, Right, Root, then Connectors[0] refers to Left, Connectors[1] to Right, and Connectors[2] to Root. Indexed access is useful when writing generic scripts that iterate over connectors by position.

Property Type Description
<ConnectorName>.IsConnected Boolean True if the named connector is currently occupied by any connection.
<ConnectorName>.Offset Vector3 Absolute 3D offset of the named connector.
<ConnectorName>.AlignedOffset Vector3 Relative 3D offset (aligned) of the named connector.
Connectors[n].Offset Vector3 Absolute 3D offset of connector n.
Connectors[n].AlignedOffset Vector3 Relative 3D offset (aligned) of connector n.
Connectors[n].IsConnected Boolean True if connector n is currently occupied by any connection — including the component's own attachment connector, hosts for child components, and additional connections discovered via transform matching.
ConnectionCount Number Total number of connectors on this component that are currently occupied by any connection.

Example expressions

Check whether the named Root connector is used to attach the component:

this.Root.IsConnected

Conditionally show something only when the Left connector is free:

NOT this.Left.IsConnected

Check whether the component uses its Root connector (index 2) to attach to the structure (indexed form):

this.Connectors[2].IsConnected

Get the total number of connected connectors on this component:

this.ConnectionCount

Show a part only when all its connectors are occupied:

this.ConnectionCount == 3
Note

A connector is considered connected if it participates in any connection: as the component's own join connector, as the parent-side connector for a child, or as either endpoint of an additional connection formed when multiple connectors align perfectly during placement. ConnectionCount counts all such connectors on the component.