ReleaseNotes:Feature Review December 2009

From Planimate Knowledge Base
Jump to: navigation, search

2009 was a busy year for Planimate. Releases started at 5.21k and ended with the release of 5.25c in late December. An exceptional number of groundbreaking achievements were made in both capability and usability. These are outlined on this page.

Modularity And Platform

64 Bit Version

Planimate compiles as a 64 bit Windows application. This enables enormous tables and network model sizes, well beyond the 2GB limitation of the 32 bit version.

Planimate as-a-DLL / dotNET Interface

A programming interface has been created enabling Planimate to be embedded in other applications with mechanisms to access the Planimate model's data and engine. Capabilities include:

  • Retrieving a model's Data Object list which can be used as a data dictionary.
  • Retrieving and setting data objects in the model (tables, labels, attributes).
  • Initiating a broadcast to the model, with tuple attributes.
  • Receiving a broadcast from the model (as a “callback”) with attributes.
  • Embedding the PL window into a window provided by the DLL caller.
  • Creation of PBA DLLs from the PBA creation dialog.
  • Accessible either directly from C++ or under dotNET via an interface which provides higher level management of the PL DLL.
  • Supported for 32 and 64 bit PL versions.
  • Recent PL releases can make themselves a DLL, you do not need a separate download.

Planimate calling DLLs

Planimate has had the ability to call external DLLs for a few years. The API now includes support for sending text and label list data to and from the DLL.

DLLs can now also directly refer and work with PL tables, avoiding copying/duplication of data across the interface.

They can slso persist / hold state between runs of the engine, enabling the DLL to be more than just a stateless callable function.

Certain types of DLLs can be packaged into a Planimate compiled application EXE in such a way that they are never exposed to the end user, contributing to security for valuable IP they may contain. This is achieved by loading the DLL directly from a memory image instead of a disk file.

Calling EXE / Processes

Command lines can be built up from separate strings using '&' to combine them, avoiding having to use label lists.

Planimate can now wait for a called EXE to complete, whilst still appearing “alive” until the called process completes. A new option to keep the called process at front ensures PL stays behind another process window it has invoked.

Standalone Planimate Based Applications (PBAs)

Planimate has the capability to create a single executable (or callable DLL) that contains a model, the platform runtime and the resources (eg graphics) that it needs, all  in one file. This has been enhanved to support building both 32 and 64 bit applications/DLLs from a 64/32 bit version, so long as you have both corresponding PL EXEs.

You can customise the icon an end user sees for an application beyond the default PL icon.

Corporate Environment Support

New references give access to the paths the operating system prefers for user data and application settings, particularly important with newer operating systems like Windows 7.

The system's temporary folder is used in more circumstances since the program directory is typically read only on corporate installs.

The platform can retrieve username / location information available on LDAP managed networks, facilitating user authentication. Its also worth reminding of the existing inbuilt ability to login/run as a different user and to map drives under that different user's credentials.

DataSet Enhancements

Planimate dataset2 files can now include other files within them. These files will be compressed and encrypted like the rest of the dataset2 file. The modeller has fine grained control where and when these files get extracted.

A new label list option, settable at runtime, enables a modeller to determine whether labels are loaded by name or by index from a dataset. Previous versions forced load by name which was not always what was desired.

Track/Train Modelling

Track Loops

The inbuilt track loops in Planimate are now obsolete and no longer supported. Mechanisms have been added to expose internal track management constructs to the modeller, enabling complex loop and station configurations and even multi-level track models to be built.

A documented "standard loop" portal provides a starting point for building your own track control logic.

Loop delays are still supported with train-level ability to override them.

Multiple Track Roads

Up to 6 replicated roads per track section are now supported. Modellers can dynamically determine the roads a train is allowed to use at lookahead time.

A road can be explicitly reserverd for a train. This fine grained control enables signal level modelling.

Model Editing

Panel Consolidation

View Panels, Dynamic Panels and Application Panels are now consolidated into one panel type. Any panel can contain views to out-of-scope data.

Panels/portals can be moved around the model without having to copy them, preventing problems with copied object labels.

The sidebar hierarchy view enables editing and moving of the portals and their subsystem panels.

Option Editing

A new option editor is now in place, replacing the 2 column left/right picker.

Some initial support for editing multiple objects simultaneously.

Dynamically Sized Panels

Dynamically resized panels and simple anchoring is now supported for views (including viewports) enabling a panel layout to accomodate different window sizes/screen resolutions.

Help Menu

The Planimate Help menu is getting more quick references which are also used to feed content into this wiki.

Runtime Engine


  • Item and object icons can be partially transparent
  • Realtime timer broadcast has been replaced with a mechanism where a modeller can request a broadcast after a real period of time. This gives far more control over real time activities.
  • View properties can be set in code for different view types (table, log driven graphs etc).
  • New “Check Parents For Broadcast” scope option for broadcasts, in addition to scoped, panel only and global. This enables broadcast handlers to be in a parent or sibling to a network node, reducing replicated code.
  • Click and drag broadcasts can be received by the model, very useful for creating interactive map displays.
  • A new high quality 32 bit random number generator is now on by default.

Text Handling

Attributes and table columns can now be formatted for "Text". Together with new routine operations for assigning and appending strings, plus over 15 text manipulation functions, Planimate is more adept at processing textual data which in the past required messy and slow label list operations.

Table Enhancements

  • The table view has been completely rewritten with a more consistent display end editing interface
  • Table cells can contain multi line text, useful for descriptions and annotations.
  • There is now the ability to intercept table cell click broadcasts before and after an edit; the edit can be blocked or allowed.
  • Dynamic combo list dropdown will update its contents as text is typed.
  • Routine operations to access, clear and reapply column filters.
  • Elements of the default table context menus can be hidden


Many speed optimisations, better use of caches, recycling data structures and binary trees for lookups mean the platform can support tens of thousands of network nodes and hundreds of thousands of labels.

Name Space Rules

Label list names were the first names to have new naming rules imposed. Changing the naming rules exposes a number of issues so other constructs have not had strict naming rules imposed yet.
It is recommended that the new naming conventions be followed in any case where possible.