ReleaseNotes:Planimate 4.94 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search


CHANGE: Entry schedule/arrival can be edited with right click
CHANGE: Multiserver 0 delay option can not be turned off when it is in an application panel
CHANGE: Redundant "Add" button in paint and log label lists removed
CHANGE: "Create Standalone App" is now in the Advanced Edit menu
CHANGE: Queue and Dispatcher now are 16 pixels high so flow lines are straight
NEW: Typine '@' while filling in a date time popup sets the field to the current date and time Typing '#' while filling in a date time popup sets the field to the current date and time 0:00
BUGFIX Palette update after a run particularly if the palette was not docked was broken in y


BUGFIX: clamp width of condition description in condition editor to prevent button growing
BUGFIX: merging with scoped classes fixed
BUGFIX: menubar status fixed when hierarchy explorer opened
BUGFIX: Can reference log label list
BUGFIX: Better management of sidebar during run. The sidebar no longer needs to be hidden, the palettes get disabled. Reduces flicker
CHANGE: Tables in Mapper mode identified as "Table" not "Mapper" in the titlebar


  • bugs in managing palettes in application mode fixed
  • memory leak for deleting hidden splitter
  • palettes being shown when loading a "tools hidden" model
  • crash when closing due to an update being made to palettes which were already deallocated
  • explorer window not being tracked when in interdyne mode
  • reduced flicker in sidebar when switching to/from interdyne mode
  • to toggle a palette being in the sidebar/floating now use the ALT key when it is displayed.

(CTRL was causing problems eg with CTRL-T and CTRL-H)

  • changes to portal hierarchy (during edit or initiated by model) will be faster if the explorer window is visible or docked.


CHANGE: *** old models need attention for this ***
Graphs using columns called _thinkness and _link_thickness need to have those columns renamed. Planimate now expects the columns to be called _width and _link_width respectively

  • "Choose Icons" palette:
  • state selector rewritten
  • cell highlighted clearly
  • icon name has more space
  • handles scrolling better (for custom portal states)
  • right click on a state shows "Locate" option which will point the RHS palette at the folder/DB where the icon is located and hihlight it
  • DataBases which dont contain any ICN or BMP files are not displayed since there is nothing to select there. They are displayed in the icon mover.
  • model's database is not opened by default if its empty
  • funky focus issues fixed
  • ability to select invalid states fixed (clicking in the scrollbar area)
  • The "Change Directory" button in palettes has been renamed and works more as expected - selecting a DB opens it, selecting an icon displays its folder. The file type filter now includes BMP, ICN and DB files.
  • "DB" files are now referred to as "Resource Databases" in file browsers
  • Scrollbars work properly in the palette browser particularly when "lo cating" icons


In Tray renamed to Agent Drop-off Out Tray renamed to Agent Pick-up

NEW:Panel navigator, sidebar and palettes

  • sidebar is only available during edit. During runtime and application mode it gets hidden and its state is restored when going back to edit
  • during run if a navigate is performed, the modal navigation dialog is used (the sidebar cannot be shown as it may contain the editing palettes)
  • ctrl-N when the explorer is docked gives it focus and the keyboard can be used to explore. <ENTER> or <SPACE> returns focus to the Planimate model window. ctrl-W can be used to show/hide the sidebar including the explorer.

ctrl-N when the explorer is not docked shows/hides it.

  • focus after using palettes is returned to main window

CHANGE: "Text Format" changed to "Text Alignment" in view menu


BUGFIX: Fix for Bad String Load Error (Enum order of routine commands was altered)


