ReleaseNotes:Planimate 5.20 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


  • NEW Table views can now have resizeable columns
    Enabling the "Resizeable Columns" table option enables the columns to be resized by dragging on the column separator line
    Enabling "Column Separators" extends the column separator line up to the column label area


  • NEW Value format "RGB"
    This formats colour values as hex RRGGBB which is commonly used in graphics design.
    (internally they are represented as 00BBGGRR on x86 systems).
  • CHANGE Improved the "no outgoing flows" portal error message
  • CHANGE Cleanups to track system UI: "section details" menu option and dialog removed (the network details table replaces it) default name for track table is now "Track Network Details" automatically added section control columns have a default clear value of 100 New sections are automatically added to the model object list "Section Type" column is added to an automatically created Track Network Table Redundant naming options for track sections removed Sections are automatically added to the model object list A "Section Name" column in the track table stores the section model index

  • CHANGE Protect against multiple tracks in same direction between 2 objects since its not supported by track table


  • NEW INI file has new settings for:
StepEditorW  These set the size of the routine step editor dialog

ItemPopupW   Set the size of the item-click popup

DragGridX    Set the default movement grid
 Making the routine step editor bigger allows more space for the expression edit field

  • NEW Added some accellerator keys to the breakpoint dialog
  • FIX The locale change in 5.20i had more effects than anticipated especially on number formatting when not in a US/English locale, which caused problems with the number formatting code.
    The locale now only affects the string comparison code, as intended
  • CHANGE The "IDKBaseEnable" INI option is now renamed "UseOnlineHelp" to reflect its function
    Setting this will cause PL to use the wiki for context sensitive help instead of the local help files.
    Pressing CTRL whilst clicking a context help button toggles use of the local or online help.
  • REMOVE Obsolete routine operations for primary/secondary bookings, SetOncomingTrain and SetLookthroughJunction
  • REMOVE Track length setting - this can be managed by the modeller now


  • CHANGE Cleanup to toolkit to remove 32/64 bit compiler warnings. This should not have broken anything. Look out for any errors particularly with text handling.
  • NEW Routine operation "UnblockTrain" enables the modeller to trigger an unblock for all blocked trains or a specific train ID.
    if ID is 0 then an unblock attempt is made for all trains
    If ID is set > 0 then an unblock attempt is made only for the specific item with the matching item ID
    The detailed way it works is as follows: An unblock event gets posted to the FEC with the train ID to try. When the event is processed, if the blocked train is still in the blocked train list, it and only it will get an unblock attempt.
    This makes this operation safe even if the train already became unblocked (or even exitted the model) before the unblock message it processed.
    This operation is useful where the modeller knows a state change in a track network can release trains. If the train ID is known, then using it can avoid the platform unnecessarily testing all the blocked trains. This will improve performance in networks with many blocked trains.
  • NEW Conditions can be edited using the expression editor. They remain internally represented in the condition structures to retain compatability with the graphical condition editor and the binary search mechanisms.
    Retaining compatibility has 2 side effects:

- conditions display with AND and OR but when edited will use
&& and ||, the expression lanuage notation for AND and OR
- since the condition editor does not follow BODMAS but the expression
editor does, brackets will be automatically added to clarify the
order that evaluations are done. The current algorithm is a bit
excessive with the brackets.

