Enhancements & fixesQuality & 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.5 to 10.0.6 • Released on February 11, 2020

Blocks • New and Improved Features

Information (Item library)

bulletgoldAdded area counting.

Resource Pool Release (Item library)

bulletgoldAdded a popup menu and associated logic in passItem to allow users to specify block behavior when passing items have invalid release attribute values specified.

Diverge, Catch, Flow, ThrowFlow, Tank Merge, Interchange (Rate library)

bulletgoldProtected the code in the Rate library including moving some includes to a Not installed folder.

End Node (Reliability library)

bulletgoldAdded the down(CS) output value connector. It is needed for proper communication with the Valve block.

Start Node (Reliability library)

bulletgoldAdded a new table, Results_Tables_ttbl, that supports overlapping event handling for the Node Summary and Event Summary tables and enhances the Results tab user interface.

Added the down(CS) output value connector. It is needed for proper communication with the Valve block.

Histogram (Chart library)

bulletgoldHistogramThe Histogram block displays statistical information, using bars to show the frequency of data sets (series) in successive numerical intervals of equal size (bins).

Scatter Chart (Chart library)

bulletgoldUpdated the dialog for a multi-run trace by removing checkboxes, replacing them with options and a Per Trace For Run column (additional multi run option: all runs, only end values)



Block • Fixes

Create (Item library)

bulletgoldCorrected calls to prgSVT_OnPrg_dtbl().

Executive (Item library)

bulletgoldIf SA_Names_ttbl is out of bounds, it will ignore user clicks.

bulletgoldWhen there is a problem, it will break out of string attribute loop.

bulletgoldThere was a problem with the simulation order being different than 1 in a model where the simulation order is set to Custom. If it happens on openmodel, ExtendSim will change the simulation order to 1. If it happens when simulation starts, ExtendSim will interrupt the run with an error message.

Exit (Item library)

bulletgoldNow allows the pulling of upstream items for the first (currentTime=0) scheduled event by setting diConToPullItemsFrom[i] = True.

Resource Manager (Item library)

bulletgoldForces the total allocation time to be equivalent to the total busy time.

bulletgoldFor now, in RMprc_updatePoolStatusTime, set the total quantity allocation time equal to total busy time.

Resource Pool Release (Item library)

bulletgoldChanged the order in which SetupDialog is called in the DIALOGOPEN message handler.

bulletgoldAdded an ELSE case for setting transaction log table field indices when a table already exists.

Shift (Item library)

bulletgoldMoved the code from openModel to OpenModel2 so all Reliability blocks will need to have their openmodel done before receiving a message from the Shift block.

Throw Item (Item library)

bulletgoldFixed that if a Throw Item block had not been set up yet and you click on its dialog, the animation of the label could be wrongly updated.

bulletgoldFixed the issue where sometimes the Throw Item could not find the Catch Item block and no error message was sent, simply the dialog of the block would open with no explanation. Now the dialog will only open if there has been an error message set before.

Transport (Item library)

bulletgoldFixed the getting flag so it happens after the return.

Unbatch (Item library)

bulletgoldMust check after call to PullItems in On ItemOut message handler to make sure we placed an item on the output connector before sending a response to NEEDS.

Activity, Batch, Catch Item, Convey Item, Equation(I), Get, Queue Equation, Queue, Red(I), Resource Item, Set, Transport, Workstation, Write(I) (Item library)

bulletgoldIf Change item animation using property was selected as the Item animation attribute, is wasn't part of the tracking attribute system. It has now been added to the system so the Executive block can know about it.

Data Import Export (Value library)

bulletgoldCleaned up the call sequence for setting up Excel objects in XL_populateNamedRangesPopup and XL_populateTableNamesPopup.

bulletgoldFixed a problem with named range popup not retaining popup settings by passing g_internalEvent as an argument in the call to DIEmsg_onXL_RangeInputType_POP in the XL_RangeInputType_POP message handler.

bulletgoldReplaced existing GUID for ADO COM DLL so it will work with 64-bit COM DLL.

bulletgoldHid the dialog checkbox for using an embedded object.

bulletgoldAdded a condition in DIE_refreshExternalfieldListTable to ensure that XD_TableName_prm is blank before exiting from the procedure.

Equation (Value library)