CHANGE: Newly added Log Driven Graphs will behave differently
The modeller can determine if the colour/thickness/linestyle and yoffset of a drawn segment is taken from the starting point or ending point of the segment.
By default it is now taken from the starting point which makes it consistent with gantt and train graphs.
A new option on the view, "End Point Sets Colour" is on for older models. It is off for newly added graphs.
BUGFIX: Sorts where rows matched as identical could result in those rows swapping positions in repeated runs of the same model due to the random nature of the sort when things match.
To prevent this, I've added an internal check which uses row order as the final sort criteria if 2 rows match all the conditions the modeller has specified.
I also applied this fix to the "create sort index" operation.
NEW: Tables with transparent backgrounds should display properly.
These can look cool over gradients etc. but will be very CPU intensive to redraw. Not recommended for tables which update often.
Basic editing and value updates of the table should redraw properly
NEW: Object and Class palettes are now dockable in the sidebar To make the palettes dock use the new ini file options Sidebar related inifile options are now:-
[Dislay] SidebarW=200 // Initial width of the sidebar SidebarStatus=0 // Currently unused TreeViewDocked=0 // 1 = Dock the tree view in the sidebar TreeViewStatus=0 // 1 = Tree view is visible when Planimate loads
[Palettes] ObjectPaletteDocked=0 // 1 = Dock the object palette in the sidebar ObjectPaletteStatus=0 // 1 = Object palette is visible when Planimate loads ClassPaletteDocked=0 // 1 = Dock the class palette in the sidebar ClassPaletteStatus=0 // 1 = Class palette is visible when Planimate loads ObjectPaletteSize=0 // 0 = 6x2 (new style) 1 = 4x3 palette (old style)
The defaults are to show palettes in the sidebar.
If the ctrl key is held while showing a palette, it will appear opposite to the default in the ini file.
NEW: INI defaults for palette (when not docked):
[Palettes] ObjPaletteX=0 ObjPaletteY=0 ClassPaletteX=0 ClassPaletteY=80
NEW: Key press combination to show / hide the side bar <ctrl> <w> while in edit mode
NEW: Routine operation under "Label" Create Sub Label List Has three inputs Format Result - Attribute to format to new sub label list List Name - Name of new list (label) Parent List - Parent list for the new sub label list


BUGFIX: incorrect "Another exists" messages for paint label list reworded
BUGFIX: Loading of ovals broken in


now fixed

NEW: Support for logging of attributes.
Attribute/Cell Stat views now have a "Log" option. This adds them to a new global label list, "_Logged Attributes"
When a "logged" attribute changes during a run, the platform will now send a new global broadcast "_Log" with the following item attributes:
_logtime - the time of the log event. Normally the clock but it can be different if the modeller artificially sends log BCs _logvalue - the new value _logid - the index of the event in the "_Logged Attributes" label list.
Note: the initial value of the attribute does not currently generate a log event. This proved problematic but might change in later versions
NEW: Clock colour can be changed using the "Graphics" menu when the clock is clicked upon in editing mode.
Clock now defaults to white in new models
Gradients, border style and transparency are not supported.
CHANGE: The default "Calendar" start date for new models is now 1-jan-2001. This is a Monday.


NEW: Basic "Module" load capability. New File menu option "Add Module To Current Model" enables simpler merging of models. Selecting this option

  • saves the current model
  • enables a "PMB" saved model to be selected
  • loads that model and merge with original model
  • leaves user with the "module" ready to be pasted (the original model is not resaved after the merge)

This option requires that the model which is the module is saved as a PMB file and only has one top level portal. No other objects are carried through the merge process.
NEW: In "Advanced" mode, new portals have pentry/exits hidden until they are included in a flow or have tracks/spatial links/pipes first connected
NEW: System broadcasts cannot be deleted or renamed
NEW: Tracks menu only visible if there are tracks on the main screen
NEW: Title and behaviour of colour palette different when its selected from the edit menu. In this case you dont select a colour so clicking on a colour just updates its name in the field at the bottom.
NEW: Updated "no interaction details" dialog and object click menu
BUGFIX: fixed a paint copy bug when paint objects were using a condition
The new condition editor was not setting the proper owner on copy of the condition. This would be unnoticed in all cases except where the special scope gets overriden as in paint objects with the "parent scope" option on.
NEW Update interval is set to 10 and a message is given if a track/spatial/pipe is added and its still 0
UPDATE Table "Act As Mapper" is on by default

NEW: Paint ovals now inherit same abilities as rectangles, buttons (visibility control, click action, hover text)
NEW: A new table option enables the table's comment to be displaywd in the table when the table is empty - this includes when the table has no rows
NEW: Object step menu has "Start new path here" option


NEW: *** Important For Editors ***
Some items in the menu bar are now in a new ADVANCED menu
A new "UI:Advanced Editing" display option enables/disables the advanced menu
When loading older models, Advanced Editing is turned on Otherwise new models use the [Edit] AdvancedEditing flag in the INI file. This defaults to 0 so new users of Planimate dont see the advanced stuff. Existing users will want to make sure they have:
[Edit] AdvancedEditing=1
note this is a new section in the INI file and previous PL versions will remove it
NEW: INI file option [Edit] AssumeNoBlocking
IF 0 (default) then:

  • new switches are blocking switches
  • new routines invoke lookahead If set to 1 then PL acts as previous ie:
  • new switches are assume no blocking
  • new routines invoke only during move

