ReleaseNotes:Planimate 7.x Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


  • FIX Planimate DLL call was incorrectly handling Table Direct table parameters passed as outputs to the DLL.


  • CHANGE Increased the number of cache rows for graph overlays by a factor of 16 to enable larger datasets to be displayed without seams between overlays


  • FIX This is a lurker since pre version 6.8. Opening the reference insert dialog (the very old way of creating Planimate data references) while editing a reference textually (F2 whilst typing a reference) was overwriting a global used to propagate reference updates to the editor, which created a nsaty leak which resulted in segfaults, attref scan count errors or, at best, a memory leak.
  • FIX The full text editing of routine lines (F2 on a routine line) had an issue that if the line was empty, clicking outside the field would cause the editor to re-activate as the routine editor was closing, leading to a fault.
  • FIX Missed error reporting case for full line edit
  • FIX Memory leak when a table driven entry is deleted


  • NOTE Any model containing the "Condition" routine operation now givws a warning that it should be found and removed. The Find Specific Routine Operation feature can be used to locate it.
  • FIX F2 was able to edit routine lines during run mode. This is currently unsupported and could lead to a segfault
  • FIX Routine operations InsertColumn / DeleteColumn had inconsistent internal names so text parser could not interpret them


  • FIX Errors generated by expressions (eg: divide vy zero) were reporting the wrong panel though the correct change object, leading to an inability to inspect tables etc. at the actual panel where the error occured.


  • FIX Labels with high indicies were not being displayed for edit properly if the label list had the "Allow combining labels using |" option on.
    This particularly affected use of the _fileoptions label list and would result in empty [] fields in the editor for these options:
    FreeTextAsText, PrecisionAsDisplayed, SecondColLabels


  • FIX Table column: The column text alignment setting was causing a fault as it was interacting with free text format. eg: if text alignment mode was set to Center or Right and the column was NOT a text column.
  • FIX A cell specific format of Text on a column formatted as anything but Text was causing a fault. As noted 7.17.5, this is not supported for performance and memory efficiency reasons.
    As a workaround, if a few cells out of many rows need to be text, you can override their format using a label list instead.
    The cell editor now prevents "Text" being selected as a cell Format. Use "<use default>" to revert the cell to the column's format.
  • FIX Track sections were redundantly saving their object label index twice, creating unnecessary overhead for the loader. This fix has not changed file format compatibility with the previous release.


No new features to users - released as reference/testing point.

  • CHANGE Numerous internal cleanups to the file format (without changing compatibility with previous version). Minimised line breaks to make MDL more compact Make save streaming / CRC calculation more efficient Prevent saving unnecessary routine attribute "clear" value Review file format for future rearrangement


  • FIX The item click popup was not handling selection of options such as route name (which gives details on the route). This was since 7.17.0 and caused by improperly placed brackets. Have also made it stay open after selections until explicitly closed by clicking outside of it.

7.20.0 (model file format unchanged from 7.19.2)

  • CHANGE The following routine operations will now work correctly if a message (or a message of a message etc) of a train item is used with them.
    SectionRoadAvail() HoldSectionRoad() SetRoadCheckFilter()
  • NOTE An assumption of the change above is that train items (the items that are on the track) are never messages. This was presumed in the past but is now a requirement.


  • FIX A long standing (since V6) issue with SetPortalIcon() created a possibility for segfaults when used in combination with code copied portals.
    DETAIL: The problem was in the icon cache. If a regular load of an icon (eg: a copied portal) found the icon in the cache, but it had been placed there using SetPortalIcon(), then it would incorrectly activate reference counting for it, which is not supported for icons loaded by SetPortalIcon(), which once loaded stay in the cache forever.
    With the right combination of icon changes, it would lead to a portal referencing an icon that is no longer in memory.
  • FIX Typo - 7.19.1's release note should have mentioned 7.19.0 for the label fix.
  • CLEAN Sync up code so linux version builds. Main build change involved moving some tool window functions to make code cleaner.


  • FIX Label lists were returning an incorrect status code causing display code in places like view row labels to not show them when in fact in they should be displayed, introduced 7.19.0


  • NEW The reference and new full routine line text editor will offer to add an unknown label if the list supports adding (regular label list). This is useful when pasting in code and also enabes a new label to be typed in as you edit routine lines.
  • NEW Label lists have a new option "Allow combining labels using '|'" which is very useful with option labels, such as "_fileoptions".
    Instead of having to respecify the list for each option: l._fileoptions[Formatted] + l._fileoptions[CommaDelimit] you can combine multiple labels using | as follows: l._fileoptions[Formatted|CommaDelimit]
    For this to work you want to make sure:
  • the new option has to be on for the list
  • each label index in the list corresponds to a single binary bit (ie: values like 1,2,4,8,16, not 12 which has 2 bits set)
  • no labels use the | character
  • The option is now on for the inbuilt label lists which are binary
  • options:  _fileoptions, _alignment, _pipe_bc_flag

