Logic System
Understand formulas, lookups, injection, and the rules that resolve block behavior.
Understand the main authored unit in LogiDraft: reusable block definitions, the references that instantiate them, and the inputs they resolve.
A block definition is a reusable component. It contains states, parameters, variables, selection logic, optional lookup tables, and the primitives that belong to each state. A block can represent a part, an assembly, or a larger system fragment.
Block definitions define behavior. They are not just geometry containers. They are the core unit of LogiDraft and the place where logic, parameters, and behavior are defined.
Everything else in LogiDraft exists inside or is evaluated through blocks. Blocks are the system.
The definition is the authored source. It describes what the block can do, what inputs it accepts, what values it computes, and what geometry or nested content it can realize.
Block references execute behavior. A block reference is an instance of a block definition placed on a sheet or nested inside another block. It points back to one definition but can carry its own parameter values, insertion point, scale, rotation, and chosen state.
Multiple references can use the same definition while producing different results because each instance can resolve different inputs. The definition stays stable. The instance behavior varies with context.
Use blocks when behavior should be reusable, parameter-driven, or nested into larger systems. Do not create a new block merely because one isolated piece of geometry exists once and carries no reusable logic. Blocks are most valuable when they capture behavior, not when they simply wrap a one-off shape.
Parameter precedence is a key bridge between authoring and execution: explicit values on a reference win first, inherited values win next, and defaults on the definition fill the remaining gaps.
Parameters are the primary authored inputs on a block definition. They define the values a user or parent system can supply for each instance. Parameters can be free values or option-constrained values, and they are typed as number, string, or boolean.
At the block-reference level, parameter values can be literal values, inherited values, direct references, or formula expressions. They are resolved before block logic is fully applied.
Variables are derived values defined by formulas. They compute secondary values from parameters and other variables and are used to drive geometry, state selection, text, directives, and outputs.
States let one block definition hold alternate geometry and behaviors without splitting that logic into separate definitions. Each reference resolves to one active state at evaluation time, which is how the same block can behave like different variants while still sharing one authored system.
The cleanest way to understand a block is as a reusable program definition. The definition holds the logic. The reference is the runtime instance that supplies actual input values and context.
That framing helps separate authoring from execution. You do not copy behavior when you need variation. You instantiate the same definition again with different inputs.
A definition does not become different just because one reference uses different parameter values. Variation happens at evaluation time inside each reference context.
This is why parameter overrides matter. Two references can share one definition yet produce different geometry, different state selection, and different output fields because explicit values, inherited values, and defaults resolve differently in each instance.
The subtle behavior is that references can vary without fragmenting the library. When variation belongs to input data, it should live in reference-level resolution rather than in duplicated block definitions.
A motor starter is a concrete example. One block definition can describe the starter behavior, while separate references resolve different horsepower, voltage, and protection choices without forking the definition.
For the rules that govern relationships inside blocks, continue to Logic System. For exact parameter and reference syntax, use Reference. To see reusable blocks assembled into a working system, use Help or open the MCP example.
Understand formulas, lookups, injection, and the rules that resolve block behavior.
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.
See one system assembled from reusable definitions, each instantiated with different inputs.