Software Documentation

Software Documentation

Firing System AddressingDocumentation

Intermediate Last updated: November 1, 2024

30 Sorting positions across multiple blueprints or sections

The addressing dialog and the addressing blueprints enable you to specify the sort order in which addresses are assigned.   The most common sort criterion is sorting alphabetically by Position Name.   Although people think of sort criteria as applying globally across the whole show, the addressing functions divide the positions into addressing groups of positions that can share modules (see Addressing groups), and the sort criteria apply within each addressing group.

If the addressing dialog or blueprints include the constraint restricting modules to a single position, then each position is its own addressing group, and the addressing functions will sort them exactly as you specify.  But if the positions don’t include the module constraint, then addressing groups contain all the positions that have the same addressing blueprint, section, and a few other properties (see Addressing groups).  The blueprints and sections then affect the way the positions are sorted for addresses.

 

Example

Consider a set of six positions, A, B, C, D, E, F, addressed without the constraint restricting modules to a single position.  Positions A, C, and D are sharing modules in one addressing group (say they have Section = “field”); the other three positions are sharing modules in a different addressing group (say they have Section = “path”, causing them to be a different group).  Because the sections are different, there is no sharing of modules between A, C, D and B, E, F.

If you address the whole show sorting by Position Name, you may be surprised to see the addresses assigned to positions in the order A, C, D, B, E, F.  The reason is, the addressing function assigns addresses for the first group containing positions A, C, D in order; and then it assigns addresses for the second group containing positions B, E, F in order.

If the sort criteria apply within each addressing group, what sort criteria apply between addressing groups?  In the example above the addressing function assigns addresses for the A, C, D group as the first group, but how did it decide that was the first group?

Addressing groups are sorted relative to each other based on the “sort factor” of each group.  Depending on the sort criteria from the addressing dialog or applicable blueprint, each group’s sort factor is either the alphabetically first Position Name in the group, or the alphabetically first Custom Position Field in the group, with the Position Name as the tie breaker.  In the example above, the sort factor for group A, C, D is “A”; the sort factor for group B, E, F is “B”; so group A, C, D is first.

If the sort criteria from the addressing dialog or blueprint do not explicitly begin with Position Name or Custom Position Field, the sort factor is Position Name by default.  If different addressing groups have different sort factors based on different sort criteria (Position Name versus Custom Position Field), then the comparison between the groups is undefined but deterministic.  If multiple addressing groups have the same non-blank Start Module, then as a special case the addressing algorithm adjusts the sort order to make those specific addressing groups consecutive.

 

What to do

Having different blueprints or sections does not affect the sort order of positions unless the constraint restricting modules to a single position is absent.  If you have removed that constraint to permit module sharing, then you may encounter sorting scenarios like the example above in which positions are sorted as specified locally in each addressing group but not globally across all addressing groups.

If that result is unsatisfactory, one approach to getting the desired sort order is to subdivide the addressing groups with more specific section names to the degree necessary for the combination of local sorts within addressing groups to be the same as the global sort.  In the example above, if you split “field” into “field1” for A, and “field2” for C and D; and if you split “path” into “path1” for B, and “path2” for E and F, then the addressing groups and their positions will sort globally in the specified order.  Splitting up addressing groups also splits up the sharing possibilities, which you may not want.  It is not always possible to have a desired set of sharing groups and global position sorting simultaneously.