This makes it easier for new users of PL to work with blocking switches and routines.
BUGFIX: Runtime Paint Copy label assignment fixed
BUGFIX: label list, broadcast editors manage focus better after an edit
BUGFIX: Alternate portal entry/exit properly cropped to screen when created
UPDATE: Descriptions for clock/time formats
NEW: Item palette tool tips and keepfront fix
NEW: Renamed menu bar items
NEW: defaults and misc changes:

  • Portal Options ON for new portals: Retain State After Run
  • Item Options Flip Icons ON by default
  • All Splitter Options ON by default


NEW: paint object menu now shows object label name and index if its set
NEW: paint label references now shows co-ordinates (middle) of paint object to help locate it
BUGFIX: paint object copy properties validates against attempt to copy own properties
BUGFIX: if dragging an object from the object palette, releasing over the object palette does not drop an object
CHANGE: default window width for new panel is now 1016. If your INI file has another value it gets retained
NEW: INI file option to display the IDBase menu - by default its off but power users can enable it
to enable put under [Display] : IDBaseMenu=1
(PL will add an entry in your INI file for this so check for it)
NEW: INI file option determines if new models/portals get flows displayed. It is on by default, to disable under [Panels]:
NEW: INI file option enables flow editing tool tips to be disabled: They are on by default, to disable under [Display]:
CHANGE: FLOW EDITING: left click on arrow head now goes into flow edit mode for that path. right click on arrow head goes into interaction mode (as before)
If there is only one class for the path, the class is selected without the popup being displayed.
BUGFIX: main window "Topmost" bug after using palette fixed
BUGFIX: Many Forms, Item Pick and List Pick dialogs that could become hidden behind the main window now have proper owner set


NEW *** palettes now act on the mousedown not mouseup ***
Loop menu has better display of train status
The train name may be prefixed by one or more of the following letters: L : Train is in loop enter/exit delay l : Train is undergoing a forced dwell/delay at the loop G : Train is blocked by the loops out gate F : Train is forced stopped (priority pass is pending at the loop)
Trains blocked from moving by any of these conditions are not registered in the blocked trains list.

  • Tool tips in the flow editor
  • indicator line in flow editing to show where the flow will connect to
  • right click on class palette icon enables item class properties to be set
  • info panel y offset can be specified for an item class
  • info panel frame style/background/text colour can be specified including support for gradient and transparent styles
  • Column title tool tip option - displays column title in a tool tip when hovering over the column's title
  • Listeners AND sources browsable at buttons and entries Note that button sources reports 1 extra due to an internal copy button used in inheritance tracking
  • An attribute range check error is now processed as a breakpoint instead of a hard stop if break points are enabled. Otherwise its processed as a hard stop.
  • Animate speed and time scaling can be set via system attributes (under Display/Mouse submenu)


  • not possible to drag objects off screen (clipping was broken in move)
  • class palette now works
  • track unblocks dialog has a "cancel" button to let you out of debugging messages. Pressing cancel turns off the debug option and continues.
  • "Paste Over" in table row menu now unavailable if no rows in the target menu



  • Conditions now have a new implementaiton featuring the ability to include brackets and to have an unlimited number of comparisons in the condition.

The brackets enable the evaluation order of the condition to be set, otherwise the ordering is as in previous versions of Planimate - expressions are evaluated in the order they are encountered.
The new condition editor features:

  • one comparison per row with vertical scrolling when there are many rows
  • indenting to show the condition struvture
  • buttons on each row to add opening and closing brackets
  • horizontal scrolling when the brackets get deep
  • comparison rows can be easily duplicated and deleted using the menu on the "bracket button" at the left of each row
  • Validation to prevent OK on conditions with incorrect or incomplete matching brackets
  • A status line at the bottom indicating if there are outstanding brackets to close or a bracketing error
  • A summary of the expression near the bottom wher A,B,C etc are substituted for the attrefs, enabling the comparison logic to be quickly reviewed without the distraction of the attrefs being compared
  • copy and paste capability enabling conditions to be copy/pasted to other objects or to/from multi-conditions
  • A "Report" button which formats and displays the condition in full into a text window for review and documentation purposes

The multicondition and search functions also use the new condition code.
The multi-condition dialog has been reworked to accomodate the new condition editor. The rows in the multi-condition now have a context menu for editing so some of the editing buttons at the bottom of this dialog were removed.
The search dialog has also been reworked to accomodate the new condition editor.


  • the /SHARES file mapping option no longer complains if a share is being mapped and the share already exists (code 85). This is to avoid issues with systems that remember the previous share between sessions.
  • file locking: was passing deallocated string to unlink()


NEW: INI file option is now available to determine whether the Navigational tree view appears in a side bar or floating window.
INI option: TreeViewDocked Values: 0 = undocked (floating window) (default) 1 = Docked

