ReleaseNotes:Feature Review December 2015
This summary covers Planimate enhancements in 2015, over versions 7.19.1 to 8.39.0.
Version 8 of Planimate introduced a major change of the MDL file format. As a result, pre version 8 models must be converted using a "Roestta Stone" version of Planimate as follows:
- Load your older version model using Planimate 8.0.6 and save it
- Use the latest version 8 Planimate (eg: 8.39.0) to load and work with your model
Other changes are summarised below, for details please refer to the release notes.
Editing & Modelling
- Routine operation renames - PasteFromClipboard is now ImportFromClipboard
- AutoSave now triggers on a windows shutdown
- New "scaled kilo" data display formats.
- Modellers can select to enable column filters in table editors, very useful when setting up complex data tables.
- Views can be deleted during run which is useful for models that build parts of themselves from templates.
- The Model Structure Report can generate a detailed and thorough description of a model, documenting settings, routine code and object flows in a textual format which is much more "diff" friendly than the MDL file. Graphical properties (co-ordinates/colours) are avoidied in this report to enable the focus to be on properties in the model which affect simulation outcome.
- During run, the Table Editor can report dependencies on the entire table and columns.
- During run Pipe context menus give modellers muich more diagnostics.
- A panel option enables change objects with unresolved column references to remain in a model during run, preventing the references generating errors up front. This is useful for template code.
- Extended and optimised column searching with MatchIndexTop(),MatchIndexBottom(),MatchIndexFast() and the very fast MatchMultipleKeys() which greatly outperforms Search().
- Text "Find" now applies to routine line code as well
- Holding SHIFT whilst dragging/resizing an object toggles off the snap drid whilst pressed.
- Routine operation Beep() enables generation of tones with adjustable pitch and length, and tones on repaint can be selected. These are very useful for debugging animation/real time display code where using breakpoints is awkward.
- Modellers can dynamically change portal tool tips
- Graphs have more scale control options including line at zero and separate RHS scale control
- Guide lines are shown when moving/resizing objects
- Multiple graphs on a panel can be associated so their view area and scroll bars are synchroniused and work in unison. Modellers do not need to process the scroll broadcast to achieve this.
- Dials are enhanced with their properties settable via references and a value tip can be shown (useful for slider dials). A number of obsolete dial modes have been removed.
- FindDuplicates() and CompareTables() are useful new table operations.
- The window title can be set dynamically using SetWindowTitle().
- Log driven graphs can send hover broadcasts
- NearestPoint() enables a modeller to retrieve the nearest point or line in a log driven graph
- A set of new routine operations enable files to be read and written. These replace the Change Object/File submenu, giving much more capability and readability.
A plug-in DLL has been developed that enables Planimate to efficiently query and insert data into an SQLite database file. This plug-in has been carefully architected so that Planimate dates and text are properly handled so SQL queries can be bsst used. A key use of this will be to offload heavy data loggingduring run which otherwise requires large amounts of RAM.
- Copy/paste handling in table views has been rewritten to work more transparently for end users with a new mechanism enabling modellers to process paste errors.
- Track line width and spacing can be set dynamically which is useful when the track is being displayed over a zoomable map
- Train length can now be displayed either as a continous "noodle" or a series of linked rectangles representing the individual train cars.
- Options have been added to optimise performance of models that provide their own train controller logic.
- An item's route can be assigned from a column in a table.
- HoldSectionRoad(),SectionRoadAvail(),SetRoadCheckFilter() now support being used with a mmessage item of a train as well of the original train itself.
- Train graphs can be configured to use the number of rows using the highest label index instead of the row count being pre-set.
- ListBlockedTrains() enables the blocked train list to be retrieved.
Graphics & Animation
- Graphic drawing is largely rewritten and highly optimised enabling faster flicker free updates.
- Table/Graph Views can be selected to draw in the "animation layer" which enables high speed continuous redraw of changing data (very useful for data replay).
- Additional options to RepaintObjects() enable it to be used with animation and speed regulation of animation updates.
- Popup panels can be completely transparent using colour keying.
- Rotated text in paint objects is better supported.
- Log Driven Graph mode "point quadrilateral" enables drawing of arbitrary 4 sided shapes. A model has been developed using this to display 3D objects with simple lighting, perspective and hidden surface elimination.
- Routine operations ScaleColor(), SetTransparency() and BlendColors() make it easier to process RGB colours with transparency. This was used in the 3D object demo.
- Cell colours can be set to any RGB colour using SetCellColor().
Planimate DLL Call API
- Calls to DLLs from routine code are now shown and edited using a straiughtforward notation. DLLs can be called anywhere there is a data reference, not just a single operation per routine line.
- New callbacks enable more table reallocation and access/setting of many Planimate table column properties.
A set of new command line options, system attributes and routine operations have enabled an automatic Planimate testing system to be established. This is used to ensure that no unexpected changes to simulator behaviour are introduced as Planimate is enhanced and optimised.
The testing frtamework was a strategic component in the extensive optimisations and rewrites that have made Planimate versioon 8 so much faster and capable than previous versions.
Features Changed, Removed & Deprecated
- The model file structure was extensively optimised. Tables are now saved as bit-perfect binary data with compression. See top of this page on loading older models.
- Object labels are allocated using a "lowest available index" but an option enables the previous allocator method to be used.
- SetLastDataFile() has been renamed to SetLastDatasetFile()
- AppendRow() and AppendColumn() enable a count to be specified. Using this instead of iterating to insert single rows/columns will improve performance.
- As part of the upgrade from version 7 to 8, Change Object / File submenu operations are converted to new routine line operations which perform the equivalent operation.
- Object in-switch/Unblock Order has been removed as it was never used and can be replicated when required using other existing methods.
- Change/Portal Entry/Portal Exit no longer have selectable icons since Planimate chooses them automatically.
- Routine Condition is deprecated and can no longer be edited. Use a routine CASE to set an attribute if this is needed.
Performance & Speed
- Graphics, simulator, object management, label list handling and future event processing were extensively optimised to enable Planimate to handle tens of thousands of objects and tens of thousands of items undergoing delay with performance degrading gracefully as model complexity increased.
- New features for testing and performance profiling.
Windows Update Fix Note
Note that in June 2015, a Windows update created problems for all versions of Planimate. New versions of Planimate 5,6,7 and 8 were released to address this.