ReleaseNotes:Planimate 4.15 Release Notes

From Planimate Knowledge Base
Jump to: navigation, search

Release notes, bug fixes and misc enhancements to Planimate 4.15


  • item/class attributes now merge (on inter model copy)


  • activity state system attribute added

shows an activity bar in the status bar,

  • Value of 1..100 controls length of bar, 0 to reset (no bar)
  • automatically reset at start and end of run
  • otherwise its totally up to modeller how it gets used

Since this updates even when running without animating, use carefully to avoid model slowdown

  • fixed fast anmiation bug after button click
  • animation flushing added after mouse/key/menu events to fix stray state icon problems when pausing and initiating messages
  • broadcast label re-indexing on model merging now implemented
  • merged broadcast labels should no longer be scrambled


I have completely rewritten the way animation updates are applied to the screen. I now use the backing store (active while the model is running) to eliminate all flicker when objects are repositioned, images repainted etc.
To make this work, I've placed "Flush" operations at strategic points in the system. IF your model does not update as it should and it worked with version Q, let me know, I may have missed one.
This involved finding and plugging some redraw re-entrancy bugs which were lurking in the system, apparently harmless until the update order became critical with the new implementation. I think its all fixed now, screens will redraw quicker *BUT* the cost is that nothing will appear until everything has been rendered into the backing store.
There are now 3 ways to move an *OBJECT* as the model runs
1. Current Portal X/Y system attributes
This is the least efficient as you'll usually have to message into the portal to get it move. It wont flicker but will still require redraw processing for each move.
Its good where an object knows where it wants to move to as you dont have to export its identity into the object label list.
2. Object Attribute (new attref mode) - Object X/Y position
This enables the x/y pos of an object to be set in a routine, where the object can be pointed to remotely. By applying all object movements in one routine you can reduce the redraws required. All the changes can be made in one redraw "hit"
3. Object "Animation"
A new special Calculation - "Animate" enables an arbitrary object to be smoothly animated to a new X/Y position. The object will move at the default system icon animate speed.


  • implemented dependency tracking for dynamic tables referenced using a constant attribute (but no speed up in table lookup)


  • removed comment text from calculation erea for comments
  • clipping display option (default off) enables objects to be positioned off screen and to stay there even when screen area resized. Otherwise they are brought back into view.
  • the time advance dialogs no longer continue the run if they are cancelled
  • fixed byg causing attref scan errors (condition pasting)


  • fixed rectangle update on graphical dial bug


  • object attribute access now implemented as attref mode
  • stat views update in pre-init mode


  • object type now indexed from 1


  • new file mode: file size read

deposits result into first attribute in the targets list

  • returns size of file (0..2Billion) or -1 if file does not exist
  • new calculation - object type, new label list "object types" to support it returns object type for given object reference
  • conditions are retained when switching between IF to CASE to WHILE
  • conditions can be copy/pasted within a model
  • menu bar option to toggle drag mode (in Window menu)
  • image dials now have an option which causes them to auto-resize to the current iamge boundaries rather than scale the image to fit the box
  • Have relaxed the clipping of stats so portals and stats can be positioned off-screen, let me know of any anomilies with it


  • arrival time can be set for items on a route
  • "Item Time Until Arrival"
  • used in conjunction to section running time to compute the running time

the previous implementation was moving items from sensor entries immediately the entry was sensing a change in its target. If this occured in the middle of a routine... the routine would lose access to its routine attributes
The fix was to schedule an event for the sensor entry which will execute once the current event has completed.


Portal reposition option - moves portal stats when portal repositions

  • you can drag a portal without repositioning the stats by holding down shift after starting the drag
  • label list operations (partial)

new "label list" attref element mode

  • to address entire label list for new label lists
  • label clear operation - clears all entries of label list without any validation/update of tables (existing data loses label) useful if planning to import

other operations coming...


  • optional "_color" column now added, if present the colour as specified is used

if not the original colour mapping algorithm is used, which maps states to colours but avoids the background colour


to get things consistent I have reworked the row colour code so colours range from 0..15 (as for tables/graphs)
255 should be used for no colour
To avoid problems with old models, I've added the "Index colours from 1 not 0" option which gets set for old tables using row colours, and things work as before.
Do not use this option with new models, I'm imposing the discipline of indexing colours from 0 as one day the colour values will become RGB values anyway ranging from 000000 to FFFFFF (hex) - around 16 million


if a condition is performing an AND and the previous value is false, I dont bother evaluating the second argument, result will always be false
This allows condition to contain test such as
att <= table row count AND table_cell[att][1] != 0 without the second operation giving an error if the first one fails


As I have yet to receive any feedback on version G I'll assume its bug free :)

  • implemented new option "Hide Item Click Details" which hides all item click menu options except attributes.

CTRL key overrides for debugging

  • some extra item click displays added
  • Facility now has complete state and stoppage editor
  • log driven graph enhanced
  • can have many graphs connected to same table with them plotting different ranges of overlay ids

The STOCKPILE demo model shows this
The AUSMAP demo model shows whats now possible.
Its a graph, not a BMP! Sorry I lost the pen-up command around Tasmania when importing the vector data.
BTW: a pen up can be achieved by plotting a line with 0 width