FIX Handling of lower case and text sort order now follows current locale

  • FIX Planimate now treats non breaking whitespace (0xA0) as a space when trimming spaces from labels
  • FIX Removed ability to edit references when a route assign change object is opened during simulation (it can still be inspected).
  • FIX Fix track network details build not setting the tuple names of columns it newly added, causing it to add them again
  • CHANGE Better memory management when a new table is created


  • NEW Further rework to track section time handling. This affects track models. They will need minor alteration with this PL version:
    This is the final major rework of the PL track infrastructure, the supporting model code is currently being finalised.
    1. Automatically Generated Section Location Table always on
    Track sections now always use a table to control their times and restriction level. In past versions, sections could be manually configured in interaction mode.
    2. Section Time Column Specification
    The way that trains identify which column their section run time should be read from has been changed. In past versions, a modeller defined attribute was used. Now, 2 new system maintained item attributes are used:
    s.ItemTrackForwardColumn s.ItemTrackReverseColumn
    For existing models which work in 5.20g
    These attributes need to be set to the *column* index in the Network Location table where times for the train at each section will be read. PL will automatically look up the times for the section in the Network Locations table.
    This is a case of finding references to the existing item attributes that the model was using and replacing them with references to the system item attributes.
    Its important that both "forward" and "reverse" directions are set up (but they can point to the same column).
    3. Obsolete system attributes have been removed
    The following track related attributes are now remvoed and existing references will cause errors when the model is run (which assist in locating them).
    s.BookingId s.ForcedStop s.InLoopInRoutine s.InLoopOutRoutine s.InJunctionLoop
    4. Automatic creation of the Network Location table
    When the model is started, PL checks the table referenced in the Network Details dialog exists and contains the From and To columns. If it doesn't, the user will be asked whether to create it.
    These changes are part of the consolidation of the track system capabilities and will reduce resource usage and decrease run time for large track models (avoiding the use of memory hungry references and avoiding item attribute lookups for every train movement).
  • NEW End User Option "Center Icons On Spatial Links" causes ioons on all spatial links to be drawn centred rather than against their bottom left corner

  • CHANGE Label list handling of empty labels in the table editor has been cleaned up.
    A new label list option "Interpret Empty Input As Label Index 0" controls the behaviour
    Off (default):
    If an empty label is entered (eg: in a combo field) and enter is pressed to accept it, it is treated as cancel and ignored
    If an empty label is entered then it is stored as label index 0
    This helps prevent empty labels ending up in label lists due to sloppy user editing.
    Note that if a label list already contains an empty label at a non zero index, PL will attempt to continue using its index. However its recommended that empty labels be reindexed to 0.
  • CHANGE DataSet2 had the tendency to add "0" as a label for numerical 0's in the data which didnt actually correspond to a label. The label list option "Interpret '0' As Label Index 0" is now handled by the dataset2 label loader and such indicies will stay 0.

  • CHANGE The ReFilterTableView routine operation will now apply to all views of a table if the panel index is set to 0
  • CHANGE See 5.20e release notes below for new note on a change to CopyFromClipboard. This note was missed from the release and affects how the "options" value is treated.
  • CHANGE Internal rework to support 64 bit platform. This should not affect the 32 bit version.

5.20g [new file version]

  • NEW New routine operations
    allow a viewport's zoom/scroll to be queried dynamically.
  • FIX Attributes modified while DisableUndo is set no longer initiate unblocks on dependent objects/views.
  • FIX Customised table views would be lost after an undo of a table edit for their table
  • CHANGE Reworked code for setting attributes and cells to support a "no updates" mechanism in a more straightforward way. No expected model impact.
  • REMOVE Removed section booking support (primary and secondary) This can be implemented in the model directly
  • REMOVE Obsolete portal option "Oncoming Train Check"
  • REMOVE Obsolete portal option "Act As Junction"

5.20e [new MDL file version]

  • NEW Routine operation CopyFromView copies a cell or selection from a table view, like CTRL-C. The panel and table specify which table view.
  • NEW System attribute s.DisableUndo (Run Engine) enables the modeller to disable the undo/revert mechanism that normally occurs when a routine is executed during lookahead (before the item actually moves).
    Setting this non zero will cause attributes and tables altered during lookahead to retain whatever is done to them after the lookahead is complete.
    The modeller must set this value back to zero before the routine finishes or an error will be reported.
    This is intended for advanced users who are hooking into Planimate's lookahead mechanism, for example in routing trains. A previous "hack" way of achieving this functionality was to send a message during lookahead, since the undo mechanism did not extend to the message.
  • CHANGE CopyFromClipboard has different behaviour for the options.
    It now requires "options" to be set; 0 no longer defaults to using the clipboard options. The bits are: 1: row labels 2: col labels $: formatted
    So formatted with column labels needs value of 6

  • CHANGE The MatchedIndex reference type no longer stops with an error if a matching error occurs, it just returns 0.
    This enables simple searches to be replaced with matchedindex references which is both faster and more memory efficient.
  • CHANGE Routine operation ImportIntoView renamed PasteIntoView
  • CHANGE Control key navigation no longer possible in user mode, to prevent users going places the modeller didnt intend
  • CHANGE The internal type of the iterate variable in a SEARCH operation has been changed to a long integer.
    This means the search iterator variable will be treated as an integer and is limited to about 2 billion before it rolls over.
    This should not affect any existing models.
  • CHANGE The mechanism for allowing breaking out of endless loops will now work for situations where routines are calling other routines. (the breakout poll counter is only reset when an event with a different time occurs).
  • FIX Purge attributes will no longer remove an attribute that is in the data objects list
  • FIX Track Swap Ends was broken