bulletgoldoVarsOut_NumCons was being used in a for loop to access table arrays. This was not correct as there will always be at least 1 even if the connector is hidden. Consequently, when dealing with table arrays, oVars_NumTableRows must be used.

Lookup Table (Value library)

bulletgoldIf the time scheduled in a table was the same in 2 consecutive rows, the block would think it was time to repeat the schedule. It has been corrected.

bulletgoldProblem fixed that when DISCRETE_OUTPUT + reset + time to reset + data had an entry for time to reset the row in Data was skipped.

Read & Write (Value library)

bulletgoldIf a whole row is being read whole row, the reference point has to be results_StartCoordinate_prm – not "1";

bulletgoldEmbedded objects are no longer supported in ExtendSim 10.

Scenario Manager (Value library)

bulletgoldAllow row=-1 to accommodate scenario table headers row click events in the DIALOGCLICK message handler.

Equation-Based blocks in the Value library

bulletgoldCorrected RCC Functions.h for equation-based blocks.

Convey Flow (Rate library)

bulletgoldTo avoid a loop, the clock needed to be advanced if lrNextEvent==CurrentTime. In some cases of currenttime if events are very close or very large, if could happen that currentTime==NextTime in it would get into an infinite loop.

bulletgoldFor improved accuracy, fixed an issue where it might not test if next the event is too close to current time.

bulletgoldIt was possible to have a Conveyor content of 0 (due to precision) while still having product in a portion that would ocassionally create loops in a current event. To remedy this problem, when the Tank content is 0, the portions are emptied.

bulletgoldsrLastTime_Calculation needed to be set up as StartTime rather than 0 and it needed to know if a first calculation had already been made or not. Otherwise, a connected block could ask at starttime for the content of the block, but it would get -10 because first calculation had not been done yet and if (srLastTime_Calculation>=CurrentTime) prevented the calculation from happening.

bulletgoldWhen content is calculated for each event, we could be in a situation where the on simulate event would occur before the blockreceive2 message handler. It created an error in the simulation and a case in which the exit layer already emptied without going through blockreceive2.

Valve (Rate library)

bulletgoldCorrected an issue that might occur when pasting a Valve block from one model to an empty model, the String lookup for advance status was not being updated leaving the first column of the advance status empty.

 Start Node (Reliability library)

bulletgoldRemoved the valuesIn connector error checking in StepSize. In the case where a user might be running through different scenarios with the RSM block, event cycles settings may legitimately change for wear, cycles, and schedule.

bulletgoldCorrected an issue that might happen when removing an event cycle by hand via the Event Cycles tab. evtReg ID's where not getting recycled so evtReg ID's were constantly growing.

bulletgoldChanged how occLog and reports are managed across multiple runs because simulation runs were slowing down when occLog got too big.

bulletgoldIn occLog, we changed the ID field to not be a unique record ID field in order to speed things up.

bulletgoldFixed a bug with data management for the event log.

bulletgoldCorrected issues in SD_EventsTbl_BlockNum_Get() and SD_IntsTbl_BlockNum_Get() that were holdovers from when ExtendSim switched from block numbers as ID's to unique integers as ID's.

bulletgoldFixed bugs in RBD_DB_EvtStatusTbl_Init() and EVT_CES_Table_FillOut(). The RBD_DB_FI_EvtStatusTbl_Node field was missing the ID value.

 Component, End Node, & Start Node (Reliability library)

bulletgoldThe around me tables were displaying block numbers instead of Node ID's. This has now been corrected.

 All blocks in the Chart library

bulletgoldThe minimum and maximum for axis is now properly kept in between runs.



Application • New and Improved Features

Block Structure

bulletgoldUpdating hierarchical blocks on open models now has a "Please wait…" dialog so you can see its progress.

bulletgoldRotation of an animation object in the icon view now rotates the animation object on the model.


bulletgoldAllow multiple library blocks to be added to the model via copy/paste from the library window.

bulletgoldOptionally include page numbers when printing.

bulletgoldAdded more information to the Abort Simulation message.



Functions • New

GetModelSimulationOrder() returns the simulation order of the block that called this function.



Application • Fixes

Converting Models to ExtendSim 10

bulletgoldFixed ExtendSim 9 to ExtendSim 10 model and block conversion issues where connectors were added or eliminated in a block.

bulletgoldFixed crashes when converting very large, pre-ExtendSim 10 models.

