Using template scripts for fast visualization of Signalized Nodes

Technical Note #43

January 2020
By Margarida Delgado

In this technical note, we’ll take a look at one of the scripts in the template that you can use to speed up the process of filtering and viewing signalized nodes.

Script number 10 in the template list will search through all of the nodes in the model, and then assign a node attribute, called GKNode::hasControlInfo, as being either true or false (or it creates that node attribute if it doesn’t exist).

When you execute Script 10, the main function will be called and a dialog will open with the following options:

  1. All Control Plans
  2. One Control Plan
  3. All Control Plans in a Master Control Plan

Drop down menu for GKNode::hasControlInfo

If you choose the option ‘One Control Plan’, you’ll need to provide the control plan ID number; if you choose the option ‘All Control Plans in a Master Control Plan’, you’ll need to provide the ID number of the master control plan.

The function getCreateNodeAttribute() checks if the attribute GKNode::hasControlInfo exists. if not, it will create it. The type of values that this attribute accepts will be Boolean (true or false). The external name will be Has Control Info?

The function isNodeInCP( cp, node ) just determines whether a particular node has info for a particular control plan; it returns 0, i.e., false or No, if there is no info; and 1, i.e., true or Yes, if there is info. The function getControlJunction() will return 0 when the node appears in the control plan as Unspecified (i.e. no info).


When looking for all control plans, the function startCalculation(column) will be executed. It iterates all nodes and, for each node, it iterates all control plans. Nodes are all GKNode-type objects and control plans are all CKControlPlan-type objects, so find them with the getCatalog().getObjectsByType(enterType) function.

When looking for one particular control plan, the function startCalculationCP(column, cp) will iterate all nodes of this particular control plan.

When looking for one particular master control plan, the function startCalculationMCP(column, mcp) iterates all nodes and all control plans inside that master control plan, whatever the timetable or zone.

Once the script has finished, you can visualize nodes with no info, creating a view mode: