ReleaseNotes:Planimate 5.24 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search



  • NEW System attribute display popup. This is available from both the run stop/breakpoint dialog and also as the "SYSTEM" option on the item click popup menu.
  • FIX Track drawing / colours. Removed line styles


  • NEW Routine operations "Convolve" and "Normalise" are useful when working with columns of statistical probabilities.
    Normalise rescales a column so it adds to 1
    Convolve multplies and sums two columns against each other, putting the result into another column. All columns must have the same # of rows.
  • NEW Time formats "D HH:MM" and "D 0H:MM" (they dont show weeks etc)
  • FIX Viewport of an autosized panel on an autosized panel now works properly


  • CHANGE Dispatcher Any Orientation mode now animates items along baseline regardless of their height, making it easier to work with different icon heights. Right to left orientation now works properly
  • NEW Portal option "Hide Name" acts as if the name started with an underscore and hides the name.
  • NEW Portal option "Dont Animate To Exit" prevents flow items from animating to the portal exit position. This can be useful in flow based network models.
    Note that in track/spatial link models the item already doean't animate to the exit
  • FIX Tables views for a table will automatically have any filters reapplied when the inbuilt sort UI is used to sort them.


  • FIX The new time format in 5.24n was not properly maintaining dates between run stop/start (date bit wasn't set for that mode)
  • FIX bumped file version (should have in 5.24n)


  • NEW Dispatcher has a new "Any Orientation" direction mode.
    In this mode the dispatcher is drawn between its position and its exit (like a multiserver road) and items will queue in a neat head-to-tail configuration regardless of their width and the orientation.
    The item class options "Rotate" and "Flip Icons" should be turned on for best effect.
    [previous note about centering removed 5.24p]
  • NEW Calendar time format: YYYY-MM-DD HHMMSS
  • CHANGE Resizing a panel with dynamic resizing enabled will also resize the contents of any viewport which is being stretched/shrunk due to anchoring as long as the panel in the viewport also has dynamic resize enabled.
  • CHANGE YYYY-MM-DD HH:MM:SS format can import times without the :SS part
  • FIX Fixed a string-buffer leak that occured when table data import had had a value error on importing data into a table. This would report a systemerror 1167 on exit of the platform.
  • FIX Track road count now working properly
  • FIX Validation for bad references in SetViewProperty


  • NEW Routine operation "ResetLoopDelayTime" (Route)
    This resets the item's loop entry time so PL will think the item just entered when it attempts to leave. This enables an item to spend some time at a location without triggering a loop delay. Note that setting this changes the item's LoopEntryDelayStart time but does not affect any existing loop entry delay, which will complete normally unless the item leaves and cancels it.
  • NEW Routine operation "CancelLoopEntryDelay" (Route)
    This cancels any loop entry delay active for the item. Any needed loop exit delay will still be performed when the item is abie to get onto an outgoing section.
  • NEW Track control column now supported for all 6 possible track roads
  • NEW Application save dialog has new checkbox to enable creating a callable DLL. This option is only available to Open PBA license key users.
  • FIX s.ItemRouteSectionID now returns 0 instead of stopping run for cases where the route step is beyond the end of the route or there is no route
  • FIX ViewPorts now support anchors on both sides for stretching horizontally or vertically
  • FIX Removed ability to add links/tracks from hierarchy view, these are for the object context menu.
  • FIX Module configuration panel editing now works again (was broken in 5.24k)
  • FIX fix leak / triple track issues introduced in 5.24k


  • NEW Set "wait" cursor while exporting table data to the clipboard
  • SPEED Have sped up the creation and lookup of labels in large label lists. This was achieved by replacing linear searches with lookups using an associative map for th enames and a binary lookup for the indexes.
    For this to work, the platform requires that labels are internally stored in index order and will verify this for older models loaded.
  • SPEED Improved sort time for large multi column lists
  • FIX If a message occurred whilst PL was initialising (eg: informing about track table missing) and there was a paint object with a control attribute on the current panel, other error messages would appear.
  • FIX Deleting portals was broken in 5.24k, could not delete from the menu
  • FIX Section road filter is now properly reset in case where a loop hold is in effect.
    Also added a check for a missed road filter / lookahead combination
  • CHANGE SectionRoadAvail has been changed, notes below updated.
    It no longer checks other roads for the presence of the test train


  • NEW Added ability to Move a portal to a different owner.
  • NEW Can delete portals from the hierarchy/sidebar
  • NEW Basic support for new 4,5,6 track road modes. These extra roads are not supported for restriction control yet and animate over 3 visible lines.
  • NEW Routine operation "SetRoadCheckFilter"
    This enables track models to control which road(s) on a track section a train can attempt to use.
    This takes a cell reference which points to the first road # to check (from 1..number of roads available for the section). Planimate will work down the table column until it reaches either the last row or a 0 which terminates the testing.
    This operation must be invoked to set the road filter just before a train tests the section: this occurs in 2 circumstanes:
  • when checking a "next" section during track lookaheads
  • when flowing onto the next section (eg: from a capacity object) ie: the filter needs to be set whenever a train has the potential to test the section via any kind of lookahead. The section "forgets" the filter immediately after the test, by which time the train may have placed a hold on the road it wants. This operation does nothing during a "move" (the road would be already held and ready for the train).

  • NEW System attribute "ItemRouteSectionID"
    For an item/train which is on a route, it will return the section object index that the train would take if it went through a portal exit.
    Will return 0 if the section has no object index or if a viable section could not be found.
    Note the section is not tested for availability.
  • NEW Routine operaion "HoldSectionRoad"
    This enables a modeller to reserve a section for a train. It works in both lookahead and move and once the hold is set, any other attempt to set a hold will fail unless its the same train item.
  • NEW Routine operation "SectionRoadAvail". This returns nonzero if a given road in a section is available for a train to use.
    It does not check if the train is already booked on another road. If the same train is already booked on the road, it returns 1.
  • REMOVE "SectionFillEnable" property which was used to help the auto route generator for track networks is no longer supported. Since Tracks no longer contain loops (they are now portals) they can be distinguished directly in the route specification.
  • CHANGE Track - the item's last section / last road attributes are now set during the track check lookahead, so a node can know the section/road the item would be coming off of whould the move be committed.

  • CHANGE Table View: If pasting or importing data into a table where the view has a filter enabled that is blocking all data from view, the filter is disabled
  • CHABGE The default table cell context menu behaviour for "Import From ClipboarD" has been changed to always send a broadcast after the paste, even if the view is empty.
    This could occur either because no data was pasted or an active filter is filtering it all
  • CHANGE When paste insert/append or importing into a table view, if an after edit broadcast is selected and a filter is active, the broadcast will now be sent with from_row and to_row set to 0 to indicate you should validate all the rows.
    This is because the paste could affect rows outside the fitered view and hence from_row/to_row cannot be relied upon as they denote rows within the view only.
  • CHANGE Rearranged portal/module menu so more common options between them
  • FIX Column list width was being retained by customised column views but not editable. Added an edit option for it in customised column views.
  • FIX Fixed the comment field height in the routine editor


  • [new file version, new DLL API]
  • NEW Routine operation "RealTimeCallBack"
    This enables a modeller to schedule a "_Real Time Tick" broadcast to occur after a REAL time intervall has elapsed. The time is specified in milliseconds.
    This replaces the "Realtime" broadcast option and system attribute (removed in 5.24h). This approach gives more control to the modeller and reduces the chance of broadcast "storms".
    Use as follows:
    When you want to start receiving a regular broadcast, use this operation to schedule the first one.
    Upon receiving the broadcast, you can schedule the next one within the handler thread for the broadcast until you no longer want the broadcast.


  • NEW Table view option "Send Single Block BC For Fill/Index"
    Selecting this causes PL to send only a single "block edit" broadcast after a fill down or across instead of a cell-by-cell broadcast.
    This can greatly improve performance when many rows are being filled.


  • CHANGE The clock no longer shown by default when PL opened.
  • REMOVE The "RealTime" broadcast capability where a broadcast could be set up to trigger at very short real time intervals has been removed. The old system attributes for controlling this will now give errors when the model is run.
  • FIX Behaviour of tree selectors when the right button is used to select an item.
  • FIX If a user started a run from a broadcast button and that initial broadcast item was animating and the user clicked to display the animation pause menu, an errant redraw could cause the platform to fault when the pause menu was dismissed, due to some message pumping that is performed after popup menus to work around a bug in Windows where the Async reported mouse button state gets out of sync with the actual buttons even though higher level events for mouse up have already occured.
    In other words the workaround to a windows oddity was causing a redraw at a bad time.
  • FIX The "Format" option in the cell context menu has been removed when in "user" mode - - it contains options that end users should not be changing.
  • CLEAN Internal rewrite of how PL windows and controls (fields and buttons) are created and managed.
    The new method reduces overheads and will enable multiple PL DLLs. (removed "superclassing" of standard Win32 controls; no longer need WndExtra bytes).
  • CLEAN Cleanup of FEC, broadcasting and main window handling code. Rewrote the way "high priority"/immediate events are handled
  • CLEAN Reorganisation of the build projects for PL


  • FIX The new parentscope option was not working properly for broadcasts send whilst the engine is running


  • FIX A 64 bit incompatibility in the treeview code, causing some option panels not to populate.
  • FIX The "Check Parents For Broadcast" option, implemented in 5.24 and used when converting view panels to dynamic, was missing a condition which caused it to lock up when looking for the broadcast listener.
  • FIX Portal options were not being cleared properly for newly created portals.
    This also affected view panels converted into portals; these new portals can have silly options set. If you brought forward a model into any previous 5.24 version you should check portal options for any portals added since or any panels that converted to portals.
    Copies of portals were not affected.


  • [new version]
  • NEW The GetViewProperty and SetViewProperty routine operations have been enhanced.
    They now take an extra parameter to select the view type. This enables positions and basic colours of the graphical views to be set as was possible for the table views.
    You can use the new "_view_type" label list to select which type of view you want to find on the destination panel.
    The new paramter defaults to "1" which corresponds to table view, this keeps older models working OK.


  • [new model version]
  • NEW A separate title can be set for a panel, this is used as the title for popups.
  • NEW The DataSet1 configuration dialog (Data->Data Sets) has a new button to facilitate converting your model to use DataSet2.
    This button will automate the process of determining all the data objects present for a given dataset1 configuration, creating _data_object labels for them (if they are not already) and listing the objects in a newly created table formatted to be a valid DataSet2 configuration table.
    DEVELOPERS ARE ENCOURAGED to migrate away from DataSet1 as future versions of PL may not support it.
  • CHANGE The DataSet1 load/save options have been removed from the File menu in EDIT MODE, as dataset1 becomes obsolete.
    They are still available for the end user menu bar so models which nee them can get to them in user mode.
    Please ensure they are not visible if your model uses the standard end user menubar and only uses DataSet2.
  • FIX Fix treeview to also properly set text color
  • FIX Broadcast entry name only reset to broadcast name when a different broadcast is selected
  • FIX Added mechanism to set condition debug values to a clear state before every condition evaluation. This will clarify debug information in the condition dialog when clicking on a switch in pause mode
  • NOTE Internal code rework to enable PL to compile as a DLL which another program can load. This should not affect the regular PL EXEs but a few minor tweaks have been made to how things are managed internally.
    Please report any new odd behaviour


  • NEW Implemented paint option editing in the new editor as well as anchor option editing. These work for multiple selections
  • NEW Added an interface so most "list picker" style option edits are now performed with the new editor. These edits will show under the "Context Option" category in the editor and do not support group editing as support for this needs to be implemented case by case.
  • NEW Tree selector keeps selection visible even when it doesnt have focus
  • NEW New option dialog - bold values and values which have changed are underlined


  • NEW Added ability to edit multiple object options to the new editing interface. Currently this is useful for portal options.
  • FIX Fix wrong panel issue when editing panel options via hierarchy
  • FIX Name of view's data owner when viewing in the label list references


  • FIX Portal options editing crash introduced after I simplified some handing in the new editor


  • NOTE:
  • This version has undergone major internal rewrite and cleanup with an objective
  • of providing for better editing development, cleaning up the codebase,
  • speeding up management of very large models and keeping the implementation
  • directed at how PL is currently used.
  • Most notably, view panels and application panels have been removed.
  • Models saved with this version are not backward compatible.
  • NEW Beginning to introduce a new editor for options and settings. Initially this is enabled just for INI, Panel, Model and portal object options.
    Eventually this interface will be used wherever the 2 column "pick" interface was used, as well as for non-boolean options and it will enable properties of selection groups to be edited in parallel; this release is still in its early days.

  • NEW View Panels converted into Dynamic Panels
    For any loaded model, View Panels will be converted into "dynamic" panels, (panels owned by a portal). Most functionality will be retained but there may be some graphical tidy up necessary.
    The owning portals will be set to hide in run mode by prefixing their name with an underscore. Panel Label List IDs will be retained as will be viewport and "Change Panel" destinations.
    New options enable "out of scope" views to be used with dynamic panels, so no functionality should be lost.
  • NEW Scope Option for attribute/table/graphical views: The view's context menu contains a new "Stay With Original Data" option.
    This option makes it possible for a view on a dynamic panel to display data which is not "in scope" even though a different data with the same name is in scope.
    The option makes the view "stick" to the original data object it is associated with when the view is copied and another data object would be in scope.
    Note that in the case where both the view and its associated data object are copied, then the copy view will be scoped to the copy data regardless of this option.
    This option will be automatically selected for views that were in view panels.
  • NEW Views from any panel can be added to a dynamic panel via the background menu. Out of Scope Views will have the "Stay With Origina Data" scope option selected automatically.
    The panel selector now gives an indication of how many attributes/tables each panel in the hierarchy contains.
  • NEW Paint broadcast button option "Check Parents For BroadcasT"
    This option causes scoped buttons on dynamic panels to behave like buttons on view panels. If the panel doesn't contain a broadcast handler, the parent panel is chacked, then the grandparent etc.
    This option is automatically enabled for scoped broadcast buttons on view panels which are converted to dynamic panels in order that the buttons continue to function, otherwise they would look for a handler on themselves only (since they are now a dynamic panel) and result in an error.
  • CHANGE Application panels ("meta panels") are now just normal portal subsystems. Capabilities only available in application panels are now available in all panels.
  • FIX Table cell edit now will use ellipses (...) in cases where the text is longer than the field and its a single line cell. Its not supported for multiline as multiline text isnt drawn properly.
  • FIX Re-ordered panel code so popups are hidden at run engine restart before attributes caches are cleared.
    This was to prevent an error when a run restart occured whilst a popup with a paint button with states controlled by a portal attribute in the scope of the popup.

  • FIX PL was losing track of its DB file if "Save As" was used to save the model into a different directory. This problem can be worked around in older PL versions by reloading the model after the save-as.
  • FIX External file label list mechanism, used to enable files to be provided by the end user at runtime to an application, now supports JPG file types being specified.
  • REMOVE Removed the icons in the tree view since they are all dynamic panels now
  • REMOVE Lots of internal code for editing and manipulating view panels, just
    left minimum needed to load and convert them to dynamic panels.