bulletgoldReading pre-ExtendSim 10 models now correctly converts dynamic arrays of reals correctly.

bulletgoldOld box connectors from older library blocks can now connect to new item connectors when reading in older models.

Relating to Blocks and Hierarchical Blocks

bulletgoldImproved the functionality of scrolling data tables.

bulletgoldEquation debugging error messages now refer to the correct offending blocks.

bulletgoldChart datatables are now updating correctly.

bulletgoldRepaired models that had hierarchical blocks that when the Properties dialog was opened, it would corrupt the hierarchical block.

bulletgoldFixed dialog items showing through to the wrong tab.

bulletgoldAnimation objects created by code were not showing after copy/paste or Make Selection Hierarchical commands. This has now been fixed.

bulletgoldCloning of dialog items now correctly obeys properties dialogs.

bulletgoldClones don't disable dialog items when dialog items are disabled by code.

bulletgoldFixed issue of false message about multiple includes in Equation blocks.


bulletgoldNo longer sends unneeded database data or structure messages to blocks if creating records during importing.

bulletgoldFixed a double-click crash that might happen when there were no tables in the database when in Data View mode.

bulletgoldWhen right-clicking on a table header, don't change the existing database table selection.

bulletgoldUndo now works when creating and deleting database relations

bulletgoldFixed a crash that might occur when opening a database that has some tabs removed.

bulletgoldSelecting from a list of tables field now keeps the field visible.

Block Structure

bulletgoldWhen editing a block's structure, clicks in the Dialog Editor no longer changes dialog items.

bulletgoldModL code to track scrollbars in different tables now works precisely.

bulletgoldDialog item connection to Stat::Fit now updates properly.

bulletgoldRadio button column tags now displays properly.

bulletgoldWhen reducing the number of connectors in a block, models no longer show partial connections.

bulletgoldSelected connectors in the Icon tab are now more visible.

bulletgoldRadio button and checkbox bold styles clear correctly when styles are removed.

Miscellaneous App Fixes

bulletgoldPlayer RunTime version does not allow changes in dialog tables.

bulletgoldFixed problem with animation objects created by code.

bulletgoldEliminated crash when aborting the opening of a hierarchical block worksheet.

bulletgoldFixed some licensing issues that were preventing activation to be completed.

bulletgoldImproved the explanation of licensing error messages to help users complete the licensing step.

bulletgoldCorrected an issue that caused model animation to occasionally travel in reverse.

bulletgoldFixed situations where the model was not set to dirty - changes weren't saved when the model is closed.

bulletgoldNavigators now update correctly when changing models.

bulletgoldMore windows now remember their positions when reopened.

bulletgoldImproved stopping model runs that would continue when the Stop button was pressed or abort functions were called.

bulletgoldThe simulation status bar now reports the correct number of runs if the simulation is stopped or aborted.

bulletgoldFixed simulation message order so it is the same as ExtendSim 9, but with additional message handlers.

bulletgoldSuccessive randomized seeds (seed 0) are now different no matter how closely in time they are created.

bulletgoldPasting a model with an Executive block over another model no longer crashes.

bulletgoldChanged qt.conf file so changing the Windows settings for screen resolution and zooming works better.

bulletgoldAdded more color to improve the visibility of selected text and other objects.

bulletgoldFixed a bug where clicking Help opened the wrong block's Help.

bulletgoldImproved the wording for several error messages and dialogs.

bulletgoldAdded warning, and an option to Open or Cancel, when opening a model that had been created or saved in a newer release

bulletgoldEquation blocks no longer falsely report that include files were being used twice.

bulletgoldBreakpoints window doesn't get lost when switching monitors.

bulletgoldDuring model open, identifies models that have multiple outputs connected using named connections.

bulletgoldNotebook maximum size has been increased so that it can be stretched over multiple monitors.



Functions • Fixes

LastKeyPressed() function now returns correct key.

RunSimulation function now works when being called from outside ExtendSim.

RemoveSignal() now works correctly.

WaitNTicks() is more accurate.

DBRandomDistributionSet() function now uses the useSeed argument to allow changing the seed any time – even during a simulation run.

DBTableCloneToTab() now works correctly whether the Database window is open or not.

CloneGetList now correctly gets all clones if Name argument is blank.

CloneHideDisable now works correctly.



Includes • New

CHART_DATA_Management v10.modl (Chart library)