NOTE the display order of the options once entered is determined by Planimate, its determined by their internal value. This is due to data references not storing the actual label text, just the value which is the same regardless of the ordering.

  • If this is a problem, you can continue using the long form as previous which keeps the order explicit.
  • NOTE this is intended to help with routine editing/legibility and no end user changes have been considered.
  • CHANGE The text edit context help has been reworked (significanty) to support the use fo | to combine labels, reoffering the label list if the closing ] is replaced with a |, so long as it can resolve the label list name and the Allow COmbining Labels option is selected for that list.
  • NEW Comments (preceeded by '//') are now supported in the full line routine editor (currently when you press F2 on a line, refer 7.18.2 notes).
    Any comment on a routine line is placed at the end of the line, separated by the usual '//'.
    An entire line can be instantly made a comment by placing '//' in front of it.
    This is extremely useful in combination with the text import which brings in problem lines as comments, you can press F2 and remove the '//' at the front and the line will then be parsed.
  • FIX Have improved the messages when errors (particularly related to labels) are encountered during text import into a routine.
  • FIX Routine text import errors now include the line number and any lines with problems are kept but converted to comments enabling the issue to be reviewed and fixed. This is very useful in combination with being able to use "//" in the new full line routine editor.
  • FIX Routine text import no longer loses/replicates lines on errors, lines which cannot be added (typically because of a missing label/object/broadcast) become comments that can be subsequently corrected as described above.
  • CLOSED #4024, #3975, #3816


  • NEW Experimental full routine line edit with F2 key in routine editor
  • FIX Table cells with an active don't show zero will still fill using any transparency instead of becoming opaque.
  • FIX A scrolled routine with the selection off screen will now NOT jump to the selection if the columns are resized.
  • CLOSED #4029, #4030


  • FIX Vertical bar display had been broken by recent graph code editing, the x_offset value default management was broken.
  • CLOSED #4028


  • NEW Routine operation MakeRangeVisible() enables setting the co-ordinate range of a visible paint map object, with it extending the range in order to include the points if the aspect ratio of the paint object needs it.
    If the map is not in fixed zoom mode, its boundaries are set. If the map is in fixed zoom mode, the zoom is retained and it is centred on the co-ordinate area provided.
    After invoking thie, a node object update and repaint is required.
    Calling this with a single point is NOT supported, the longitude and latitude must both be non 0 ranges.
  • CLOSED #4017
  • FIX (Source code fix) for when routine operation definitions generate routable.cpp, it wasn't expecting Planimate running from the bin directory in source instead of the source code directory.


  • NEW Stop reason "User Breakpoint Stop" is set if the model is stopped by selecting terminate in a breakpoint dialog. This distinguishes a stop due to a model error which the model may be detecting on restart, making debugging awkward.
    Note this does not affect PBA EXEs as users aren't going to be breakpointing etc.
  • NOTE New pause reason "SIMUL_BreakPointStop" has been inserted before SIMUL_Undefined in the planidll.hpp enum ePLPauseReason. In general it is good to ensure your applications that call Planimate-as-a-DLL can tolerate unexpected pause reasons.
  • NEW The DEL key can be used in table views to delete selected rows or clear cells if entire rows are not selected.
    (the In-Pace Edit and No Block Edit options are checked)
  • FIX Ctrl-X for selected rows no longer cuts rows if the In-Place-Edit or No Block Edit options prevent it, however a copy is still performed.
  • CLEAN Internal engine run stop/terminate flags
  • CLOSED #4022, #4023


  • FIX A column formatted for Text now supports cells formatted for other types including labels. Note that you cannot convert a non Text column to Text using a custom cell format.
  • CHANGE Tree view uses _GREY16.BMP as a defaut icon and this icon has been placed in _!SYSTEM.DB. It previously was searching (and failing to find) _GREY24.BMP, wasting time.
  • CLEAN Code cleanups, fixing GNUC niggles and minor issues for the MinGW build. Note the crypto API isn't supported enough by the current MinGW so these builds cannot unsign/sign executables, but this build is more intended to maintain source code quality (by a totally different compiler being able to compile it) and also is the pre-qualifier for non Windoes builds of the run engine.
  • CLEAN Updated the escrow build scripts and tools (now December 2014).
  • CLOSED #4020


  • CHANGE Routines with bad references that are not connected in a flow do not generate errors at the start of a run. This is useful for pasting in snippet/test code which does not yet have supporting data structures.
  • CHANGE Routine lines with bad references that are disabled do not generate errors during a run
  • CHANGE Enabling a routine line that is disabled now reinitialises references in the line. This was necessary since the line might have been disabled when the run was started. This means that any bad reference in the line can generate a model error when the line is enabled that would have previously been generated on run start.
  • NOTE Unused routines and disabled lines will continue to respond to finds and reference replacement
  • CHANGE Changed how creating a popup at (-2,-2), the centering co-ordinate works. If the popup has no owner, it is centred on the dispay which contains the main PL window (ie: multi monitor support).
    If the popup has an owner, the popup is centred on the owner, wherever it is.
    For the case of the main window, it works as previous (center on the system monitor).
  • CHANGE Routine lines with modeller set breakpoints are now disabled if the "Disable futrher breakpoints until pause" option or the s.RuntimeBreakPointControl options are in effect.
  • CHANGE The "Taken" column in the routine editor is now available during edit and will show the number of times each line executed the last time the routine was invoked.
  • CHANGE Multiple selected routine lines can be enabled/disabled. For toggling, the multiple ines will follow whatever is happening to the first line in the selection.
  • FIX Side bar treeview was not correctly updating when restored from being hidden during edit
  • Issues Closed #3993, $4010, #4013, #3966, #3962, #4018, #3967


  • NEW Bounding co-ordinates shown in edit context menus of views and viewports
  • FIX Reworked the handling of the main panel during load to improve co-ordinate handling as the model loads when the main panel is set to auto-fit.
  • FIX Viewports were not respecting the minimum panel width/height of their view panel when the viewpanel and the viewport panel were both configured to auto size. This configuration was not previously supported but should now be useable.
  • FIX Viewports with borders were not initially displaying with the correct width/height as the border metrics were not being used in their initial sizing. Reworked the way they are initialised.
  • FIX The Always Show Track Menu option was not being handled on menu re- initialisation and was not preventing the track details being discarded on save if there was no track on the panel.


  • FIX Copying a line from a routine with a dialog operation would cause a fault (dialog reference handler in copy paste buffer not anticipating a NULL owner)
  • FIX Resizing the Planimate work area with the sidebar hidden then restoring the sidebar would not fix the sidebar properly.
  • FIX Panel work area X/Y renamed to width/height
  • FIX Can now add viewport from the edit tool window.


  • FIX Alignment bits for graph label were flipped


  • NEW Routine lines can have breakpoints set/deleted during edit and runtime including during a breakpoint. Unlike the breakpoint routine line, these do not require the global breakpoint option to be enabled.
    A new option in the routine line context menu enables setting/clearing a breakpoint on a line. A B indicator in front of a line indicates its breakpoint state.
    Breakpoints are not saved with the model at this time.
    Breakpoints on control lines like #else and #endif do not get triggered.
  • NEW Plot mode "Centred Label" renamed "Label" (alias created in the plotmodes label list).
    The Log Driven View configuration table supports a new column "_labelalign" which can have values set from the "_alignment" label list.
    This list has additional labels "Vertical Center" and "Below" which can be combined with the Left/Center/Right (add the values). By default text is drawn Above the specified y point.
  • NEW Graph Settings / Graph Area / DataTextFont sets the font used for the "Label" plot mode. The default for graphs is to use the "Default Screen Font" global font.
  • NEW Clicking on an item attribute in a item popup (popup you get by clicking on an item or through the debugger) now enables editing the value, as well as adding that value to the watch list as previously existed. This is effected by either right clicking or left double clicking on an attribute line.
    NOTE: Currently no unblocking is implemented if a changed value would enable an item that is blocked by a condition to move.
  • FIX Point rectangles now draw if their second point x is to left or second point y is below the first point.
  • FIX Showing command line options when the current directory is read only was not showing anything and not reporting an error
  • FIX Item class item attribute edit no longer includes "Text" mode since item attributes do not support text mode


  • FIX Planimate temporary files used for opening information in notepad are now created in the temporary directory as the program directory is now typically read only
  • FIX New Modeller model option "Always Show Track Menu" prevents the track menu being hidden on panels without tracks (or when tracks are deleted from a panel).
  • FIX Using a routine to add a track to a panel with existing track network details but without a section details table binding (because the track table was just deleted / renamed before the run) was causing a fault (runtime track creation code was wrongly assuming that the existence of network details on its owning panel meant that the section table had been bound/prepared).
  • FIX Model navigator tree was not being properly shown for a loaded model configured as an auto run PBA, when the sidebar was shown by the modeller.
  • FIX Menubar option for tool window is available in paused mode
  • FIX Platform option Tools / ModelTreePosition sets whether the model hierarchy starts under the tools tree (2, default) or above (set it to 1 and restart Planimate).
  • FIX The Item Class subtree in the tool tree is only expanded when adding a new item class, no longer when selecting an existing class. However if the Item Class popup is open, it will be activated when a new or existing item class is selected.


  • NEW Planimate release EXEs are now digitally signed. This prevents Windows from questioning their authenticity.
    If you check the properties of the Planimate EXE, you will see a "Digital Signature" tab within which there should be an entry with name InterDynamics.
    When you compile a PBA EXE, the resultant EXE is not signed.
  • NEW The PBA compiler can sign a compiled PBA by selecting the signing checkbox and setting up the signing options. To do this you require:
- a code signing digital certificate in PFX format
- the password for accessing the digital certificate
- the "subject" for which the certificate was created. This
might be the company name
- the URL of an Authenticode format timestamping server
 These details are set using the "Signing" button in the Standalone EXE Creation dialog and will be saved with the model. If the password field is left blank, Planimate will prompt for it during each EXE creation without saving it.

  • FIX Scoped classes always appearing in the tool window


  • NEW First release of new sidebar editing UI. The palettes have been replaced by a tree of editing tools. You can drag or click objects out of the object tree/popup.
    Top level items (Objects, Paint etc) can be dragged out into popups which can be resized from their bottom right corner.
    Context clicks on the modeller/class title in sidebar or in the corresponding popups enables adding new modeller action or item classes respectively.
    Separate tool popup state is retained for editing and run. The Settings menu has options to save the settings as default.
    Transparency for the popups can be configured by editing INI Options / Tools via the options editor.
    NOTE this version brings forward the INI file format and previous versions of Planimate will always start with defaults for the old sidebar palettes which are no longer in the INI File. On the other hand, the model file format remains unchanged.
    Icons are missing/being resized, new ones are due for development.
    Note that the _!SYSTEM.DB provided to beta testers is not needed as new resources for the treeview and popups are a part of the EXE.
  • FIX SetColumnFilter() routine operation was broken, probably in 7.2.5 or 7.2.2


  • FIX Fixed clipping issues within a viewport or popup containing viewports (window wasn't created with WS_CLIPSIBLINGS causing overwrites by adjacent updated objects such as animation or tables
  • FIX Table edit windows now locked open to prevent them being closed whilst the reference browser is being used, which resulted in a PL segfault


  • FIX The LongLatToXY map operation did not operate if the map isn't visible. This was a problem if a map is being used in a viewport where the map's co-ordinates are being changed before/as it is becoming visible.
    A change has been made to allow LongLatToXY to operate even if the map is not visible. This will allow the programmatic viewport/popup of a map under the circumstances where:
- the map paint object is not being resized (eg: due to
anchoring stretching it on an autosize panel)
- there is no customised panel zoom (something different to map zoom)
in effect on the panel the map is on.
(in these cases the map cannot anticipate the co-ordiantes until
its actually visible and hence LongLatToXY will not be correct).
 A new map option "Assume Map Object Rectangle Fixed" needs to be enabled for this to operate, to prevent this change from possibly impacting previous models.

  • FIX Item table references were not being properly handled by the editor, it attempted to create item attribute names with the table reference.
    This has been fixed however note that support for item table names containing invalid characters (requiring quoting) is now reduced.
  • NEW Item class context menu includes attribute etc counts
  • NEW Ctrl-R in routine editor is a shortcut to "Replace Reference"
  • FIX Import from clipboard now available from the outside data table context menu or when the table is empty
  • FIX Viewports can now be deleted again


  • FIX 7.14.1 and 7.14.0 did not bump the file format from 7.13.x but a field in panel references is now ignored. If a model was saved with 7.14.x, 7.13.x would not load it because the now unused field had an unexpected value.
    This version writes the value to be compatible with 7.13.x versions.
    The reason to not bump the file format as usually occurs is to retain compatibility with prevous versions during this period of intensive internal reqork to facilitate reverting to an older version should the changes introduce a show stopper
  • CHANGE Status bar rewrite. It now appears "flat" without 3D effect. INI [Display] StatusBarBackground, StatusBarText and StatusBarDividers sets the colours for a Planimate. Model control of the colours (eg: for a PBA) will be added on request as other UI changes (palettes) are imminent.
  • NEW Portal context menu indicates custom state usage
  • CLEAN Cleanout SimObject base class, remove unnecessary intermediate class and clean up icon management/copying.
    Table cleanups to LabelListBase, TableList, ViewList, ItemList, BlockedTrainList
    Some function renames


  • NEW Flow editor has an "unlimited" number of undos whilst the current class / panel is being edited
  • FIX When paused and a routine editor is open, Ctrl-C still works to copy routine lines to the clipboard
  • FIX Prevent a routine list which has become empty from being auto-deleted if a reference browse window is open. This could happen if the user edited with routine windows whilst the reference browse window was open.
  • FIX Safe-check routine line references in case lines are removed from
a  routine whilst a reference browse window is open. In previous
versions such lines could point to lines beyond the routine's end
after the routine was edited.

  • CLEAN Routine list management containers templated


  • NEW Copy/pasting a group selection now pastes paths between the objects as well (as long as the original objects are aailable at the time of the paste).
    Links etc. will be handled later.
    If an item class is not in scope at the paste location, the flows for that class are skipped
  • CHANGE _object_types label list codes for Pipes and Spatial Links have changed due to clean out of long obsolete model object code. This should not affect models using _link_types label list as its purpose was to separate the link type ordinals from the object ordinals.
  • CLEAN Large internal rewrite to remove extra code layers that used to manage Performance/View Panels. This has involved a large and complex merge of panel management code which is necessary as more and more features are added to panels.
    Rewrote path object/class enumeration to use templates to make code clearer and safer.
    Internal cleanups of old code particularly in flow/path management
    Multiple code renames to improve panel code readability


  • NEW The following keys work in Routine list, Debug and Watch list Ctrl-G (run), Ctrl-T (stop), Ctrl-Shift-H (toggle user mode)
  • NEW Table editor row context menu handles a range of selected rows for Clear, Cut, Copy and Delete, including when the view is filtered.
  • CHANGE Removed "Interaction" edit mode. Interaction details for Servers, Queues and Splitters can be accessed via the context menu. This is available in Object and Flow edit mode with a right click on an object (it does not need to be in a flow).
  • FIX Rapidly moving between panels (eg: with a viewport) now releases hovers on the previous panel
  • FIX A paste replace in paint mode now remains in paint mode
  • FIX Ctrl-A selects all when editing routine text
  • NOTE Event processing change to Debug and Watch windows to enable processing hotkeys should not affect their usage any other way (list keep focus so keys always handled)


  • FIX Cleaned up Paint Image handling of the _external_files label list. This list is used to identify images that a PBA will look for as separate files (falling back to extracting them into a PL_Media directory) if they are not found in the working directory). The old code only supported BMP or JPG and did not support the PL_Media directory for auto-extracted paint image files.


  • FIX Loading an older model that used obsolete paint button actions as announced in 7.1.0 now will silently remove these actions, logging their occurance to the debug log file (use /DEBUGFILE) and giving a single summary message.
    As previously, dialog box buttons cannot be handled by the loader and must be removed prior to this version.
  • FIX Label list duplicate messages for old models are now logged to the debug log file with just a summary message shown after the load.


  • NEW Planimate-as-a-DLL updated to include running in thread functions PL_InitThread, PL_TermThread, PL_WaitThreadRunning enabling Planimate to be run in a separate thread without needing a separate loader DLL or complex thread management.
    Also have new functions PL_GetProc, PL_WaitModelStarted and PL_GetOwnerWindow.
    Direct calls to PL_Init() / PL_Term() are now deprecated
  • FIX For compiling Planimate as a DLL in visual studio, a macro needs to be set to detect this build type; VCPLDLL is now set up in the projects. This does not affect PL release EXEs or EXES converted to DLLs.
  • FIX Dotnet handling of unexpected sizebox when PL is a child window with scrollbars.


  • CHANGE If the HoldSectionRoad() operation was used on a road that was already in hold state (as would occur during lookahead at a location downstream of a road that the train ahs been allocated), its behaviour was defined as do-nothing which would cause the undo mechanism to release the road after the lookahead.
    This has been changed so that HoldSectionRoad() cancels the reversion of the lookahead for the road. Internally a flag on the road is used to avoid the lookahead undo from actually releasing the road given the modeller is taking responsibility for it
  • FIX GridView objects would causae fault when switched from their default icon mode to RGB mode. This has been present since early V6, clearly they are not used much.


  • FIX Putting a train with its tail left on sections into an exit now instantly clears the sections it was occupying instead of leaving them held until that train item is recycled by the Planimate item allocator.
  • CHANGE Format selection for "Text" is now under "Label" instead of at the end of the format list
  • FIX Expression parser no longer discards rest of line if an extraneous "]" is in the expression
  • FIX If the main window was vertically shrunk so the model hierarchy tree view was positioned outside of the visible area of the main window, then updates to the hierarchy (when a model is loaded or panel changed) would cause a lockup due to what appears to be a bug in the tree view control under Windows 7/8 where an API call to show the selected item fails to detect that this is not possible and ends up in a spin loop instead of returning a failure.
    To work around this there is a minimum margin that the control must be within its owner window otherwise it doesn't scroll to show selection.
    Note that whether the window is on the screen is irrelevant in this matter; its to do with the relationship between the treeview control and the main window which contains it in the sidebar area. This shouldn't affect PBAs as the sidebar is not initialised for them.
  • FIX Appending a column was not propogating a resize update to table views due to an errant optimisation
  • FIX Pasting in paint mode now acts the same as object mode


  • FIX Paint object context menus were incorrect for some objects due to a missing "virtual" declaration on a function


  • NEW Routine operation SectionRoadTrain() returns the item ID for any item in a given track section road or -1 if there is no item.


  • NEW The column names for time and item class can now be changed for each table driven entry. Note that the time column (default "_time") is mandatory but the item class name (default "_class") is optional and will be ignored if not present.
  • NEW Table driven entries in Index mode will set item attribute "_row" to the row number of the driving table corresponding to each arrival. This attribute is set before any tupling that will occur from the table if a column called "_row" exists.
  • NEW Routine operations GetNoteText and SetNoteText enable setting a note from non RTF unformatted text.
  • NEW Table cell and background context menu include option to Append Row. For this to appear, the view option "Disable Block Edits" must be off nad the table option "User Cannot Add/Delete Rows" must also be off.
  • CHANGE GetNote and SetNote have been renamed GetNoteRTF and SetNoteRTF to highlight that they retrieve and expect RTF text not plain text
  • CHANGE Reworked object click handling. During editing left click is drag only, right click gives access to context menu. This applies to selected groups.
  • CHANGE The multi object selection menu (now right click) includes new options to access the context menu of the object in the selection that was clicked and to remove that object from the selection.
  • FIX Views no longer display the context menu when their title is left clicked
  • FIX Bogus "]" added by the suggestion list after column references in functions no longer occur
  • FIX Creating labels from a column now supports creating from text formatted cells (CreateLabel())
  • FIX SetMenuBar() and HandlePopupMenu() now support text columns for item text as well as label formatted columns
  • FIX Copy cell not shown in context menu for clicks in empty table area
  • FIX Time Of Day properly handles negative dates
  • CHANGDE A multiserver switched to pauseable zero now asks before resetting the maximum capacity to 1 to avoid an unexpected change. This better supports pauseable 0 multiservers with capacity > 1
  • CHANGE Rewrite table cell display. In run pause mode, cells are now drawn using double buffered animation meaning there should be no flicker as the background and text are composited off-screen then blitted on-screen as a whole.
    This requires testing with the numerous combinations of hover tracking, column colours, row filters, dynamic table resizing etc.
  • FIX Reworked the way table cells are drawn to reduce the delay between filling a cell and drawing the text, in the process optimising the cell draw process.
  • FIX Reworked table hover tracking to prevent unnecessary cell redraws in cases where no hover colours are being used.


  • FIX Cache fixes for switch lookahead / route management


  • CHANGE The change object table route assignment no longer clears the successful route (losing the road bookings), instead it caches the route until the item actually enters.
    Note this assumes the change route is not performed in a lookahead from another portal (track lookahead defer).
    This change allows the node to know which road the item will take when the change route method is used to assign a route
  • FIX Table cells now support full ARGB colours. Not that alpha in tables with changing data may cause strange effects as cell level transparency is beyond the current design.
  • REMOVE Tabe option "Index Colours From 1 Not 0" is now unsupported. Use the _colors label list or colours in the AARRGGBB format.