NEW: Command line option to compile a stand alone exe format:- planimat /MAKEEXEKEY="key_file" "model_file"
key_file the key_file for the planimate pba model_file model file to be compiled
both key_file and model_file must be present for a successful compilation


NEW: Can browse listeners of a broadcast directly at a broadcast button.
This shows all listeners regardless of scope; they may not actually receive the BC if it is a scoped BC.
NEW: Table column menu option "Show References"
Shows all table references that can *potentially* read/affect the column This includes:

  • direct hard cell reference
  • cell reference via column label
  • all cells via a variable in the column index
  • row references (eg: as used in tupling)
  • entire table/block references
  • use of the column as a matched cell matching source

References from dynamic table references and item carried table references are not shown though for the latter, the assignment of the item table reference should be shown.
Let me know if any other ways of referencing a column have been missed
NEW: Sorting Enhancements

  • The sort edit window now supports up to 8 sort columns and each column can be sorted either Numeric (index order) or Alphabetic (formatted string order) It now displays column numbers if the columns have no label

When selecting a new column in a sort dialog, if the column has a label list associated it defaults to "Alpha". The user can change it back to "Numeric" if its desired to sort the label list column by the index.

  • The "Table Sorted By User" broadcast now sets "_sort5" .. "_sort8" attributes as well
  • A new routine operation "Advanced Sort" is available. In addition to specifying a target table, another table is passed which contains the configuration information for the sort as follows:

Column 1 contains the column #s for the sort keys Column 2 contains the forward/reverse flag (0 = forward, 1 = reverse) Column 3 contains the numeric/alpha flag (0 = numeric, 1 = alpha)
This table can contain up to 8 rows, the maximum number of sort columns supported.



  • Large/long runs of Planimate which had a large memory throughput would cause Pl to crash on close. This was because the report written to PLANIMAT.DBG was overrunning its buffer.



Now do centralised blocking management

  • trains which become blocked are added to a global blocked train list. This list is ordered by oldest waiting train.
  • The list is now being unblocked "Newest Train First". This was found toI resolve a deadlock in the test model I'm working in and achieve better throughputs. Ideally I wanted to unblock oldest train first. This issue will be further investigated.
  • the new menubar option Track->Blocked Trains option enables this list to be viewed. If a train is double clicked/right clicked, a "blocked reason" for it being in the list is displayed. The reason display is greatly improved.

IF clicking on a train causes it to "disappear" from the list then the train was no longer blocked and was able to move. This should not normally happen so report it if you notice it.

  • There is also an "Unblock All" button to attempt to unblock all items in the list. This should not be normally ever needed but would highlight any missing unblocks in the PL code.
  • It might be necessary for me to provide a modeller "initiate unblock" if section availabiltiy is based on an attref that PL does not normally send unblocks for. Table cells refs are OK.
  • The list includes columns for time train became blocked (VERY useful), train id, blocking track location, route, step etc.
  • Trains in the track blocked list might actually not be on a route! I've (hopefully) handled the situation of a train being in a queue followed with an assign route change connecting straight to a portal exit. Hence while the train is blocked, the route isn't actually assigned yet but the platform knows a track has blocked it and keeps it in the track blocked list anyways. This involved new code in the core PL engine so existing models will be slightly slower.
  • theres also a new debugging option which will cause PL to report all "blocked reasons" as unblocks are attempted (useful when stepping along a run).
  • have rewritten track code to accomdate this new unblocking

Also made logic changes to:

  • "Stopped" trains / priority passing (cleanup)



  • (CVS release only) - has the track unblock list code but the old track instance code which doesn't make use of it yet

Uploaded so I can compare old and new track instance code without other differences


  • new Routiner operation Set Junction Mode (Route) enables the "Act As Junction" option on a portal to be set (1) or reset (0) by the modeller.

This is useful when a portal is a junction in some scenarios and has "capacity" in others.