bulletgoldReplaced the dialog for a multi-run trace: Removed checkboxes and replaced with options per the Trace For Run column.

bulletgoldImproved code: Added a new function which returns if data can be collected by looking at disable recording and window recording options.

bulletgoldImproved scaling: Found a more elegant number for scaling limit.

bulletgoldOption changed: Replaced NoResetOnConsecutiveRuns_chk in Scatter and implemented it in the Histogram with additional options on the Run column.

CHART_CONN_VariableInputConn v10.modl (Chart library)

bulletgoldReplaced the dialog for a multi-run trace: Removed checkboxes and replaced with options per the Trace For Run column.

bulletgoldImproved code: Added a new function which returns if data can be collected by looking at disable recording and window recording options.

bulletgoldOption changed: Replaced NoResetOnConsecutiveRuns_chk in Scatter and implemented it in the Histogram with additional options on the Run column.

CHART_DISPLAY_options v10.modl (Chart library)

bulletgoldImproved scaling: Found a more elegant number for scaling limit.

bulletgoldOption changed: Replaced NoResetOnConsecutiveRuns_chk in Scatter and implemented it in the Histogram with additional options on the Run column.



Includes • Fixes

Flow v10.h & Flow constants v10.h (Rate library)

bulletgoldPropagation starving and/or blocking the Convey Flow block is now treated as a Tank and or an Interchange. Limitation is not necessarily both ways.

bulletgoldCorrected an issue with block/starve propagation in cases where:

• An external message comes to a variable connector x and needs to be sent back to the other branches.

• And in the case where another branch y receives another external message.

The branch x now properly propagates this second message by differentiating cLIMITING_TO when it comes from an Executive block or when it comes from within the block itself.

bulletgoldThe siFlowLP_E list tells which blocks are responsible for blocking/starving the flow. Instead of removing blocks from the list while being treated, they are instead flagged because removing elements of the list caused problems by deleting information that is needed in a future section which limits the flow.

Flow solver LP_Solve v10.h (Rate library)

bulletgoldThe siFlowLP_E list tells which blocks are responsible for blocking/starving the flow. Instead of removing blocks from the list while being treated, they are instead flagged because removing elements of the list caused problems by deleting information that is needed in a future section which limits the flow.

bulletgoldImproved the error message that informs which block is linked to a specific section.

Tank functions v10.h (Rate library)

bulletgoldCorrected an issue with block/starve propagation in cases where:

• An external message comes to a variable connector x and needs to be sent back to the other branches.

• And in the case where another branch y receives another external message.

bulletgoldThe branch x now properly propagates this second message by differentiating cLIMITING_TO when it comes from an Executive block or when it comes from within the block itself.

DBN Start Node v10.h (Reliability library)

bulletgoldFixed a network builder bug where the internal database could get confused if the user deleted a node connection in a complicated network.

RBD DBN Procs.h, RBD Procs v10.h, RBD DB Start Node v10.h, RBD DB Indexes Get v10.h, RBD Procs v10.h, RBD DBN Start Node v10.h, RBD DB Procs v10.h, & RBD Prototypes v10.h (Reliability library)

bulletgoldCorrected an issue in which evtReg was not being updated with the correct start node ID for event cycles associated with components during a copy/paste.

bulletgoldFixed selection of a row in the event cycles table in a component block.

RM functions v10.h (Advanced Resource Management)

bulletgoldTotal allocation time is now forced to be equivalent to total busy time.

RM procedures v10.h (Advanced Resource Management)

bulletgoldFor now, in RMprc_updatePoolStatusTime, set total quantity allocation time equal to total busy time.

CHART_BAR_CONN_DataOptions v10.modl (Chart library)

bulletgoldFixed problem that would sometimes occur when liNewSeriesSize and/or liNewCategoriesSize would remain at -1 (no change), it would cause an error.

CHART_CONN_VariableInputConn v10.modl (Chart library)

bulletgoldCorrected an issue that might occur when a point that was identical to its previous one was put on a chart, it was not writing the extra point. The receiving message flag was not resetting to false and cancelled the recording of points from there forward.

CHART_DATA_Management v10.modl (Chart library)

bulletgoldIf time changed, but liY_ValueHasChanged hadn't, and you selected the last point on the chart, the point would sometimes be ignored as there was some missing code.