5.20d (new MDL file version)

  • NEW Table views with the column filter option enabled have a new option in their configuration context menu to specify a "Filter Broadcast". This gets sent after a change is made to the filters.
    It is useful where an update or resort is needed after a new filter has been selected.
    As for a table click broadcast, the view column, actual column and data id are set. Refer to the tuple reference (help menu) for the actual attribute names


CHANGE Track log item parameters are no longer sent back from a message item to the parent of the message. These include:

- loop enter/exit start/end delay times
- section nominal running time (s.TrackSectionNominalTime)
- section id (s.TrackLastSectionId)
- road id (s.TrackLastSectionRoad)
These parameters, logged and maintained by the track system, were being overwritten when a message item returned.

CHANGE An item that carries other items used to be called an "Agnet" its now called a "Carrier", a clearer term.

  • CHANGE s.ItemActAsAgent has been renamed s.ItemActAsCarrier

CHANGE "Agent Drop-OfF" has been renamed to "DropOff" and "Agent Pick-Up"  has been renamed to "PickUp"

CHANGE PL no longer has the "agent" checkbox when a new class is named. This can still be set:

- from the item class context as a defaullt
- dynamically using the s.ItemActAsCarrier attribute

CHANGE Table Click Broadcast behaviour:

1) table clicks now send 2 additional attributes _from_row and _from_col pass the top left corner of any selected region. If there is no selected region, they are set to the current cell (like _row,_col)
2) the _to_row and _to_col attributes will now be set to the bottom right of any selected region even for all table clicks. In past versions, they were set to the current cell for cell clicks/context clicks.

  • REMOVE Panel display options "Show Loop Names" "Show Item Paths" "Show Agent Paths"
    are removed. Show/Hide flows from the background context menu is still supported


CHANGE Planimate no longer uses track loop objects.
Track loops are now implemented using portal logic code. Documentation and demonstration models of this capability will be forthcoming
Old models containing them will give an error on load.

Current PL license holders should  contact ID for assistance
if they need assistance porting track loops.

  • NEW Sub Label list option "User Can Add Labels" With this option selected, labels typed into table fields/combos will be added to the sublabel list and also to the parent label list if they were not already members.
  • CHANGE The reallocate table rows operation will now release the allocated memory for a table if its count is 0 and the table contains 0 rows
    This provides a way to release large allocated tables but be careful about fragmentation if you allocate/deallocate frequently.
  • SPEED inlined some table code for speed
  • CHANGE Track rework tech details:

- removed loop object
- track object reworked to assume just 2 endpoints
(trackstation) which interface to portals and
a section inbetween
- found that tracks were repeatedly saving static
data, wasting MDL space
- track runtime code uses direct references between the
section/endpoints (no lookups needed now)
- route stores pointers to Portals now since no other
object can be on route
- removed base class for section and station,
section instance and station instance
section is just a simobject (like a spatial link)
station is now standalone as its just an interface class
- station/stationinstance no longer inherit from
simobject/instanceobject since they dont use 90% of
the functionality
- section names kept more in sync with endpoints
- Added an abstration layer for the FEC to manage objects
with (so it can send loop delay notifications to
- menu cleanups to remove loop references
- loop attributes left in place but return 0
- TrackLoop and TrackStation no longer reistered
PL objects
- inlined a LOT of code
- removed a LOT of track lookups and searches that are not
needed (some might reappear as services to the modeller later)