Option to hide the "Print" menubar option (in application mode)
Fixed a VERY NASTY and hard to find bug with paint inheritance.
If a hierarchy including base and inherited paint objects was copied AND the "Scope Control Attributes To Parent" option was on AND Paint objects used a visibility control condition AND The parent hierarchy occured after the child hierarchy (in the order of portals in the model) THEN ... the copy hierarchy was left with a stale parent scope pointer.
This would cause a crash if the original hierarchy was subsequently deleted (eg: because the copy was being moved to another model) as the scope pointer is needed during the model merge process (its used to resolve label list references so unused label lists can be purged during the model merge).
I now make sure all child objects have their scoped updated if the parent object experiences a change in its parent (as may happen during the situation above - in the RedirectObjectLinks() handler).
Rearrangement to INI attribute list to prevent crash when reloading model.
CHANGE: Track options
These changes are intended to make existing track models work more reliably with the latest track code in previous releases without needing modification.
New track code is being developed but this is not released yet.

  • Track system now always runs in "compatability mode" so I've removed the compatability mode modelling option. The new way of capacity testing described in the 4.93 release notes is temporarily disabled - I'm not aware of anyone using it,
  • "Act As Junction" and "Route Step Lookthrough" options now both do exactly the same thing. Eventually Route Step Lookthrough will be retired.

This is a temporary hack so existing models are more likely to work with the


/h enhancements

  • Made unblockign a bit more "agressive" (still old style)

CHANGE: Code cleanup (instance object construction) - should not affect users


REWORK: More changes to track Route Step Lookthrough, simplifying the search because unblocking doesn't support it properly yet.
NEW: New system label list _system_colors containing list of indexed system color descriptions
NEW: Routine Operation "Get System Color RGB" the returns the RGB value of the specified system color
These two additions can be used along with "Set Palette Colour" to keep a Planimate interface compliant with the current windows theme.


FIX: Panel Selector tree resizing issue has been fixed.


REWORK: New Route Step Lookthrough method introduced in 4.93 was causing a problem with an RCM. I've changed it to something that seems more sensible and the model seems to run OK now.


NEW: Model Explorer now opens "docked" in a sidebar. The width of the sidebar can be adjusted to allow a persistant "explorer" view.
The default sidebar width is stored in the planimate.ini file SidebarW=200
The sidebar can also be displayed by default using the ini file SidebarStatus={0 / 1} 0 = off, 1 = on
(Those with high enough resolution may want to try these ini settings) SidebarW=200 SidebarStatus=1 StartW=1230


BUGFIX Get palette colour was broken


NEW: Routine editor can be opened from within a breakpoint
NEW: Routine operations "Set Palette Colour" and "Get Palette Colour"
This enables colour palette entries to be directly set. Palette entries are numbered from 0 to 63 (in future this may change) and colour values are a number which encodes RGB as follows:
colour_value = R * G*256 * B*256*256
HEW: Routine operation "Set Item Area String"
This enables the text of the "Item Area" in the status bar (where the item class name appears during editing) to be set.
It may be useful to provide additional status/context information to the user as this field is quite large.


NEW: All help files are now assumed CHM (Html Help). Planimate will load HTML Help upon its first use. If not available (ie: not installed) it will give an error. Versions of windows from Win98 on include HTML help in their default install.
NEW: double clicking label references in the label reference list now opens the table editor and selects the column if the reference is from a column
NEW: Routine operation "Files In Folder" (Label/String)
This enables a modeller to get a list of files in a given directory matching a certain type into a label list.
The target specifies the label list into which matches are appended. (there is no check for duplicates already in the list).
The "Path/File" should be a label specifying the source folder and file filter
eg: c:\windows\*.INI would give all "INI" files in c:\windows
The Path/File string is mapped through the filename mapper (File Name Remapping) as occurs for change object File operations so names may be overidden at runtime using the INI file and "|" can be used to separate multiple fields which are separately overridden
REWORK: Ownership tracking for attrefs in routines reworked to enhance tracking of these. Should not affect anything.


BUGFIX: Months in day validation fix when importing times
(bug from



  • New routine operation: "Enable Editing" (under table) - works on columns

This enables a modeller to control where columns in a table are editable by clicking on them. Useful with dynamically constructed tables or where different access levels control edit access, without having to mess with broadcasts.

  • Major rework of code to:
  • Safeguards to idicate if a release EXE contains some libraries compiled with debug options on
  • make compile with Visual Studio 2003 (VC7) (now builds with 3 compilers)
  • Move core code modules into iFlow (TCP/IP, XML, Calendar Time processing)
  • Remove memory leaks with idBase
  • Prevent idBase updating the menubar when its being browsed
  • Rework code using obsolete "streams" functionality (affects TCP/IP, XML and RTF notes)
  • Manage windows notifications a bit more orderly
  • Experimental:idBase is integrated into Planimate. Its in the menubar for developers. This will be made optional later.

People with an idBase knowledgebase account can put their idclient.xml file into the working directory to simplify login.
(will make it default to the EXE directory in a future release)
= note: new file version but if you dont use the new routine operation then you can edit the MDL and change 419 to 418 and it should be OK in


idkbase note 222