Copies of System Blocks
Copy Function
Block reusability is possible with the use of the “Copy” function.
To copy a Block and all its Valis, right-click on the Block and select the "Copy" button as in the Video Creating a Block Copy.
A replica of the Block with the same name but with a numerical suffix. Once the Block is copied, the copy’s name can be changed and it can be moved anywhere within the Blocks tree in the same Project or to another Project entirely.
Copy & Connect
If you just copy a Block (as mentioned above), any modifications made to the original Block will not be reflected in its copy.
By creating Connected Copies a two-way synch will be setup where changes to a Block’s struture and Valis will be reflected in the other as well and vice-versa.
To create a connected copy, click the "Copy & Connect" button. All changes made to these Blocks' (properties, Valis, sub-systems, etc.) will reflect all of its Connected Copies. Connected Copies can be identified by the chain icon on the Block's cube symbol, as in the Video Creating Block Connected Copies.
Connected Blocks can be traced through the “Connected Copies” field (2) in the Block’s Info field (1) as shown in the Figure Block Info Tab.
Disconnecting Blocks and Valis
Blocks and Valis can be disconnected. This is done by right-clicking on the Block and subsequently clicking the "Disconnect” option. For a Vali, it is done by clicking the connected symbol on the right side of the screen. Disconnecting specific Valis allows for the creation unique Valis in a connected copy of a Block. All other Valis of the same Block will still be connected as in the Video Disconnecting Blocks.
Disconnected Blocks cannot be reconnected, disconnected Valis can be reconnected as long as their Connected Block remains connected.
To disconnect a Vali in a Block (Video Disconnecting and Reconnecting a Vali) click on the three dot icon in the “Actions” column and click “Disconnect”. To reconnect it follow the same procedure and click on the “Reconnect” option.
The Connected Copy property is not an intrinsic property of Blocks or Vali, it is its own object accessible through the “/instances/component/” and “instances/vali/” endpoints, respectively. These endpoints will return a list of dictionaries, each a grouping of connected copies.
Connected Copy Logic
The following section is meant as a look-up if you would like to know how the System Design Module behaves in edge cases before you apply the change.
A short in-depth overview of the connected-copy behaviour for advanced users.
Blocks:
If you create a copy of a Block, the two Blocks and all of their Valis are connected
If the Block has child Blocks, these are also copied and connected
If you disconnect a Block, all of its Valis are also disconnected
Valis:
If the value of a Vali is changed, all connected Valis will be updated with the same value
Self-references (a Vali referencing another Vali of its own connected Block) are maintained for connected Valis (they will also reference another Vali of their own Block)
Disconnecting Valis:
If a Vali is disconnected, no change is applied to its value
If you had three Valis which were connected and you disconnect one, the other Valis still are connected