7.9.0 (new file version)

  • NEW System attribute s.ItemRouteSectionRoad enables a location to know which road # within a section a train has been assigned to
  • FIX Train graphs were using incorrect color type making them incompatible with ARGB colors
  • FIX Selecting a label from the context list now closes the "[" with a "]"
  • FIX Selecxting a column label from the context list now closes the "[" with a "]"


  • CHANGE Train graphs only show major y scale lines for rows with a label. Minor Y scale lines are unaffected.
  • FIX The auto-suggest list was not quoting table and item names with spacs in them, causing such expressions not to be accepted when you finished editing.
    This was casued by the code that removes the comment/usage tip from the string and automatically adds the bracket for cases like "t.Dynamic(" not subseauently checking the name to see if it needs quoting, as may be the case for user created item and table names.
  • FIX X Minor grid style was not properly edited, it would change the major X grid style

7.8.0 (new file format)

  • NEW Routine operation AdvanceToTimeDialog enables triggering the advance to time dialog. You can specify relative/absolute advance default, and an interval or absolute calendar time default.
    When specifying an interval you can use a string to specify units such as "1M" which are then are handled appropriately for the current date, as this is the same dialog as accessible via the run menu.
  • NEW Routine operation UpdateColumnRefs(table) will cause column references to that table to update to any changes in the column position in the table.
    This is very useful when you are rebuilding tables dynamically. You are responsible for ensuring the table contains all columns referenced in the model. (it would have if the run started). If you delete a referenced column from the table, this will trigger a model error and stop the run.
    Note this does not apply to dynamic and item table references, column references are looked up dynamically and this operation is not useful for these types of references.
  • NEW Gesture processing for BeginZoom, Zoom and EndZoom handling see notes on 6.0.21.
    These pass the co-ordinate of the centre of the gesture plus an extra _delta. The value at BeginZoom should be saved and the effective zoom is calculated by the latest delta - the saved delta value.
  • CHANGE Attribute/table/list names with spaces in them are now quoted in the routine editor. Its best to use underscore where possible. Labels do not need quoting if they have spaces in them. This also fixes paste issues where attribute names with spaces were used in logical expressions.
  • CHANGE Periodic Arrival entries have changed their behaviour when blocked.
    If another item arrival occurs while the previous item is blocked from such an entry, it is now a model error and the model will stop. If you cannot arrange enough queue space for the entry use a first path switch to direct the items your model cannot handle to a separate exit (ie: renegging).
    Note that single time arrival entries with a count > 1 are not affected by this change, these will wait blocked until the next item can leavse.
  • CHANGE Tables now respond to context clicks outside of active cells (giving options like Select All, Copy and Paste)
  • FIX Using InsertColumn() to insert a column into a table where a copy column from the same table was specified would cause the wrong column to be copied if more than one insertion was specified.
    NOTE that if you are performing successive insert columns into a table, column references to that table become invalid if the columns are inserted before them, however the new UpdateColumnRefs() operation can be used. Alternatively, save all the column numbers in routine attributes up front, isnert the columnsm then UpdateColumnRefs() only at the end.

  • FIX A number of issues with the routine line editor (particularly where labels ended with a bracket and the auto-suggest was used) have been cleaned up.
  • FIX Modellers could be locked out of a model with a zero delay graphical loop if the pause menu was disabled, as is typical in PBAs. The "ESC to pause" feature was ineffective in this case as its mechanisms are only active during routine loops.
    In such a situation a modeller can now click the window close box, press F4 or select Close from the taskbar. Planimate will display a breakpoint dialog and the terminate checkbox can be selected.
    For a PBA, as in previous versions, a dialog appears stating that the run needs to be stopped first. More control over this behaviour can be added in a future version as required.
    TIP: if the advance to time dialog is active, its close box triggers a debug menu.
  • FIX The table editor ctrl-V handler was swapping rows/columns when sizing the paste size, causing bogus warnings about extending past the table boundary.
  • FIX Gantt area plots were mismanaging an internal cache for points not resulting in plotted parts of the area, causing them to use the wrong colours (colour change point flush was not being tested beyond visible points).
  • FIX s.LoadFileNamePath was not being initialised if not used
  • FIX Show System Attributes in Tools menu and debug window now shows numeric attributes again
  • FIX Area stepped graphs no longer interpolate the y position of points that lie beyond the current scroll view window


  • FIX PaintImage no longer gives invalid screen error when sizing a paint image that is a JPG or other supported format that is not BMP,PNG or GIF) and is not visible.
  • CHANGE Paint Imagess showing JPG now support the anti alias option

