Quality & Stability Enhancements in ExtendSim 10
We made a few tweaks in ExtendSim 10 that are important to maintain its quality and stability. Check here for the details.
From ExtendSim 10.0.4 to 10.0.5 • Released on September 6, 2019
Blocks • New and Improved Features
Create (Item library)
Can now generate one item, then wait.
Queue (Item library)
Centralized all calls to dlg_setDialogTabSize(GetCurrentTabName(myBlockNumber())) to setupDialog.
Resource Manager (Item library)
Added new logic to release reassigned resources when the items they are allocated to get renegged from.
Select Item Out (Item library)
When changing how to select the branch or to add branches to the block, the default values set in the block are now more likely to be correct.
Data Import Export (Value library)
Block any attempt to do anything with Excel at end of a simulation run if DLG_AutoImportExport_chk is NOT checked.
Lookup Table (Value library)
Added checking for proper connections to the input depending on whether option Input Value or Time is selected.
Scenario Manager (Value library)
Added more restrictive range checking on a row clicked in DIALOGCLICK case for the scenarios table.
Convey Flow (Rate library)
Added ContentsLastTime_prm to the dialog so you know what time the last content update was done.
Added a Disable quantity checking checkbox. The Convey Flow block accumulates product according to density and attribute value. If the two ways of counting product doesn't match, this block will stop the simulation and give an error message. If the difference is negligible and you would prefer the simulation to continue even with a mismatch, you can use the Disable quantity checking checkbox to disable automatic checking.
Valve and Flow (Rate library)
For debugging purposes. we've added the ability to keep going in recursive mode to be able to follow the recursive loop if debugger code is turned on in the block.
Event Builder (Reliability library)
Added Edit Instances Table and Commit Instance Changes buttons to help users change event cycle instances for all RBD's in the model.
Start Node (Reliability library)
Added three new ways to display the Event Log found on the Results tab of the Start Node block.
Added the ability to change RBD database table names.
Added the ability to add new RBD databases as a way of organizing Reliability data.
Improved and simplified the interface on the Event Cycles tab.
Popups (Utilities library)
Updated Connector Value on ConnectionMake/CONNECTIONBREAK Message Handlers so even if the simulation is off, the connector value can be updated.
Block • Fixes
Create (Item library)
Corrected Array Exceeded Dimensional Bounds error when clicking on prg_dtbl.
Information (Item library)
Fixed Animation so when toggling between Off and On, if simulation is not running, the animation would not turn back on.
Resource Manager (Item library)
Added logic in RMmsg_onShiftSchedule to properly account for status changes of allocated resources that are not residing in Activity blocks when shift changes occur.
When a resource is transitioning to busy and is currently attached to an item in an Activity block, pending status is set to idle.
Resource Pool (Item library)
Fixed a problem with shift status transitions and resources not yet released when the pool goes off-shift and the input connector receives an input to change the resource quantity of the pool.
Select Item Out (Item library)
Corrected the issue that GotItem was not initialized to 0 at beginning of the simulation, then the first call in itemIn could block any item going through.
Convey Flow (Rate library)
When creating the LP constraint, the block should not only consider the flag siConveyorIsFull, but should also look at the effective content of the block. At any given time, the block could be full with an output rate greater than the input rate. The flag for conveyFlowFull is then False, but logic should consider it full; otherwise it's at risk to accept more flow than possible in the block.
Event Monitor (Utilities library)
To get the number of event posting blocks in a model call GetDimension() on the TimeBlocks[] array instead of the TimeArray[] array.
Queue Tools (Utilities library)
Opening a model created prior to ExtendSim 9.3 or ExtendSim 10 would remove data from InitAttribsValue_ttbl. Data needed to be recovered from a model in older version.
Application • New and Improved Features
Context (right-click) Menus
Copy Name puts the name of the (cloned or regular) dialog item onto the clipboard.
Go To Definition in block structure works the same as the Go To Function/Message handler command in the Develop menu. It tries to find the message handler for that dialog item in the code. If it finds it, it switches to the Script tab. If it can't find it, it does nothing.
Open Linked Database Table works for dialog parameters linked to an ExtendSim database.
Menu Commands
Develop > Break to Debugger immediately opens the debugging window if libraries are compiled with debugging code and you are running a model or starting some operation in a block's dialog.
Changed the names of the License commands in the Help menu to make it clearer that these commands only control the licensing, they do not uninstall ExtendSim.
Library > Library Tools > Set Library Version now supports changing versions for multiple libraries.
Database
For database data tables, inactive and active cell selections now show the same.
Added number of records indicator (r:nnn) after table name title.
Improved datatable update speeds when linked to a database table.
Block Structure
The Script tab will remember if you maximized the area by hiding dialog variable names.
Hovering over a Modl function in the Script tab displays a tooltip of the function and its arguments.
Miscellaneous
Added the ability to print a text file.
Popup menus no longer have limits on the maximum number of characters they display.
Added 64bit Add.dll (built in C++), the AddDLL project, and Add.mox files. Updated the DLLAdd block in the ModL Tips library.
More responsive user interface during the simulation run.
Added Abort All Sims button in error messages that come up during a simulation run.
Application • Fixes
Converting Models to ExtendSim 10
Converting a model from ExtendSim 9 that was saved while it was paused could fail.
Fixed many multi-threading issues.
Hierarchical blocks that were in libraries and contained equation blocks, did not convert correctly from ExtendSim 9.
Prevented many types of crashes when reading ExtendSim 9 corrupted models during 9 to 10 model conversion.
Relating to Blocks and Hierarchical Blocks
Default tooltips on hierarchical block connectors were showing zero. They now show the correct value.
The Key in Chart blocks should not clip when Y2 is displayed.
Fixed a problem with narrow popup menus in block dialogs.
Fixed an issue with too many digits in real numbers in data tables by limiting significant figures to 14.
When row and column headers are selected, ExtendSim will now output both even if it's a small selection.
Improved the precision of block profiling in the Real Timer block.
Fixed a crash with Chart blocks that contained functions.
Fixed dialog box buttons so they animate correctly and also send messages when the mouse is released, like in ExtendSim 9.
In a dialog box, during text or parameter editing, the Enter button will just stop editing and will not also close the dialog box.
Disabed popups will no longer respond to the mouse wheel.
Equation block labels will appear in the correct position when using many variables.
Clones were not respecting their disabled status.
Sensitivity was missing inside of hierarchical blocks.
Select All command was missing in scripting windows.
Equation blocks now handle names used both as input and output variables.
Popup menus are now working great when created by InternalPopup() and called from DialogClick.
Cloned datatables are now being updated correctly.
Datatables no longer get time units mixed up with generic time units.
Sped up closing the Editor in equation-based blocks with large equations.
Database
Fixed the inserting of new database table fields before the last entry of a field list.
The Database table now updates when inserting new fields using the DBFieldCreate() function.
Triangular distribution in the database now shows Most Likely instead of Most.
Creating and modifying empirical distributions will be working better.
Relation connections should now be in the correct place.
Database tables now allow zero field width so fields can be hidden.
Some database random distributions were missing needed parameters, such as Location.
Read only fields were allowing checkboxes to change value.
Database percentage format now handles and converts numbers like ExtendSim 9 used to.
Copying data from database tables with a partial selection now can include both row and column headers.
Cloned linked datatables are now updating completely.
Block Structure
Ctrl-F should work even when the script widget is not active in the structure window.
Find Block dialog could crash if opened in the structure window without any models open.
Fixed intermittent issues with Shift Selected Code Right/Left keyboard equivalents.
The Find command is now more responsive in block structure window tabs.
Blocks in models will now more accurately reflect animation changes done in block structure.
Adding or removing connectors in a block's structure will work correctly when reading models in.
Miscellaneous App Fixes
The Zoom value is maintained when switching from Worksheet to Notebook tabs.
Improved how Bump Connect works.
Improved stopping a model run.
Moving a line sometimes moved just a point rather than the whole line, but no longer.
Linked parameters in the Debugger could show the wrong value.
Fixed how some Cancel buttons related to clones caused crashes.
OK and Run buttons were not functioning in the Run Setup dialog.
Error messages during a simulation run were missing the Abort button.
Increased the maximum size of windows so zoom is more effective in seeing larger worksheets.
Fixed crash when quitting with Find Dialog open.
Double-clicking models with periods or spaces in their name will no longer cause a problem.
Message emulation works during FINALCALC message.
Switching tabs in models no longer affects the zoom level.
Functions • New
NotebookItemRect
NotebookItemInfo
NotebookItemInfoString
NotebookItems
DBDatabaseOpenCell
Functions • Improved
DBTableExportData now allows the including of field names in an exported database table.
StringTrim supports a Which value of 3 for trimming all white spaces.
Tag_Color added as a value (24) for column tags.
Tag_Progress added as a value (23) for column tags.
DBTableImportData can also be set to ignore field names in the first row of data.
Functions • Fixes
SelectBlock() and SelectBlock2() were not selecting and not scrolling to selected block.
MakeArray() and MakeArray2() functions were not updating 64-bit pointers in some cases, causing crashes.
DLLMakeProcInstance() and DLLMakeProcInstanceLibrary() would sometimes fail even if called correctly.
DILinkUpdateInfo function could sometimes report the wrong origin block during LINKDATA LINKSTRUCTURE message.
OpenDialogBoxToTabName function will now bring the dialog tab to the front if it is already open.
FindInHierarchy() greatly sped up as this function is used by Resource Pools and other blocks.
getBlockTypeNumeric(), getBlockTypePosition(), and blockName() functions were ignoring hierarchical connector text blocks.
DBFieldMove() function used incorrect field index in some cases.
SelectBlock() and SelectBlock2() were not selecting nor scrolling to selected a block.
Fixed EDSimTimeToDate() function when an input was close to the next whole value.
Fixed functions that convert simulation time to date.
GetModelPath() now returns a correctly formed path in all cases.
ListCopyElement() no longer causes crashes.
Linked list indexing now works for extremely large indexes.
BlockName() now works correctly with named connections or text blocks.
Message Handlers • New
UserMsg10-19
FinalCalc2 is an additional message that is sent to all blocks after FinalCalc completes.
Includes • New
Flow v10.h / Valve.cm (Rate library)
For debugging purpose only: allow to keep going in recursive mode to be able to follow the recursive loop if debugger code is turned on in the block.
ColumnTags v10.h
Added new column tags to the constant list: TAG_PROGRESS_BAR (23); TAG_ECOLOR_PICKER (24).
DBDI DB selection from DI v10.modl
When changing where the database registration needs to be handled, this gives the option to update or remove the existing registrations.
lp_solve v10.h
Improved the error message that failed to ask the user to run the application as an administrator when loading a dll.
Includes • Fixes
To determine that you are in the first Effective Rate propagation, we used to rely on SYSFLOWGLOBALINT25==0. This is not necessarily the case anymore. Now, we are using SysFlowGlobalInt17 to flag the first propagation.
There was a problem when the indicator has a 0 quantity layer as it would not be triggered. Indicators are now triggered properly even for 0 size indicators.
In ExtendSim 10, the animation for direction was not showing properly during a simulation run. Be sure to use z-order to make sure animations show properly with the right layer order.
When copying a block into a new model, the global array siListTCBlocks_GA might not exist causing an error message. First, check if the global array exists and index legit to avoid the error message.
CHART_CONN_VariableInputConn v10.modl (Chart library)
To avoid writing a point twice, this include will check to see if a point has already being written at the start of a simulation.
CHART_CONN_VariableInputConn v10.modl (Chart library)
There was an error in the Scatter Chart at the beginning and ending of a simulation run that instead of writing the point x,y it wrote y,y.
CHART_DATA_Management v10.modl (Chart library)
In a multi-run situation, during initialization from one run to another, data for none run specific trace/Bar was not reset properly.
DBDI DB selection from DI v10.modl
When a Record ID is used in a Field, sometimes the type returned was different than the target Field.
When Table or Field were renamed, we fixed how the name tracking code did not update the block selection properly.
Equation v10.h
Two noValues can be different values.
Setting CMC_OVars_ValuesOld[] AFTER oVars_Values[] has been initialized. Why? Because CMC_OVars_ValuesOld[] is being used to determine if the results from calling an equation to calculate caused a change in the values of the output connectors.
From ExtendSim 10.0.3 to 10.0.4 • Released on March 19, 2019
Blocks • New and Improved Features
Executive (Item library)
The error message gives more information when lpsolve.dll cannot be loaded.
Initializes sysGlobalInt75=0 in ModifyRunParameter for Reliability library.
Reliability library
Blocks now use a static unchangeable number as the database identifier.
Advanced Resource Management (ARM)
Users can execute, during a simulation run, any of the functions that can be manually performed in the Resource Manager block's Resources tab (see the Change Resources table).
Block • Fixes
Item library
Throw Item block • Was not allowing a new item attribute to be selected.
Fixed ARM problem with the execution of resource requirements having "OR" conditions.
Fixed how the Resource Manager's Policies tab displays when changing allocation policy.
Chart library
Changed the default filtering for each trace to "last point" rather than "no duplicate", since that is a more common setting.
Rate module
Fixed a problem where Merge and Diverge blocks could wrongly interpret the propagation of a change in Flow attribute values.
Stops simulation with an error message if model is in a recursive loop (any Rate block calculating more than 150 times at the same clock time).
Merge block • Now properly propagates downstream when upstream attribute value changes.
Application • New and Improved Features
Developed using a newer version of the UI environment (Qt 5.11.3) that has security updates.
3 new functions added: OpenNotebooks2, DBTabGetTableIndexList, DBGetSize.
Opening multiple include files now cascade file locations.
Error message windows default to OK instead of Go To Debugger.
Worksheet windows in Hblocks placed from libraries have better default sizes.
Activation Dialog retains user information between activations.
Increased the maximum scripting line numbers to 99,999.
Added a new substitutionListUser.text which will not get replaced by updates (use this if you have moved a block from one library to another or have renamed the library).
Edit > Options > Misc tab has a new option: Black value connectors to convert Value connectors to solid black.
Added arguments for the EDDateToString function to better accommodate European formats.
Changed Help > Update Activation Key command to Help > Reactivate License.
Dynamic text dialog items can now be resized in the block structure.
Added finalCalc2 message; sent right after finalCalc.
Application • Fixes
Resolved some important memory leaks that should improve performance and prevent out of memory problems.
Block numbers could change during model read in unusual circumstances.
Auto opening structure of uncompiled block wasn't showing dialog tab correctly.
Resolved some issues with empirical distributions in database cells.
Clicking on the database list would sometimes open more than one database.
A database link to a table with a string lookup column tag could fail to draw properly.
Should be impossible to 'drop' an item off the edge of the worksheet.
Block help would sometimes return the text for the wrong block.
I-beam cursor should appear in approximately correct position when an equation reports an error.
Dropping a document on some ExtendSim document windows from the explorer would not always open the document.
Cursor Position window was not always visible in Chart windows.
Switching icon views should hide connectors that are hidden in the structure.
Clone selection works better when using Make Selection Hierarchical command.
Selecting a connector in the icon pane of a hierarchical block structure could sometimes cause a crash.
Fixed possible crash when debugging equations.
Fixed a crash when a model with an open Random Number block was showing the plot.
A ripped-off dialog tab was not accepting cursor actions.
Stopping simulations should happen quicker.
Calling Abort in a PasteBlock message handler will abort the entire paste, not just the block calling Abort.
Cancel button is disabled during a simulation run.
Fixed the Cancel button in block dialogs so it doesn't keep increasing block memory size.
Editing with no changes no longer sends dialog item message to blocks for parameters and edit text.
Hovering over an invisible connector could send the block a ConnectorToolTip message.
Debugger stack could sometimes show the wrong code.
Debugger window position adjusts if outside application frame.
Structural animation object changes should update to existing blocks better.
Animation during endSim and finalCalc should show even with animation turned off.
A new model will now remember its initial size when you switch to a notebook and back.
Dynamic Text dialog:
Disabled Dynamic Text dialog items support copy of all text.
Properties dialog contains correct items.
Added ability to resize dialog items in the block structure.
Obsolete date functions now show block number of calling block in error message.
Continue button in Find Dynamic Links dialog shows correct text.
Clicking the Enter key when editing a parameter or editable text was stopping the editing, closing the dialog, and sending two messages to the block. Now it should just stop the editing and send one message.
Moving and selecting the Signal Key in Chart should be easier.
Fixed EquationCompileDynamic producing a spurious error message in some cases.
StringFindDynamicStartPoint could crash in some cases.
EDStringToDate function has been optimized.
OpenAndSelectDialogItem now selects the specified dialog item better.
CurrentSim should have the correct value when a simulation is aborted.
Dragging a dialog item over a block icon could fail if the worksheet was scrolled.
For consistency with ExtendSim 9:
SendMsgToBlock just returns rather than reporting an error on bad block numbers.
Block sendSimulationMsg flag initialized to true.
FinalCalc/AbortSim messages are now sent correctly when a simulation ends normally or is stopped.
Animation Level object should show maxed out when set to higher than.
FindInHierarchy should no longer fail to find certain blocks.
From ExtendSim 10.0.2 to 10.0.3 • Released on February 11, 2019
Blocks • New and Improved Features
Chart library
Bar Chart • You can now define an angle for the Axis values that is saved in the block code.
Report library
Cost Stats • Added the option only blocks at this level of hierarchy and below.
Rate module
Set(R) • Added checkbox so you can set to Blank all non-used Flow attributes.
Reliability module
Allows multiple RBD databases in one model, so tables can be split between the databases.
Allows copy/pasting of an RBD, automatically copying over all necessary DB information.
RBD’s can now be saved into hierarchical blocks and stored in libraries, carrying forward all DB info.
You can now collapse and expand an RBD.
Blocks • Fixes
Item library
History • Creating a DB table of the History resulted in an extra empty record at the end of the table that caused problems with the Statistics block.
Throw Item • To save memory it now disposes attribPopContents dynamic array when it can be disposed.
Convey Item • Checks that Distance Ratio is not set by 3D, as this option is not available.
Activity • Corrected spelling in UserError message about Preemption checkboxes in OK message handler.
Value library
Lookup table • Block did not work if set to Time and table was not DB linked but used Calendar date.
Lookup table • Fixed compatibility issue between ExtendSim 9 and ExtendSim 10 so that for continuous models setting time and discrete behaves the same as time and stepped, since discrete is meaningless in continuous models.
Chart library
Bar Chart • Some dialogs would not be updated correctly if change setting during the simulation.
Bar Chart • Fixed a problem when 3-connector option is selected and action on how to deal with wrong received values on connectors were not identical (Bar Value and Series or Category values).
Custom plotter trace colors should now convert from ExtendSim 9 correctly.
Report library
Cost Stats • To speed up execution use the ObjectIDNext function instead of looping through all Object ID.
Cost Stats • Fixed that, in the case where options Append New Updates and Update Every xxx are checked, the accumulation of cost would be duplicated.
Reports Manager • Prevents more than one Reports Manager block from being placed in a model.
Rate module
Set(R) • Allow the block to have no Attribute defined in the dialog table.
Application • New and Improved Features
Zooming support using Ctrl + mouse wheel.
More Undo capability for ExtendSim database operations.
New size parameters for ExtendSim database tables and fields, in their Properties dialogs.
New Properties dialog for cloned dialog items.
Editing in a Properties dialog now selects the object being edited.
The Enter Selection command used in Properties dialogs now works with Find command.
Additional control over Bar Chart labels (color, angle, etc.).
Revert Model warning now defaults to OK.
Pausing a model should respond quicker when animation is turned on.
Improved depiction of non-expandable variable connectors in Structure window’s Icon View.
Database list window / library windows interaction improvements.
Improved Shift-click functionality when selecting multiple objects.
Dangling connection lines should work better (extending and connecting).
Go To Definition on right-click in Script window should be working better.
Single block models no longer close when second model opens.
After run ends, Status Bar displays Simulation Setup's End time and Runs.
You can stop the conversion process if you double-clicked a previous release's model file.
Application • Fixes
Control blocks (Slider, Switch, Meter) working better.
Fixed cloning and dialog issues with the Switch dialog item.
Block Help window now closes when the application quits.
ListLastElementIndex function could return the wrong value.
Random seed values in Simulation Setup dialog were sometimes incorrectly treated like real numbers.
Improved Date/Time values in the Simulation Setup dialog for non-English languages.
DELETEBLOCK messages could be sent twice when deleting hierarchical blocks.
COPYBLOCK message was not implemented.
OLDFILEUPDATE message sent more correctly and consistently.
Very large models deal better with Window’s resource limits.
Database copy and paste should maintain indexes better.
DB_RENAMED and TABLE_RENAMED LinkStructure messages now only sent if the name actually changes.
Database checkbox fields could return a value of 2 for True.
Objects being blocked from moving off the edge of the worksheet should work better when scaled.
Dialog Item names in the Structure window were incorrectly reporting a too long error when the name was edited.
IPCOpenFile function could have path issues.
SetVisibilityMonitoring wasn’t working correctly.
BLOCKSELECT and BLOCKUNSELECT not sent during Make Selection Hierarchical.
LinkStructure message handler wasn’t always getting the dialog item name of the dialog item that was changed.
Fixed title of X axis on Chart blocks when they show Date/Time settings.
VMWare® and Parallels® on the Mac had issues when launching 10.0.2.
Fixed spurious errors when running multiple models at the same time.
Prevents Runs (NumSims) in the Simulation Setup from being set to 0.
PlaceTextBlocksInHBlock and placeBlock no longer leave items selected.
Fixed a crash when trying to draw a connection line from one window to another.
Continuing random number sequence now works with database random cells.
The Field_Renamed message was being incorrectly sent when a new field was added to the database.
Two Field_Renamed messages were being sent when the DBFieldRename() function was being called.
NumericParameter function was not displaying the information string passed in.
DBRelationsGetNames function was interpreting the relationship index incorrectly.
Holding the mouse button down while making a connection line was selecting blocks.
Invalid EndTime values in the Simulation Setup dialog will report an error.
openAndSelectDialogItem was opening the dialog, but not selecting parameters.
Corrected problem with European vs USA number notation in Simulation Setup.
Issue with exporting empirical named distributions.
App could sometimes crash if dynamic arrays in block structure were reordered between ExtendSim 9 and ExtendSim 10.
Loading a DLL now reports the Windows error number if it fails.
IPCGetDocName function didn't get file name after IPCOpenFile called with "" name.
Message Handlers • New
HBLOCKFROMLIBRARY2 • Sent immediately after HBLOCKFROMLIBRARY
HBLOCKFROMLIBRARY3 • Sent immediately after HBLOCKFROMLIBRARY2
HBLOCKSAVETOLIBRARYAS • Sent when a hierarchical block is being saved to a library
Functions • New
AnimationPIxelSetEColor
WorksheetSettingGet
WorksheetSettingSet
PlotterValueSet
PlotterValueGet
From ExtendSim 10.0.1 to 10.0.2 • Released on November 13, 2018
Fixes
Resolved issues for cloned dialog items:
fixed ability to delete a clone
clones now default to visible and enabled when created
corrected right-click context for Chart block clones
Added time-only date values to the Line Chart block.
Improved the performance of Sensitivity Analysis and when connecting multiple lines to a single connector.
Fixed potential crash if quickly clicking Enter after making dialog change.
Save command now works if a torn-off Notebook is the active window.
Improved ability to stop simulation run after getting certain error messages, plus removed Debugger button unless in debugging mode.
Added error message if trying to close a model while hierarchical block structure changes are being applied.
Corrected the saved state when using block substitution.
Improved the data table width calculation.
Fixed issues when creating/editing/debugging block structure: checking dialog item names for invalid characters, was crashing if positioning cursor in text box while getting compiler errors or if using copy/paste while using a resize tool in Dialog tab, fixed appending and deleting tabs in multi-tab dialogs and possible crash on close model after debugging.
Fixes to functions: GetDialogNames crashed if called on a non-block, EDCalendarDateGet wasn't working, IconGetView and IconGetViewName now work with hierarchical blocks, UserPrompt returns 0 or 1, AnimationPixelRect default color is now white, repaired StringCase's upper/lower case issue, PlaceBlock was failing when called for a block from a protected library.
From ExtendSim 10.0.0 to 10.0.1 • Released on October 23, 2018
Fixes
Converting certain types of ExtendSim 9 models sometimes caused a crash.
Simulation Setup dialog now properly saves changes when clicking the OK and Run button.
If a model hasn't been saved, the first save is now the same as a Save As.
Trying to open a model that was missing some blocks could sometimes cause a crash.
Improved Animation Text when opening ExtendSim 9 models.
Animation pixel rectangles now initialize to gray when ExtendSim 9 models are converted.
Removed the previous model's name from the File Open dialog when issuing an Open Model command.
New Features
PlotterSignalValueSet and PlotterSignalValueGet now support line thickness.
Clicking Alt+O in the Script tab of a block's structure now opens the Edit > Options > Script window to customize the script appearance