ReleaseNotes:Planimate 5.35 Release Notes
From Planimate Knowledge Base
- NEW Table column editor has name of table in its title
- FIX Handling of terminate for PL as a DLL improved
- FIX Inconsistency with directory separators between linux and WIndows
- FIX PBA with external key file - no longer test for an "old" keyfile vs. a new EXE since the keyfile is already locked by the application name. Also allow older key type/key names.
- FIX PBA close after initial About Box.
The process of loading the model into the PBA can rearrange PL's font table. This was not anticipated in the About Box as it was a side-effect of its use of off-screen graphics. Just as the about box was being closed, it would revert to a previous "stale" font, causing a close dependent on arbitrary factors.
This has been latent since 5.35g but most likely not noticed as a specific font table rearrangement is needed for it to manifest.
- Following up on 5.35j, Track Train Length handling has been
- enhanced and can now be incorporated into simulation logic as well as
- just for animation of the length of trains on a track network.
- These are notes on the specific features, a demo model will be uploaded
- into the modellers tools area.
- NEW Track sections now have a "Length Mode" option which enables them to be individually configured for one of two modes of operation.
When "Length Mode" is "No" (default), the roads in the section will operate as in previous versions of Planimate, supporting loop delay holds.
When "Length Mode" is "Yes", the new train length capabilities are used instead of loop delays.
In this mode a road will continue to be held by a train when the train leaves that road, until the tail of the train clears the road. In this state, the road is in "Tail Wait", similar to "Loop Hold" except that it is not time based but rather dependent on the speed the train is moving.
Planimate calculates this speed based on the length of the road the front of the train is on, divided by the running time for that road.
Whilst the animation of the tail's motion can be made very smooth (with a low Animation Update Interval setting), Planimate performs the calculation of the time a train's tail will leave a road only when the front of the train enters a road, hence there is minimal event overhead when running without animation.
For Length Mode to work, the Panel option "Show Train Trails" must be on and trains and roads must have lengths and non zero delays. Note that roads not in Length Mode still animate the length of the train without it affecting their behaviour.
You can mix sections in length mode and loop delay mode though this needs care as the two different modes treat track capacity differently.
For roads in Length Mode, if the front of a train is in a portal, its tail continues to be displayed and its item icon is shown on the node portal.
An additional track table column "LengthMode" enables setting the mode of a section when the track network is configured, 0 = Loop Delay Mode, 1 = Train Length Mode
- NEW A multi-server in a track node portal can act as a road for train length purposes.
The "Set/Use Length For Tracks" multiserver option enables editing of a "Length" reference in the multiserver's context menu. With a length set, any train item passing through the multiserver will have this length included in train trail length calculations.
This is very useful for delays at mines, ports and loop delays as it gives the train a place to go spatially and will be visually shown by the train's length gradually disappearing/reappearing as it passes theough the node.
The multiserver must have an actual delay (not zero) and it should not be enabled unless its a track model using train length animation or logic.
This value is re-evaluated dynamically but should not be changed in the middle of a run unless there are no trains at or near the multiserver.
- NEW Clicking on a track during a run-paused shows a menu with information on the roads. You can now select the "Train" item and it will open the item click context menu for that item.
This is particularly useful when a track is being held by an item inside a capacity in a network node.
- NOTE Train length handling separated from item allocation.
An train can now span up to 64 roads and the memory for this is only allocated when:
- train trail properties such as length/colour/width are set - the item first enters a road on a panel with the "Show Train Trails" panel option set - the Item first enters a multiserver with the multiserver option "Set/Use Length For Tracks" set When the length information is allocated, the item click context menu will display extra items: LENGTH :The length of the train TAILCOUNT:The number of roads the train extends over TAIL-EVT :The time a tail-update event is scheduled (only scheduled if a tail will cross onto another road before the front of the train is scheduled to leave the road it is on).
- NEW Log Driven Graphs have a new option "Disable Overlays By Default" which will cause a data overlay to be disabled unless it explicitly exists in a supplied overlay configuration table and it has _enable set to 1.
This simplifies getting a specific overlay without having to know all the other ID's to disable.
- FIX Gantts and Train Graphs now support free text for their text detail column
- FIX Gantt row click popup now supports free text
- FIX Log driven graph text handling supports free text and should be faster
- NOTE Internal rework of track code underway, should not change current behaviour
- (this is an intermediate test release)
- NEW System attribute s.PauseAfterAdvance enables the s.AdvanceToTime advance to be paused. Set before s.AdvanceToTime.
- FIX Fix the system attribute popup when clicking on "System..." on an itme - it was stopping due to some system attributes not being available (eg: s.PipeTableRow). It now just shows 0 for these.
- FIX An s.AdvanceToTime done in a realtime broadcast is now performed at the end of the broadcast.
- FIX Train tail spanning over > 3 roads was not following the roads inbetween. (note internal rework for tracking tail is partially complete)
- FIX An incorrect flag for references in expression mode caused them to be mishandled in the "Replace Reference" operation. Any reference or quoted string would be replaced if an expression or quoted string was the "From" reference, messing up the model.
This has been resolved. Currently expressions are not matched for replacement, only single references/constants, ie: you cannot automatically replace expression "p.attribute + 1" by "p.attribute - 1".
- FIX The Debug Logger would take an inordinate amount of time to update if it was resized when it had a large number of events. This is because the control was auto-sizing its columns so the last column fills the available space, very slow when hundreds of thousands of rows are in the list.
The autosize of the column widths now only occurs if there are less than 10000 rows in the view.
- CHANGE Made location in reference scan list wider and allowed more characters before it gets cropped. The INI setting [Routine] ReferenceOwnerLength enables setting the length before cropping according to your preference and display capabilities, the new default is 160 characters.
- NEW Train Trails This version of Planimate begins to incorporate train length into models, enabling the length of the train (item) and sections to be set. Planimate uses this information to display the entire length of the train as it moves on tracks, apportioning it along the roads the train has recently visited.
The colour and width of the trail can be set item by item.
Currently this is purely an animation feature which does not impact on the simulation, however it will be progressed so the end of the train controls the movement logic, as an alternative to the existing "loop delay" abstraction.
The trail of a train is only shown whilst it is actually on a track, it will disappear when a train dwells inside a portal (loop, mine etc) and reappear when the train leaves it.
Future versions will address this, eg: via new mechanisms to register the contents of a portal for display on its owning panel.
- NEW System attributes: s.ItemLength sets the length of a train (unit should match whatever is used for section) s.ItemTrailColor sets the colour when drawing a train trail s.ItemTrailWidth sets the width of the train trail
- NEW Track Section Table column "Length". If preset, the configuration table will set the length of the section.
- NEW Panel Option (Display): "Show Train Trails" This should be set for a panel containing tracks where you want to display the train's length.
- NEW Track section "Length" setting in context menu. This is provided for diagnostic and testing; lengths should be set by using the Track Section Table.
- NEW Routine operation "ClearTrailList" removes all sections from a train's history, used when displaying its length.
- CHANGE The Model Option "Center Icons On Spatial Links" has been renamed to "Center Icons On Tracks/Spatial Links" and now applies to tracks as well.
- FIX Fault caused when Advance To Time dialog appeared in a model with the "Advance Time Dialog In Main Window" option set, and the model was running in a Planimate DLL
(contained in another C++ or dotNEt application). The Advance Time dialog was using the main window to position itself but this window does not exist when Planimate is running as a DLL.
- FIX Dialog and a number of other internal services which depended on the main window which is not present when Planimate is running as a DLL
- FIX Dynamically hidden objects/links were still responding to clicks
- FIX The clear at start option for attributes, columns and tables now clears to the "run start date" not the "edit date" for data formatted as calendar time.
- FIX Added testing for spatial link time assignment to detect
-ve times. A small negative value (1.0e-5) is clamped to zero without an error message.
- FIX Added testing for spatial link distance assignment to detect
-ve distances. A distance < 1.0e-4 will now trigger an error.
- FIX Added test condition in spatial link code to test against it attempting to schedule a time in the past as a catch-all for distance/time related issues.
- FIX Fixed a buffer overflow when creating a spatial link name from two long object names.
- FIX Added an interlock to prevent the "Advance Time" window being displayed if a model set s.AdvanceToTime during a broadcast but then didn't continue the model (ie: model paused). This would cause the Advance Time window to linger whilst paused.
This does mean PL will not show the "advance" window within a event triggered broadcast which executes a routine which sets s.AdvanceToTime then takes a long time to complete (eg: a big loop), until the engine continues onto processing other events.
- CHANGE Support for externally keyed PBA enabled
5.35g (new file format)
- NEW Tables hover tracking can now send a broadcast. This is selected from the table view context menu and Hover Tracking has to be enabled for the iew.
Hover broadcasts set _row and _col attributes and are also sent for entire row (_col = 0) and entire column (_row = 0) as well as "hover clear" where both _row and _col are zero.
Typically you will want to respond when _row and _col are both > 0
Do not popup windows or change the panel during this broadcast. The broadcast is sent quietly in the background in real time.
Use it to change data which updates quickly or you will end up with a laggy and unresponsive interface.
- CHANGE Reworked the way the About box is handled when Planimate starts a Planimate Based Application (PBA).
If an "About BMP" was selected in the PBA Compiler or there is a BMP called _APPLOGO in the model's DB, then the About box is shown before the main content of the model/PBA is loaded.
This is an important indicator of activity and will help prevent users from launching multiple instances of the PBA as they will now get immediate feedback that it is loading.
- SPEED The "About Box" change exposed that a cache used with DB files during load wasn't active for PBAs.
Rework was required to enable its use when a model is loaded from a DB (as in a PBA) and that model reads other resources from the same DB.
- FIX The RoutineFoldColor property in the platform INI file was not being properly initialised, causing folded lines to be "black on black". It was OK for the inverted colour sets.
- FIX Added row/column indicator to infinite value test for table dates upon model stop
- FIX A restriction which caused viewport windows to be constrained to the size of the desktop area has been eased. This would cause viewports on large scrollable panels to be incomplete when the model was on a system with a lower resolution display.
- CHANGE The viewport option "Open On Double Click" has been renamed and slightly repurposed - it only is active for modellers now.
- CHANGE Change to Pipe Accumulators, Out Accumulator C is now a Decumulator instead, working like In Decumulator C
5.35d (new model version)
- NEW Pipes now support tertiary "C" load/unload accumulator targets. These work similar to the current load/unload accumulators but the additional Load Accumulator is actually a Decumulator which is decremented by the load amount instead of incremented.
The value is not clamped against zero so it can go negative.
These add to the B Accumulators added in 5.34i and enhance the use of pipes when individual levels and aggregate levels are being used concurrently in the supporting model logic.
EG: All pipes in a group can use a common Decumulator to track the total amount that has been loaded by the group.
- FIX It is now possible to interrupt Planimate searching for a path through a complex spatial network (press Esc).
- FIX strchar operation now works for character 1 (= first character)
- FIX Reverting a column title when reverting a column to the main table in a table view with customised columns
- NOTE Further refactoring of Planimate code so support builds under Linux. Most of the changes to PL codebase are to fix inconsistencies picked up by the other compiles.
- NEW "_alignment" label list
- NEW Planimate logs its version number to the logfile. By using "Planimate.exe /debugfile /batch" you can create planimat.dbg which will contain a line like:
"Version 5.35c (4511-655) 32bit"
This will also work with PBA's built with this version onwards.
- CHANGE If editing attribute/cell views with the Edit Order set up (so editing moves from view to view) then a mouse click no longer advances to the next view, only TAB or ENTER.
- CHANGE Behaviour of Cyclic Selection
If editing a cell view using a label list with "cyclic selection" on then PL is more flexible with how it is applied.
If the "Edit With Field" or "Edit With Combo" options are selected, they will now take priority, overriding the cyclic selection and you get the field/combo.
Without these options, you only get cyclic selection if
- its not an "edit down table" or "edit across table" (auto advance) - the view doesn't have an edit order value set In these cases you now get the old-skool label selection popup, just as if cyclic selection wasn't on.
- CHANGE Changed the breakpoiont/error dialog so it has an icon in the taskbar which is useful in returning to the dialog if the modeller has got forced topmost unmoveable popups which could obscure the dialog if selected, causing the user to get stuck.
- CHANGE /FLIPCOLORS (force dark) option reworked and when used it enables a CTRL-SHIFT-K hotkey to toggle back to standard mode
- NOTE PL now builds with the "gcc" compiler as well,
Having the code compile with many compilers helps pick up problems (each compiler has its own nitpicks). Some minor issues were found in this process.
- NEW Debug logger shows formatted value for SetValue log items
- NEW Debug logger handles incremental updates to list. If last line is selected, it will scroll otherwise it stays at current item when new ones added
- NEW Can show debug logger from pause and breakpoint dialog
- NEW Changed debug logger so main window is its owner to stop it getting lost. Will make this controllable in due course.
- FIX The wrong panel was internally logged in FEC events involving an object. This was noticeable when a panel filter was applied
- CHANGE Reduced debug log size to 500k events
- NEW System attribute s.EnableDebugLogger enables model code to open/close the debug logger window. When closed the logged history is deleted.
This reference does not open the window if the user cannot edit the model.
- FIX Clicking beyond the last row in the debug logger would cause PL to close
- FIX Calendar date/times are properly handled for the from/to log times and the event log times when the edit and run start date differ.
- FIX Update display when log cleared
- CHANGED Renamed "View" to "Display" in debug logger
- FIX The LogMessage operation now has very little overhead in a PBA
- FIX Handle resizing logger window, fitting the last column, retain position when logger is closed (with PL session at the moment).
- This version introduces a new tool for debugging (Tools/Show Debug Window).
The Planimate Debug Logger Window enables a developer to record, review,
- search and filter the operation of a model, a powerful tool when developing,
- debugging and becoming acquainted with a model's code.
- It is deeply integrated into the Planimate Engine, taking advantage of the
- model being available for navigation to sources of events.
- Key features of the logger include
- * Selectable logging of a number of key Planimate operations including item movement, broadcasts, messages and value set operations over an adjustable time range
- * Multiple filters can be applied to the display including location, item ID, data object, time range and raw text match of the logged events
- * Keyboard shortcuts for rapid navigation of data including skipping time, FEC event, item movement and text search
- * Efficient - whilst deeply integrated into the PL engine, it has negligible performance impact when not in use and less than 2x reduction in model speed when logging is active. The debugger uses a fixed circular buffer of about 200MB which retains the last One Million logged events
- * Modellers can include their own reports (including data values/text) into the log
- * Extensible for more logging event types - a basic set is currently supported.
- Currently the filters and display modes are accessed using context clicks
- on the lines and the menu bar, still in early stages.
- NEW Routine operation LogMessage(text)
Writes text to the debug logger window and the planimat.dbg file if either enabled. Text can be a text expression including attributes and labels as well as quoted text, combined with the & character
eg: LogMessage("Stockpile at " & p.Location & "overflow")
note that these messages are intended for model development/debugging and should be removed from release models.
- REMOVE Shared routine support has been removed.
Any encountered are reported and removed. Any Change objects using the shared routine will be reported and become "empty".
If you run PL with the /DEBUGFILE command line option, the messages are logged to the planimat.dbg file, which you can get to via the "Show Debug Log" option in the tools menu, which appears when /DEBUGFILE is used.
You might want to use the information reported to find objects using the shared routine in a previous version of PL and use the "Make Local" option in the routine editor before migrating to this version.
Shared routines were mainly used when PL had track loop objects. Removing them makes the platform more efficient and makes it easier to track routine calls in the new debug logger that is being developed.