7.7.0 (new model version)

  • NEW Routine operation "CreateRoute" takes a From and To object and creates a train route for the item containing all steps in between.
    It returns an error code, non zero signals an error and error detail is available as text in s.TrackFillStepError.
  • CHANGE FillRouteSteps now returns an error code instead of popping up an error dialog. If the return value is non zero, the error detail is available as text in s.TrackFillStepError
    Planimate will complain about the LHS reference in existing models. This is intended to assist in updating models to check for an error value and act accordingly (which can be as simple as displaying a messagebox with s.TrackFillStepError
  • NEW Paint properties ImageWidth and ImageHeight are now supported for Paint Image objects. They return the width/height of the target image in pixels.
    A paint image always streches/shrinks the target image into its rectangle. Using these properties and other properties such as Width/Height, you could resize the paint image to suit the target file )which itself can also be dynamically changed);
  • FIX ShowInAnimateLayer paint property now works for all paint objects that can appear in the animate layer (text, image) not just buttons
  • FIX FillRouteSteps() no longer has a parameter as loops are an obsolete object and all steps are expanded.
  • CHANGE For new installations, the [Edit] AssumenoBlocking setting is now defaulted to yes. This means switches assume no blocking and change routines default to only during move.
    This avoids beginenrs dealing with lookahead errors for simple routines, with blocking switches and routines during lookehad coming later in training.


  • NEW File routine operation ReadFromFile enables reading a file (or part of a file) into a table. It supports row/column offsets into the file and row/column limits and does not use a view to guide the column arrangement, just the original table.
    NOTE: Reading into a data object table reference is not yet supported.
  • FIX FormatNameIntoLabel now supports label list, attribute
  • CHANGE The table option "Clear Before Save" has been repurposed to "Don't Save Row Data". Practically this means than when you save the model, the table in memory is not cleared, but the file written will be as if the table had no rows.
    NOTE this does not affect creating a PBA since a PBA is created from the saved form of the model. However it means saving is not a way to clear out such table in memory, you would need to reload as well.
  • CHANGE In 7.1.0, attribute, table and label list lists were changed to retain sort between edits, this caused them to not initially sort by scope first which was not intended. They've been changed back to initially open in scope order.
  • RENAME Renamed the Find/Advanced "Change Object File Read/Write" option to "Change Object File Operations (soon removed)" to emphasize it actually finds all Change / File menu operations.
  • NOTE The Change/File operations support will be removed in an upcoming version. You can use releases until then to rework models to use the File routine operations.
  • FIX If a model error occurs at an object such as a dispatcher processing a message item sent by a routine operation (eg: ImmediateMessage()), the routine line details are no longer reported in the error dialog as they are not the location where the error occured and cause confusion.


  • FIX Copy/pasting a splitter would lead to a fault on save. This was caused by much needed cleanups to the way model objects are copied in 7.6.0
  • FIX Planimate was not reporting which version a model was saved when reporting a model format error if the model was saved with later than 7.0.0 and the version being used to load the model was from 7.0.0 but older than the version used to save the model.