CHART_DISPLAY_options v10.modl (Chart library)

bulletgoldScaling is now done during a simulation run only after 2 points have been drawn on the Graph. No scaling of points any earlier as it was too much of a guessing game.

bulletgoldScaling during initsim is done differently if it's a Bar or Line Chart.

CHART_TRACE_CreateAndAddNewPoint v10.modl (Chart library)

bulletgoldThe minimum and maximum for axes is now remembered between runs if necessary.

RPM dialog v10.h (Report library)

bulletgoldBlock names are now filtered by those which have a Results tab when building a list of unique block names in a block filter types table.

Block location utils v10.h

bulletgoldIf error message during open model then it aborted the initialization, abort has to be replaced by return.

CONA_Manage_ConnectorArray v10.modl

bulletgoldChange from an error message if failed function to return -1, it allows more flexibility in the timing of some calls.

RP procedures v10.h

bulletgoldAdded an ELSE case for setting transaction log table field indices when a table already exists.


From ExtendSim 10.0.4 to 10.0.5 • Released on September 6, 2019

Blocks • New and Improved Features

Create (Item library)

bulletgoldCan now generate one item, then wait.

Queue (Item library)

bulletgoldCentralized all calls to dlg_setDialogTabSize(GetCurrentTabName(myBlockNumber())) to setupDialog.

Resource Manager (Item library)

bulletgoldAdded new logic to release reassigned resources when the items they are allocated to get renegged from.

Select Item Out (Item library)

bulletgoldWhen 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)

bulletgoldBlock any attempt to do anything with Excel at end of a simulation run if DLG_AutoImportExport_chk is NOT checked.

Lookup Table (Value library)

bulletgoldAdded checking for proper connections to the input depending on whether option Input Value or Time is selected.

Scenario Manager (Value library)

bulletgoldAdded more restrictive range checking on a row clicked in DIALOGCLICK case for the scenarios table.

Convey Flow (Rate library)

bulletgoldAdded ContentsLastTime_prm to the dialog so you know what time the last content update was done.

bulletgoldAdded 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)

bulletgoldFor 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)

bulletgoldAdded 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)

bulletgoldAdded three new ways to display the Event Log found on the Results tab of the Start Node block.

bulletgoldAdded the ability to change RBD database table names.

bulletgoldAdded the ability to add new RBD databases as a way of organizing Reliability data.

bulletgoldImproved and simplified the interface on the Event Cycles tab.

Popups (Utilities library)

bulletgoldUpdated 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)

bulletgoldCorrected Array Exceeded Dimensional Bounds error when clicking on prg_dtbl.

Information (Item library)

bulletgoldFixed Animation so when toggling between Off and On, if simulation is not running, the animation would not turn back on.

Resource Manager (Item library)

bulletgoldAdded logic in RMmsg_onShiftSchedule to properly account for status changes of allocated resources that are not residing in Activity blocks when shift changes occur.

bulletgoldWhen 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)

bulletgoldFixed 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)

bulletgoldCorrected 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)

bulletgoldWhen 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)

bulletgoldTo 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)

bulletgoldOpening 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

bulletgoldCopy Name puts the name of the (cloned or regular) dialog item onto the clipboard.

bulletgoldGo 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.

bulletgoldOpen Linked Database Table works for dialog parameters linked to an ExtendSim database.

Menu Commands

bulletgoldDevelop > 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.

bulletgoldChanged 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.

bulletgoldLibrary > Library Tools > Set Library Version now supports changing versions for multiple libraries.


bulletgoldFor database data tables, inactive and active cell selections now show the same.

bulletgoldAdded number of records indicator (r:nnn) after table name title.

bulletgoldImproved datatable update speeds when linked to a database table.

Block Structure

bulletgoldThe Script tab will remember if you maximized the area by hiding dialog variable names.

bulletgoldHovering over a Modl function in the Script tab displays a tooltip of the function and its arguments.


bulletgoldAdded the ability to print a text file.

bulletgoldPopup menus no longer have limits on the maximum number of characters they display.

bulletgoldAdded 64bit Add.dll (built in C++), the AddDLL project, and Add.mox files. Updated the DLLAdd block in the ModL Tips library.

bulletgoldMore responsive user interface during the simulation run.

bulletgoldAdded Abort All Sims button in error messages that come up during a simulation run.

Application • Fixes

