Composition
Learn how nested blocks and merged scope turn reusable pieces into assemblies.
Follow the deterministic runtime flow from resolved inputs to active state, realized geometry, nested blocks, and outputs.
Every block reference follows the same evaluation sequence, regardless of where it appears in the system.
Evaluation is the runtime that transforms definitions into actual drawings and outputs.
Block definitions define behavior. They contain the parameters, variables, states, lookup tables, and geometry that describe how a block behaves.
Block references execute behavior. When a reference is placed on a sheet or nested inside another block, the engine resolves its inputs and evaluates the definition in that instance context.
Evaluation executes those relationships. This is why one definition can produce many different results. The authored behavior stays the same, but the evaluated result changes with the inputs and surrounding context of each reference.
In a coordinated panel system, evaluation order is what keeps sizing logic, selected variants, geometry, and output rows aligned instead of allowing them to diverge.
Evaluation follows a deterministic runtime flow. Parameters on a block reference resolve first, including explicit values, inherited values, defaults, and any valid parameter-to-parameter dependencies.
Variables evaluate next from those resolved inputs. After the values for the instance are resolved, the active state is determined. Only then does the engine realize geometry, nested blocks, and output data from that resolved context.
Resolution is the phase where the system computes values. Parameters settle to concrete inputs, variables are derived, and the active state becomes known.
Realization is the phase where the system generates results from those computed values. Geometry is built, nested references are evaluated in context, injection applies resolved values into authored content, and outputs are produced from the realized instances.
This distinction matters because a system can resolve correctly before it visibly realizes anything. If realization were mixed into early value computation, the engine would be forced to build geometry before it fully knew what the instance meant.
The definition is like authored behavior waiting to run. Each reference is a runtime instance that executes that behavior with a specific set of inputs and a specific parent context.
This mental model explains why one definition can produce a narrow instance, a wide instance, or a nested assembly without changing its authored logic. The runtime context is different, so the realized result is different.
Evaluation is deterministic. Given the same authored definitions, the same inputs, and the same surrounding context, the engine resolves the same result. This predictability is essential because drawings and outputs both depend on the same execution path.
Nested evaluation introduces an additional subtlety. When a child block reference is realized inside a parent, it does not evaluate as a disconnected object. It evaluates in a context that already contains the parent-resolved values available to it.
Injection belongs during realization rather than during pure logic definition. Logic defines relationships. Evaluation executes those relationships. Injection then applies the resolved values to geometry, text, directives, and output-facing fields while the instance is being realized.
A control power assembly is a concrete example. Parameters such as load and voltage resolve first. Variables compute sizing values. State selection chooses the correct variant. Realization then produces geometry, injected labels, and outputs from that resolved state.
For the definition layer behind this flow, continue to Logic System. For exact syntax consumed by evaluation, use Reference. To see the runtime flow in a working document, use Help or open the Control Power Panel example.
Learn how nested blocks and merged scope turn reusable pieces into assemblies.
Follow a guided example to watch these ideas update in a working LogiDraft model.
Use the reference when you want exact syntax, commands, function signatures, and field names.
Trace the runtime flow from resolved inputs to realized geometry and output data.