7.5.0 (new model version)

  • CHANGE MatchedCell, MatchedRow and MatchedIndex references used to cache the last match for performance. This has caused a number of developers problems and prevents their use with tables which may have multiple rows of matching data.
    As of this version, these operations do not perform any caching and can hence be used with tables with duplicate matches, with the guarantee that the lowest numbered row to match will always be returned.
    This change would not impact any existing model which used these references with single match data (except maybe performance).
  • NEW Routine operation SetRoadColor() enables the colour of a track road to be set. This supports Planimate style colours (palette or AARRGGBB) but transparent colours will lead to strange effects so avoid them.
    Setting the NONE colour (255) reverts to using the automatic colouring.
    The road is reset to auto-colouring at each run start. Modellers must manage and update colours. There is no way to read the road colour, given the modeller is managing it.
    The modeller-sset colour value will override the automatic colour and read closed colour, but a blocked road will override the modeller set colour and return to the modeller set colour when its no longer blocked.
    NOTE: Reminder that in common with other programming languages, the US spelling "color" is used in function and data names, and given Planimate's origins, the Australian spelling "colour" is used in user descriptions and release notes.
  • NEW Model objects with capacity have a new context option "Broadcast Changes". When selected, a new broadcast "_ObjectChange" is sent to the entire model which includes the object's id, state, occupancy and in/out counts.
    This replaces Object Attribute association/logging and is intended to make it easy to access object attributes in beginner models, though the capability is generic enough to be useful for advanced modelling as well.
    NOTE: you can still query using the object properties. This is intended for pushing data to graphs etc.
    A simple Log Viewer pasteable module will be provided to work with this.
  • NEW The expression text input parser is now better at suggesting table property functions (such as t.table[].Row()) and object properties when its not a table reference, with list filtering as you type.
    Pressing CTRL-F while the cursor is after a dot is now ignored, but it will otherwise still show regular functions.
  • CHANGE Item carried attributes are now denoted using i.Carried(...) instead of s.item.Carried(...)
  • NEW Object property ObjectChangeBroadcast is set if the object has been set to send change broadcasts.
  • REMOVE Data logging and object incount/outcount/state logging as used in old Log Viewer PBA. Progressing towards a Log Viewer module.
  • REMOVE Object attributes mechanism removed. It is replaced by the Object Change broadcast
  • CLEAN Rewrote the way model objects are created during a model load to clean out old code. Reduced memory allocation and copy during load and program flow is clearer. This will speed up loading in models with many objects.
  • CLEAN Internal renames (broadcast flags, Occupancy updates)
  • FIX Prevent obsolete option from appearing as empty line in settings menu. this was another option related to the now defunct status bar

7.4.0 (new model version)

  • NEW RunCommand routine operation enables execution of processes and launching documents through the windows shell.
  • FIX Additions in 7.3.0 had broken GetNote() due to a 'break' line going astray

7.3.0 (new model version)

  • NEW Table column property "UserData" is a single value stored in every table column that a modeller can read/set as desired. This is useful in data management modules.
    NOTE: The user data value is currently not saved in datasets so any dataset load that creates new columns will result in the value being reset for the columns.
  • NEW File routine operations