Converting Models to ExtendSim 10

bulletgoldConverting a model from ExtendSim 9 that was saved while it was paused could fail.

bulletgoldFixed many multi-threading issues.

bulletgoldHierarchical blocks that were in libraries and contained equation blocks, did not convert correctly from ExtendSim 9.

bulletgoldPrevented many types of crashes when reading ExtendSim 9 corrupted models during 9 to 10 model conversion.

Relating to Blocks and Hierarchical Blocks

bulletgoldDefault tooltips on hierarchical block connectors were showing zero. They now show the correct value.

bulletgoldThe Key in Chart blocks should not clip when Y2 is displayed.

bulletgoldFixed a problem with narrow popup menus in block dialogs.

bulletgoldFixed an issue with too many digits in real numbers in data tables by limiting significant figures to 14.

bulletgoldWhen row and column headers are selected, ExtendSim will now output both even if it's a small selection.

bulletgoldImproved the precision of block profiling in the Real Timer block.

bulletgoldFixed a crash with Chart blocks that contained functions.

bulletgoldFixed dialog box buttons so they animate correctly and also send messages when the mouse is released, like in  ExtendSim 9.

bulletgoldIn a dialog box, during text or parameter editing, the Enter button will just stop editing and will not also close the dialog box.

bulletgoldDisabed popups will no longer respond to the mouse wheel.

bulletgoldEquation block labels will appear in the correct position when using many variables.

bulletgoldClones were not respecting their disabled status.

bulletgoldSensitivity was missing inside of hierarchical blocks.

bulletgoldSelect All command was missing in scripting windows.

bulletgoldEquation blocks now handle names used both as input and output variables.

bulletgoldPopup menus are now working great when created by InternalPopup() and called from DialogClick.

bulletgoldCloned datatables are now being updated correctly.

bulletgoldDatatables no longer get time units mixed up with generic time units.

bulletgoldSped up closing the Editor in equation-based blocks with large equations.


bulletgoldFixed the inserting of new database table fields before the last entry of a field list.

bulletgoldThe Database table now updates when inserting new fields using the DBFieldCreate() function.

bulletgoldTriangular distribution in the database now shows Most Likely instead of Most.

bulletgoldCreating and modifying empirical distributions will be working better.

bulletgoldRelation connections should now be in the correct place.

bulletgoldDatabase tables now allow zero field width so fields can be hidden.

bulletgoldSome database random distributions were missing needed parameters, such as Location.

bulletgoldRead only fields were allowing checkboxes to change value.

bulletgoldDatabase percentage format now handles and converts numbers like ExtendSim 9 used to.

bulletgoldCopying data from database tables with a partial selection now can include both row and column headers.

bulletgoldCloned linked datatables are now updating completely.

Block Structure

bulletgoldCtrl-F should work even when the script widget is not active in the structure window.

bulletgoldFind Block dialog could crash if opened in the structure window without any models open.

bulletgoldFixed intermittent issues with Shift Selected Code Right/Left keyboard equivalents.

bulletgoldThe Find command is now more responsive in block structure window tabs.

bulletgoldBlocks in models will now more accurately reflect animation changes done in block structure.

bulletgoldAdding or removing connectors in a block's structure will work correctly when reading models in.

Miscellaneous App Fixes

bulletgoldThe Zoom value is maintained when switching from Worksheet to Notebook tabs.

bulletgoldImproved how Bump Connect works.

bulletgoldImproved stopping a model run.

bulletgoldMoving a line sometimes moved just a point rather than the whole line, but no longer.

bulletgoldLinked parameters in the Debugger could show the wrong value.

bulletgoldFixed how some Cancel buttons related to clones caused crashes.

bulletgoldOK and Run buttons were not functioning in the Run Setup dialog.

bulletgoldError messages during a simulation run were missing the Abort button.

bulletgoldIncreased the maximum size of windows so zoom is more effective in seeing larger worksheets.

bulletgoldFixed crash when quitting with Find Dialog open.

bulletgoldDouble-clicking models with periods or spaces in their name will no longer cause a problem.

bulletgoldMessage emulation works during FINALCALC message.

bulletgoldSwitching tabs in models no longer affects the zoom level.

Functions • New






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


FinalCalc2 is an additional message that is sent to all blocks after FinalCalc completes.

Includes • New

Flow v10.h / Valve.cm (Rate library)