This is an intermediate release for testing. Much code has been modified with graphing, all graphs need good testing.
Do not commit to this version without recourse to roll-back to a previous one

  • log driven graph

dynamic graphing capability, driven from columns in a table
to be documented, currently the following columns are recognised. Note that not all are required and they can appear in any order:
_overlay overlay #, 1,2,3 etc. _x x points - these do not need to be increasing! _y y point
if these are present, they enable color/width etc to be changed on the fly for each line drawn in a given overlay
_color use the new colour label list, 0..15 _width line width _style _yoffset

  • default label lists added for colours, line styles and boolean codes
  • table import filter has new options
  • strip trailing spaces (from labels)
  • remove enclosing '

Removes enclosing single quotes and strips any junk outside of single quote pairs, first character must be ' for this to activate

  • new facility state edit dialog (not stoppage yet)


  • Wormhole entry/exit mode:

Wormhole exits "teleport" items to their associated wormhole entry, enabling items to be moved across the model without having to flow up and down the entire hierarchy, or having to hack using broadcasts
The relationship is one to one. It can be copy/pasted as long as the portal copied contains both wormhole entry and exit within its hierarchy.
Unlike messages and broadcasts, woemhole exits support blocking and unblocking... a blocked wormhole entry will cause its wormhole exit to appear blocked to an approaching item.

  • separate pipe options control load monitoring and load limiting selection

IF load limiting is not needed, turning it off will speed up operation

  • fixed problem when dealing with message items and portal item counting
  • sensor entrys no longer produce item until the main run starts. They can be disabled for an interval after that (specified in seconds)
  • fill intermediate steps can be interrupted with <ESC> key
  • new Display->System Parameters menu
  • will have engine tuning parameters added, initial one Maximum Track Fill Search places a limit on how deep system will recurse in attempting to fill intermediate steps. 50 is probably a more reasonable number. If this is too low, Planimate will be unable to fill the intermediate steps and the track logic will complain of unreachable steps


  • This implements the Sensor Entry

See SENSEENT.MDL for an interactive demo
This entry compares a target attref (can be a portal attribute or table cell) against a trigger level.
When the target crosses the trigger, an item is produced by the entry. The entry does not produce another item until a "reset" condition fires, this enables hysterisis to be implemented.
The entry has a very complete paused-click menu which shows everything you'd want to know about its current state
An option enables selection of "immediate move" which will cause immediate activity when an attribute is changed while the model is paused

  • Implemented "stay paused" checkbox in model error dialog to assist in debugging
  • Does not appear in interdyne mode
  • After an error model integrity will have been lost and continuing the run mhilst possible (useful for some debugging) will not be reliable and any results should not be trusted
  • A new _!SYSTEM.DB is included with this version, it includes new icons for new object states (new entry modes, broadcast change object) and smaller default icons for assembler, splitter and multi-server


  • fixes bug in intermediate loop filling and adds more validation to error conditions in the intermediate loop fill routine
  • avoid using the new entry mode "Sensor" its not implemented yet


  • added route read capability; model can read route information FROM an item into a table.
  • added "Fill Intermediate Steps" command

This performs the route "guess intermediate steps" on-the-fly on the current item route
An option specifies whether loops get filled in as well. This is very useful as you can then use the "route read" operation to read the completed route back into a table, fill in the timetable times and then re-assign it as a route to the item

  • CHANGE to Fill Intermediate Steps:

Have added validation which complains if a loop appears in a route without the endpoints of the track it is on around it. This would cause the auto-route builder to build incomplete routes since it cannot handle encountering a loop without the endpoints.
DYNROUTE has been updated to demonstrate the new capabilities
<notice how timetable times for automatically guessed portals/loops are zero; modeller needs to interpolate these somehow, this model does not implement this)


  • Fixes track bugs (bad error reporting for timetable route assignment)
  • Sort broadcast list
  • Added broadcast tracking when broadcast is sent from a change object and its sent via a constant or label reference


  • route timetable times are now used to compute section running and loop waiting times


  • implemented data handling for target "object detail" Eventually this will enable specific roads/sections to be specified along with an object label reference.
  • route assignment from a table implemented

A table can load a route into an item using the "Assign Route From Timetable" option

The following columns are required in the source table
"_location" : portals and loops on the route "_arrival" : arrival time (calendar) "_departure" : departure time (calendar) "_dwell" : minimum dwell time at loop
These will be interpreted by the track logic in future versions. Currently they are available as system/item attributes as follows:
"Item Time Until Arrival"
Gives the time which must elapse before the item needs to arrive at the next step in its route. (When an item is inside a station, its step pointer is already advanced to the next step). If the timetabled time has already passed or no route is assigned, this will yield 0.
"Item Time Until Departure"
Gives the time which must elapse before the item should leave the current object in its route. This is unavailable if the currnet object was the last step in the route (the route has completed). If the timetabled time has already passed or no route is assigned, this will yield 0.
"Item Dwell Time"
Gives the minimum time which the item must spend at the current object, even if its behind on its timetable. If no route is assigned, this will yield 0.
Model DYNROUTE.MDL demonstrates some of these

idkbase note 160