FileLines      : returns the number of lines in a file
FileColumns    : returns the number of columns in a file (option for
CreateFolder   : Creates a folder with option to create parent folders
SaveImage:     : saves a panel image to a file (JPG/PNG/BMP), to
the clipboard or to memory (updating an icon
for a paint button/object)
 AcquireFileLock, ReleaseFileLock : These enable file locks to be created, useful for multiple planimate instances

  • FIX Train graph From Location typo
  • FIX Palettes are now disabled when editing an RTF note text to prevent unexpected panel changes from the editor palette.


  • FIX GetTableView/SetTableView were broken in 7.2.2 as a result of rework to the table view code


  • FIX WriteToFile / WriteViewToFile were looking in the wrong structure for the "Append" flag

7.2.1 (new model version)

  • This version is progress to replacing the change object file operations
  • with routine operations, though the change file operations are still
  • supported. Note the change to the CopyToClipboard() routine operation.
  • NEW Routine operation WriteToFile() writes a table to a file.
    Tables can be referenced directly, or if the reference is a data object label reference, the data object it refers to will be used. Options are specified using the new _fileoptions label list (below). The operation returns zero on success (see below)
  • NEW Routine operations WriteViewToFile() and ReadViewFromFile() enable formatted data in a table view to be written and read from a text file. These support views with customised column arrangements (including rearranged columns and columns with different number format to the original table).
    They return zero on success.
  • NEW _fileoptions label list
    The new Write/Read operations can have options specified using a new label list _fileoptions. Values in this list can be combined together by adding them.
    Writing supports these options:
Append          : Appends to an existing file instead of overwriting it
AllowEmptyZero  : Allow totally empty fields for dont show zeros
Formatted       : column format is considered instead of writing raw numbers
FreeTextAsText  : Instead of writing text cell as binary data, write
ColLabels       : column labels are written to first row
CommaDelimit    : data is comma delimited (CSV) instead of using TAB
FourDigitYears  : years always written using 4 digits
NoDelimit       : dont write any delimiter between columns
PreciseValues   : high precision instead of display rounding
QuoteAll        : double quote all cells (useful for CSV)
RowLabels       : row label column is included
the text (strips new lines, tabs etc)
PrecisionAsDisplayed : follow same precision as in the view
SecondColLabels      : second row is the second title column names
 Currently reading supports Formatted data, ignoring of row/column headings and comma/tab separated options. Reading binary format text is not yet supported.

  • FIX Some routine operations including message box would not work properly with text attributes/cells if an expression was not being used to generate the text.
  • NEW RTF views have been largely rewritten and have a more straightforward editing interface with most options in the paint context menu and export/import moved to the text editing context menu.
    A key change to the RTF view is that it no longer needs to be associated with a note in a DB file (though this is still supported). If no note is selected, an RTF note will store text in the model and also support having its text set by the model.
  • NEW New routine operations GetNote() and SetNote() enable retrieving/setting the RTF text from an RTF text note, including all the formatting and font commands.
    Using this you can store text notes in text formatted table cells (and hence they will be saved in datasets).
    The RTF text will not look good within the table cells, this is intended for modellers building editing and display interfaces which load the text into RTF notes that are part of their user interfaces.
    It is not planned to make table cells capable of displaying RTF text at this time.
    You can only set text for an RTF note that isn't associated with a note in a DB (select None in the note selection dialog).
  • NEW File routine operations. These are progress towards transitioning from Change / File operations to working with files directly in routines.
FileSize()       : returns the size of a file or -1 if not found
DeleteFolder()   : deletes an empty folder with option to delete
folders containing entry folders
DeleteFile()     : deletes a single file
CopyFile()       : copies a file
RenameFile()     : renames a file. The target file must not exist
PlaySound()      : plays a windows WAV sound
 Apart from FileSize() the operations that return a value return zero on success and non zero on error. The error codes will be put into a label list, someday.

  • CHANGE CopyToClipboard options must now bollow _fileoptions label list. Older models need to be updated by searching for the CopyToClipboard operation or you may end up with unexpected formatting in the clipboard. The
  • REMOVE The _export_options label list is now obsolete. Planimate will remove it from older models next time you do an attribute purge, or you can remove it yourself after converting any references to use the _fileoptions
  • REMOVE No longer support writing row and column references to file in a change object file operation. These may be added again if required
  • FIX IF the Mul and Div routine operations were used in combination with expressions, code that does not follow BODMAS rules can result which will be a problem if copied and pasted textually since all imported text is processed using expressions where possible.
eg: p.att1 + p.att2 * p.att3 + p.att4  will evaluate the multiply
last if its a routine operation, but pasting it textually
will evaluate the multiply first.
 As a temporary fix, the * and / rotuine operations will always bracket their LHS and RHS arguments.
 With expressinns now established, it is intended to remove the simple math routine operations since they can all be done using "=" and an expression (and this is more efficient too).


  • FIX Implicit broadcast receiving change objects from pre 7.0.0 models are set to "Only During Move" during the conversion at that is how they would have received the system broadcast
  • FIX When numbers are appended to names to make them unique, leading zeros are now retained.


  • NEW The Image Mover and Icon Selection Palettes have a new "Go To" button which gives quick access to the model's directory and DB, and the Planimate install system directory and _!System.DB.
  • CLEAN Clean up the database admin/item select dialog layout
  • FIX The entries added to implict broadcasts change objects in 7.1.0 were not having their icons updated to indicate they are broadcast
icons. For already converted models,  select the mode of the
entry and cancel and the icon will update.

  • FIX Modeller palette icon management and display update


  • FIX Added a test for an unexpected condition where an item is turning around at a road but the item has no train tail information. The exact scenario which causes this has not been determined but now Planimate will at least stop the run with a useful message rather than faulting.
  • FIX Model hierarchy updates when adding/removing portals during run with it visible are now automatically locked out for the whole routine. The mechanism for locking the hierarchy was rewroekd to make this efficient.
  • FIX Planimate would get confused about which object caused a model error when reporting reference errors such as a bad cell reference.
    This happened in recursive cases where a routine changed data which other objects then read as part of dependency updates. The related code - used to track the invoking object - has been rewritten and will now also be faster.


  • FIX Have changed train length handling so if a train enters a road/multiserver with zero length OR zero delay time (the thresholds are 1cm/100ns respectively) then Planimate does not give an error as in 7.1.4 but rather posts no tail update events, treating the train as not moving physically.
    This enables the use of these roads as zero length signal points yet they will still receive tail broadcasts


  • FIX Posting of events with invalid times to the FEC was faulting instead of reporting an error if a location was not part of the event. Such events are now reported properly.
  • FIX Train tail update events post messages to the FEC using the current front location of the train instead of NULL to assist in locating the front of the train in cases of errors.
  • FIX Train tail update now reports any zero length roads or multiservers configured for length as a model error to prevent impossible times like infinity being posted to the FEC.


  • FIX Remove empty option from Settings / Model / End User
  • FIX A multiserver with a delay that was not hard set to 0 but was zero due to attribute or variation etc. was posting a delay message that was being treated as a pauseable 0 delay when it shouldn't be pauseable.


  • FIX Cells formatted as text now work in places where a reference being set can either be a label list or a text attribute, for example the result of ExtractPathName().


  • FIX Clean up palette management to reduce flicker and complexity
  • FIX Standalone EXE creation now collects all icon load errors and presents them in a list instead of separate popups
  • NEW Command line option /TESTLOAD just loads a provided model then exits, useful for batch testing model loads

7.1.0 (new file format - removed obsolete button actions)

  • NEW Receiver filter for button click broadcasts. Buttons which send a broadcast can have an optional text field set which causes the broadcasts to be received by entries associated with the broadcast that have a matching name. The name match is case insensitive.
  • NEW The editing of button click actions (the few that are left, see below) has been streamlined into the context menu of the owning paint object / model palette button.
    Click actions are added / changed / removed using the Click Action option. The main context menu will show edit options for an active click action.
  • CHANGE Can now rename a table to the same name with different case.
  • CHANGE The data file reading code has been reworked to support reading files with lines that end in non standard forms as follows, where LF is a line feed character (0x0a) and CR is a carriage return (0x0d).
CRLF  : standard DOS/Windows text files
LF    : Unix/modern Macintosh
CR    : 80's microcomputers, old Macintosh, ???
LFCR  : unusual but supported
Files with line termination sequences not following the above may result in incorrect data import. In particular files with extraneous CRs may require pre-filtering. The import filter may be enhanced to cope with other line endings in future versions.

  • CHANGE The predefined broadcasts have been renamed to not have any spaces in them. Broadcasts in older models will be updated automatically.
    Its assumed modellers do not create their own broadcasts with names starting with an underscore
    NOTE:Nnames starting with underscore are reserved for Planimate platform usage. This applies to attributes, tables, columns and label list names but not labels themselves.
  • CHANGE The feature of a change object named with a system broadcast and having no flows, receiving/processing that system broadcast is no longer supported.
    Old models will have broadcast entries and exits added around such change objects automatically, which will keep such models working.
  • FIX The "Only During Move" text in a routine text copy is now part of the first line. It was messing up import of routine code. Note that imported routine text does not automatically set the "Only During Move" Change Object option.
  • FIX Enforcing uniqueness on labels for FormatIntoLabel(). This will prevent merging issues and enable more efficient management Note that label names are case insensitive.
  • REMOVE The following button click actions have been removed as they are oboslete (change object routine or file operations replace them).
    Planimate is unable to load a model containing these actions, it will report the problem and stop the load. Use a previous version to remove unsupported paint button.
    The unsupported and removed button click action modes are:
Dialog            : Dialogs can be initiated from a routine
Play Sound        : Change object / File can play a sound
Show Help         : The ShowHelp() routine operation can show HTML help
Load Model        : The LoadModel() routine operation replaces this
Copy Table        : Routine operation CopyToClipboard() replaces this
Interaction View  : Obsolete

  • FIX Attribute, Table, Label, Broadcast lists in Data menu keep track of sort order and current selection whilst editing
  • FIX Copy/paste of multiple objects including dispatcher or queue was not posistioning the dispatcher/queue properly.
  • FIX When propagating a replace reference, Planimate now supports item table references as well as regular tables. It also supports changing between regular and item table references.
  • FIX Renaming an item table reference for an item now propagates the rename as it promises to do.
  • FIX The routine operation ReIndexLabelList() now propagates index updates to existing label references when the list is sorted.
  • FIX Previous versions of Planimate allowd duplication of label text for different label indicies. This could cause multiple problems including indeterminate lookups and corruption of the label lookup b-tree if one of the duplicates was deleted.
    Upon load, any duplicate labels for a label list are automatically renamed (adding _1, _2 etc) if they conflict with other labels (or aliases) already in the list. Any conflicting labels are removed.
    Planimate will report a "NOTE: To correct duplicates ..." message during load if a label list has duplicates removed. Details are written to the debug log file (/DEBUGFILE command line option)
  • FIX Can now rename item class to the same name with different case.
  • SPEED Optimised table data loading during model/PBA load.
  • REMOVE The old button bar with fixed icons is no longer present/supported. Using button broadcasts and modern layouts gives more functionality and control.
  • CLEAN Internal cleanups to item class management and updating of the class palette.
  • CLEAN Internal rewrite of palette state updating when PL changes mode.
  • CLEAN Old DataSet1 handler code.
  • CLEAN Rewrote the internal processing of the label editor dialog, in particular the way that text file import of labels in the editor and edits of existing labels are handled when merging situations arise. The previous code was using overly complex and obsolete methods of reindexing.
  • CLEAN Removed obsolete dataset1 code


  • CHANGE The way _Panel Opened, _Panel Closed and _Panel Visible broadcasts are sent has been changed to make them process immediately and in-order

7.0.0 (new model version)

  • NEW The Portal context menu now has option "Save SubSystem To File" which creates a model containing just the portal, which can be load merged into another model using the "Add To Current Model..." file menu option.
  • NEW Paint image objects now have an explicit option to select image smoothing/anti-aliasing.
    This was unintentionally always on by default in previous versions.
    NOTE: A Paint image object is different to a Paint Button even though it can still have a click action like a button.
    Unlike a Paint Button, a Paint Image does not cache images in memory, amking it useful for large images or vector formats that do not translate well to a bitmap.
    Also unlike a paint button, a paint image does not have multiple states. It does, however, support windowing on an image and is hence intended for controllable high quality image display.
  • REMOVE Removed File Menu option "Save Model And Create Module". PMB format files are no longer supported. Use an older version to load them and save a MDL/DB.
  • CHANGE Changed and Renamed File menu option "Add Module To Current Model" to "Add To Current Model...". This option now enables selection of a MDL to paste into your current model. The selected model must contain a single top level portal for this option to work.
  • FIX Truncation of model name when it contained "." during copying portals to clipboard.
  • CHANGE Changes to file format to give models a better header. I am aware that an older version might ignore the new model when attempting to load it, so if Planimate isn't loading your model, check you are not using an older EXE.
  • FIX The Paste From Clipboard panel context menu option is only present if the clipboard contains a Planimate module with the PlanimateModule tag.
  • CHANGE Moved some menubar options to only appear if "Advavced Editing" option is on
  • FIX Panel option "Fit Panel To Used Area" had a pixel offset in the y axis
  • FIX You no longer need to save a model to run or paste into it. Some features still require a saved model and will report this.
  • FIX The "Ensure Visible On Display" popup panel option no longer clobbers use of (-2,-2) to center the popup.
  • FIX Centering of pop up windows when the window style is a child of the main window instead of a separate floating popup
  • REMOVE Obsolete menu bar options "Last Error Report" and "Last Run Report"
  • NOTE Context options for copying portals and pasting from clipboard only appear if Show Advanced Menus option is selected.
  • REMOVE Support for the old 16 colour DOS Icons (ICN) as used by early versions of Planimate/SimView. You can use an older version to convert these to BMPs.
  • CHANGE Internal rewrite to all file browser calls (less changes to working directory, more use of absolute file names)
  • CHANGE Rewrote the top level code to save/load models to clean up increasingly messed up path/file management, reduce reliance on working directory changes.
  • CHANGE Rewrote low level code which manages file tokens to reduce inter-relation between file token definitions and their ordering, particularly for object types which were directly used. More straightforward approach now and index to token lookups are faster.
  • CHANGE Internal renames of token enum labels, remove many legacy tokens
  • FIX The text expression parser (used when editing references and importing routine lines) has improved error handling including detecting bad label list names, bad label references, reporting of bad text in the error report and reporting parse errors instead of silenty failing.
  • FIX Routine paste from clipboard now requires either the code start with ";PlanimateRoutine" or a "[" indicating a routine line number. This is to prevent accidental pasting of arbitrary text into a routine.
  • FIX Quoting of problem characters such as "[" and ":" which are included in an attribute name or label is now performed, enabling such references to work as text through the clipboard.
  • NOTE TAKE NOTE: A reminder that attribute, table, column and label list names should not include characters apart from Aa-Zz, 0-9 or underscore (_). Whilst other characters are still supported (and typically will be quoted in a text copy) this is not guaranteed to continue.
    This was announced back in 5.25V and support for the unusual characters in names (including SPACES) will be abruptly dropped at the next instant that they impede developement/debugging of Planimate.

6.9.2 (new model version)

  • NEW The existing s.TrainTailData item attribute is now s.TrainTailData1 and three more (s.TrainTailData2, s.TrainTailData3, s.TrainTailData4) have been added. These are being used for efficient logging and tracking of train tail movements.
    They will be send in tuple attributes _taildata1 ... _taildata4
  • NEW The font used for editing routines can now be set in the INI settings under Routine / RoutineEditFontName The empty default uses the default of "Arial". "Consolas" is a good programming font choice and may become the default in future versions.


  • FIX A dynamic table reference can now use text (literal or via an attribute) as well as labels for the table name.


  • NEW Portal option "Copy To Clipboard" (experimental) This copies the portal selected to a model file containing the portal as a sole top level portal (as required for a PMB) with unreferenced/unused attributes, label lists, broadcasts and item classes purged.
    The resuling text can be pasted into another instance of Planimate using the new Paste Object From Clipboard option.
    NOTE: When working within the same model it is better to use Cut to move a portal as out of scope views in the portal will be removed when it is copied out of the model.
  • NEW Panel context menu option "Paste From Clipboard" This pastes a portal in the clipboard (copied by "Copy To Clipboard" above at the current location in the model.
  • NEW Free text and text expressions now supported in dynamic table name
  • CHANGE Internal rewrites:

- panel class names
- paint button link handling simplified
- rewrote load / SearchForFile for modularity, added return code
- cleaned up model load flags and state changes