bulletgoldFor 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

bulletgoldAdded new column tags to the constant list: TAG_PROGRESS_BAR (23); TAG_ECOLOR_PICKER (24).

DBDI DB selection from DI v10.modl

bulletgoldWhen changing where the database registration needs to be handled, this gives the option to update or remove the existing registrations.

lp_solve v10.h

bulletgoldImproved 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)

bulletgoldTo 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)

bulletgoldThere 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)

bulletgoldIn 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

bulletgoldWhen a Record ID is used in a Field, sometimes the type returned was different than the target Field.

bulletgoldWhen Table or Field were renamed, we fixed how the name tracking code did not update the block selection properly.

Equation v10.h

bulletgoldTwo noValues can be different values.

bulletgoldSetting 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)

bulletgoldThe error message gives more information when lpsolve.dll cannot be loaded.

bulletgoldInitializes sysGlobalInt75=0 in ModifyRunParameter for Reliability library.

Reliability library

bulletgoldBlocks now use a static unchangeable number as the database identifier.

Advanced Resource Management (ARM)

bulletgoldUsers 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

bulletgoldThrow Item block • Was not allowing a new item attribute to be selected.

bulletgoldFixed ARM problem with the execution of resource requirements having "OR" conditions.

bulletgoldFixed how the Resource Manager's Policies tab displays when changing allocation policy.

Chart library

bulletgoldChanged the default filtering for each trace to "last point" rather than "no duplicate", since that is a more common setting.

Rate module

bulletgoldFixed a problem where Merge and Diverge blocks could wrongly interpret the propagation of a change in Flow attribute values.

bulletgoldStops 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).

bulletgoldMerge 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:

bulletgoldDisabled Dynamic Text dialog items support copy of all text.

bulletgoldProperties dialog contains correct items.

bulletgoldAdded 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:

bulletgoldSendMsgToBlock just returns rather than reporting an error on bad block numbers.

bulletgoldBlock sendSimulationMsg flag initialized to true.

bulletgoldFinalCalc/AbortSim messages are now sent correctly when a simulation ends normally or is stopped.

bulletgoldAnimation Level object should show maxed out when set to higher than.

bulletgoldFindInHierarchy 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

bulletgoldBar Chart • You can now define an angle for the Axis values that is saved in the block code.

Report library

bulletgoldCost Stats • Added the option only blocks at this level of hierarchy and below.

Rate module

bulletgoldSet(R) • Added checkbox so you can set to Blank all non-used Flow attributes.

Reliability module

bulletgoldAllows multiple RBD databases in one model, so tables can be split between the databases.

bulletgoldAllows copy/pasting of an RBD, automatically copying over all necessary DB information.

bulletgoldRBD’s can now be saved into hierarchical blocks and stored in libraries, carrying forward all DB info.

bulletgoldYou can now collapse and expand an RBD.

Blocks • Fixes

Item library

bulletgoldHistory • 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.

bulletgoldThrow Item • To save memory it now disposes attribPopContents dynamic array when it can be disposed.

bulletgoldConvey Item • Checks that Distance Ratio is not set by 3D, as this option is not available.

bulletgoldActivity • Corrected spelling in UserError message about Preemption checkboxes in OK message handler.

Value library

bulletgoldLookup table • Block did not work if set to Time and table was not DB linked but used Calendar date.

bulletgoldLookup 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

bulletgoldBar Chart • Some dialogs would not be updated correctly if change setting during the simulation.

bulletgoldBar 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).

bulletgoldCustom plotter trace colors should now convert from ExtendSim 9 correctly.

Report library

bulletgoldCost Stats • To speed up execution use the ObjectIDNext function instead of looping through all Object ID.

bulletgoldCost Stats • Fixed that, in the case where options Append New Updates and Update Every xxx are checked, the accumulation of cost would be duplicated.

bulletgoldReports Manager • Prevents more than one Reports Manager block from being placed in a model.

Rate module

bulletgoldSet(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



HBLOCKSAVETOLIBRARYAS • Sent when a hierarchical block is being saved to a library

Functions • New






From ExtendSim 10.0.1 to 10.0.2 • Released on November 13, 2018


Resolved issues for cloned dialog items:

bulletgoldfixed ability to delete a clone

bulletgoldclones now default to visible and enabled when created

bulletgoldcorrected 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


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