This option must be used
only once and only when the whole MSO structure has been completed.
The reason is that every time you add, erase, or modify any item in the scenery you change
the global structure of the scenery and the previous calculations are no longer correct.
The purpose of Maximization is to avoid any type of redundancy in the macro file, to reduce the size of the file, and the number of subroutines and calls in the macro itself in order to get better performance.
You can also use the Maximization panel to rotate a part of your macro.
I think the best example I can use is a Terminal with 6 gates spaced around the terminal.
Since the gates are all the same you should start by making one gate and saving it as a Structure. Once one gate is made you can start to draw the main terminal and then place the six gates around it.
![]() |
This design,
used in one of the example files, shows the terminal building and the 6 gates around it. You can also see that gates 4, 5, and 6 are rotated 180 degrees compared to gates 1, 2 and 3. |
![]() |
This is a view of the main panel with the terminal and gates placed at the right (X,Y) coordinates. If you save it as it is, and do not maximize the macro, the program will generate a separate subroutine for each gate used. This means that while your macro will still work it will use about 6 times more file space than is needed. It is quite clear that it is more advantageous to generate one subroutine for all of them and this is what it can be achieved with the Maximize MSO option. |
![]() |
This is the Maximize panel. When you save the file Nova generates a module for each sequence. For Sequence 01 it will use Module01, for Sequence 02, Module02 and so on. The table shows that Gate 3 will use Module05 and will be rotated 0 degrees. The Resequence button resequences the Use column from 01 to nn. It is important to know that every time you add, erase or move a sequence in your main panel, the program will automatically resequence all macro objects. That's why this option must be used only once, after the macro is tested and working, to optimize the code. |
![]() |
Since we want to use the same module for all our gates we can start to change it as
follows:
We will do the same steps for all our gates, one by one. |
![]() |
After changing all the required modules we will get something like this one. You can see that all the gates will use Module03 and some of them will also be rotated by 180 degrees. This results in a great saving of code and file size. |