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.6 to 10.0.7 • Released on November 12, 2020

Blocks • New and Improved Features

Batch (Item library)

bulletgoldCreated procedure Bprc_DynamicDataTable to enable dynamic linking to the batch quantities & attributes input dialog tables.

Executive (Item library)

bulletgoldAdded call to dlg_buildModelBlockConnsTable in BLOCKRECEIVE8.

bulletgoldAdded reference to new ASP include file and replaced calls to dlg* procedures with ASP* procedures in BLOCKRECEIVE8.

Resource Manager (Item library)

bulletgoldAdded new dialog button ExportResourceClasses_BTN in Resources table to manually trigger the creation of the [Resource Classes] table using current content in [Pools], [Resources], and [Groups] tables.

bulletgoldAdded call to RMdlg_enableDisableButton to manage a new button for exporting resource class definitions.

bulletgoldAdded new checkbox ExportResultsToSeparateTbls_chk to the Results tab to support new functionality for breaking out resource results in the [Resources] table to a separate table.

bulletgoldAdded a new dynamic array for use in the validation of resource requirement expressions table content.

bulletgoldAdded new variables and logic to better manage dialog refreshing.

bulletgoldAdded new data structures to more completely capture information for resource change groups.

Resource Pool (Item library)

bulletgoldMoved locally defined constants related to Resource Pool queues and allocation policies into the RP constants v10.h include file.

Throw Item (Item library)

bulletgoldNew implementation: Added an option to set an attribute with my Throw block number.

Merge & Diverge (Rate library)

bulletgoldAdded a warning to prevent the use of sensor blocks or sensing mode in Merge & Diverge blocks.

Component, Distribution Builder, End Node, Event Builder, and Start Node (Rate library)

bulletgoldAdded block Help.

HistogramHistogram (Chart library)

bulletgoldIncreased the maximum number of bins and maximum number of bars.

Line Chart and Scatter Chart (Chart library)

bulletgoldAdded the ability to filter data on schedule in continuous models.

Chart & Report libraries

bulletgoldCleaned up categories for all Chart and Report library blocks and hid them in the Library menu. Hidden Categories with respective Subcategories in the Chart and Report libraries are:

Chart > Bar Charts >
   • Bar Chart
   • Histogram

Chart > Line Charts >
   • DB Line Chart
   • Line Chart
   • Scatter Chart

Report > Information >
   • Item Log Manager
   • Reports Manager

Report > Statistics >
   • Cost Stats
   • DB Statistics
   • Statistics

Template library

bulletgoldEnhanced all hierarchical blocks in the Templates library with updated documentation.

bulletgoldqueue conditionsAdded new hierarchical block to the Templates library… Queue - Empty Based on Conditions that shows how to empty a Queue based on one of two conditions:

• When the Queue block is full.

• When an item has spent a maximum number of units of time in the Queue.

If either of these conditions are present, all items in the Queue will be forced to leave



Block • Fixes

Activity (Item library)

bulletgoldFixed the issue where  the current contents table was getting initialized when it shouldn't have been.

bulletgoldFixed user ability to store preempted remaining delay on the same attribute as the block's main processing delay attribute IF the user has left PEUseDelayAttribchk unchecked.

Create (Item library)

bulletgoldIf startIn is connected and if there's only one row in the schedule, non-zero create time should be allowed if PrgStartInBehaviorpop == FOLLOW_SCHEDULE.

bulletgoldIf prgStartInBehaviorpop = ONEITEMTHEN_WAIT, then the next item generated is a future event not a current event.

Executive (Item library)

bulletgoldRemoved old code which checked for the existence of too many Executive blocks in the model. It's been commented out because it is no longer necessary as ExtendSim now blocks users from adding a second Executive to the model.

History (Item library)

bulletgoldFixed the bug that would occur when siBlockWasScriptCreated was set, the variable would need to be copied in the DialogItem ScriptCreated. The value in the dialog item is used by the Mouse Click include.

bulletgoldIf the History block starts recycling the rows in ItemHistorydtbl, then ExtendSim will start recycling the records that have been written to in ILMMapInfo[].

Information (Item library)

bulletgoldCorrected the issue where the Icon was not animating at the beginning of the simulation.

bulletgoldAdjusted block position because there's a new Sensor connector on the top of the block's icon.

Queue (Item library)

bulletgoldCurrent contents table is no longer getting initialized when it shouldn't.

bulletgoldChanged the name of to CalcCosts to q_CalcCosts in order to accommodate generic costing logic.

Queue Matching (Item library)

bulletgoldCorrected some code in on updateStatistics that failed to check whether or not the block was/was not in Batch mode.

bulletgoldIf a departures list does not exist, don't try to calc ave length.

bulletgoldFixed the "dump group" input as ConnectorToolTipSet was indicating the wrong value.

Queue, Equation and Resource Item (Item library)

bulletgoldCorrected the current contents table from getting initialized when it shouldn't.

Read(I) and Write(I) (Item library)

bulletgoldIf a table is selected, blank out the rest of the coordinates because the new table likely wont have the same schema for field and record settings.

Resource Manager (Item library)

bulletgoldAdded a new dynamic array for use in the validation of resource requirement expressions table content.

bulletgoldAdded new variables and logic to better manage dialog refreshing.

bulletgoldAdded a new variable rMcostPerUsereleasedResources to enable accumulation cost per unit time in for released resources. This is used in calculating resource-based item costs.

bulletgoldAdded the explicit setting FCattribPop in FCInputVariableType_POP.

bulletgoldUpdated the RMprc_changeResourceProperty procedure to allow for resource shifts to be set to NULL/BLANK.

Resource Pool (Item library)

bulletgoldCorrected argument value being passed to update pending capacity value in RPfcn_calcNumberResourcesChanged.

Resource Pool Release (Item library)

bulletgoldAdded costing logic to AR_releaseResources to properly account for time-based resource costs.

Select Item Out (Item library)

bulletgoldWhen the label or attribute to animate is too long, it gets truncated. Stretch the animation object to fit the name.

Transport (Item library)

bulletgoldFixed that some models were getting corrupted and leaving animation objects on the worksheet which needed to be removed.

Write(I) (Item library)

bulletgoldAdded Item Quantity to the list of options for writing item information to the database.

Data Import Export (Value library)

bulletgoldNew code was added to handle fact that OLEObjectIsRegistered() was returning a false positive sometimes.

bulletgoldAdded conditional logic that depends on which type of ADO database is selected in the ADOWhichFilepop message handler. This fixed a problem when a selected ADO database is mySql.

Random Number (Value library)

bulletgoldFor the empirical table, the table was sorted at the beginning of the simulation. If the first column is string attributes, the indexes need to be sorted also.

bulletgoldIf there's a problem in setting a parameter, then abortallsims is needed. Not a simple abort; otherwise it would click in a loop as many times as the number of RunSimulation.

Read and Write (Value library)

bulletgoldThe function XL_OpenFile() is needed to return the workbook path selected by the user.

Convey Flow (Rate library)

bulletgoldIn an if/else statement, an else was missing making the else statement always applied.

bulletgoldFixed the quantity checking.

bulletgoldThere was no checking of the quantity in layers compared to the quantity in the Convey Flow block. The code was written but never executed. We now have quantity checking for attribute layers.

bulletgoldMade sure that the change to the status of the layer from intermediate to exit and also updated the last time update.

bulletgoldIn the case where an intermediate layer was transformed into an entering layer, the last time updated layer needed to be adjusted to currenttime, otherwise the quantity in the layer would be wrong.

bulletgoldAdjusted quantities when precision checking between quantity in block and cumul layer quantities did not add up. Added a warning message if the differences are too big.

bulletgoldThe variable siNoProductAtTheEndOfTheBlock needed to be updated as often as possible, changing the location on where it is updated as it was missing some update which caused the simulation to stop.

bulletgoldFixed the double call to on OpenExec_btn, so there is just one call.

bulletgoldThe first calculation of the content in the block (density and layers) was not updating properly at the beginning of a run. Needed a flag to allow the first calculation.

bulletgoldChecking precision was not enough to prompt the calculation of the amount of product in the tank creating a conflict proper updating of the data in the block (timing problem because rates may not have been updated yet) causing the layer amounts to be wrong.

bulletgoldA second element might be needed if the inflow rate was more than 0 as there might have been a new portion starting to fill up in a now empty Convey Flow block.

bulletgoldIn the case of a change of speed, the outflow rate was not always updating properly. It needed to consider the max output rate with new speed.

bulletgoldWhen checking on contents, if portion content is 0 the other content tolerance could be 1E-5.

bulletgoldWhen calculating portion after change of inflow rate, but at same time of the last change of Rate, if the Convey Flow is full, the model might lose the last portion containing the current inflow density at location 0. This caused some major problems not to having this information available for future calculations.

bulletgoldReviewed sensor logic where the sensor was not being set properly when at the limits.

  History(R) (Rate library)

bulletgoldFixed a bug that when siBlockWasScriptCreated is set, the variable needed to be copied in the DialogItem ScriptCreatedR. The value in the dialog item is used by the Mouse Click include.

Interchange (Rate library)

bulletgoldUsing the same mechanism that is in the Convey Flow block in the Interchange and Tank blocks. Try to avoid sending an update of attributes if the model knows there will be a recalculation of the effective rates. It is always preferable to update Effective Rates before the Attribute values.

bulletgoldWhen circumstances have changed while propagating new rates, an extra LP may have to be solved. (In this case, conditions have changed and no more exit layer is available.)

 Tank (Rate library)

bulletgoldNeed to check that the simulation is running to call a function when ReleaseOnAttriVal+prm is changed otherwise get an error message.

bulletgoldWhen initializing attribute layers, if cINITCONTENTSWITHOUTATTVALUES and an outflow connection is made, avoid allowing 2 empty entering layers.

bulletgoldUsing the same mechanism that is in the Convey Flow block in the Interchange and Tank blocks. Try to avoid sending an update of attributes if the model knows there will be a recalculation of the effective rates. It is always preferable to update Effective Rates before the Attribute values.

bulletgoldWhen circumstances have changed while propagating new rates, an extra LP may have to be solved. (In this case, conditions have changed and no more exit layer is available.)

Valve (Rate library)

bulletgoldIf change option on Executive block, assume the Advanced status option needs to be updated accordingly and not just enabled/disabled.

bulletgoldIf siStartingGoal + diValuesInIsConnected[cVALUESINGOAL] + !FirstGoalFixedchk, check the goal connector. Otherwise there may be differences from one run to another when doing successive runs.

bulletgoldThe reception of a new constraining rate no longer has anything to do with the connection to a goal, if the value changed with Link.

 Component (Reliability library)

bulletgoldNode Interrupt options now only show if the node has more than one event cycle.

bulletgoldThe name stored in the ID - Component Name field in the Component Set table needed to be altered.

bulletgoldIn models with many fail modes, calling RBDDBNEventsReg_GetEvents() in OpenModel2 slows the model as it does a sort on the event cycle names.

 Component & Start Node (Reliability library)

bulletgoldFixed SDEventsTblttbl and SDIntsTblfrm row indexes now start at 1.

 Distribution Builder (Reliability library)

bulletgoldTime units in distributions table are now getting updated properly in PreCheckData.

bulletgoldWhen opening the Distribution Builder dialog, by default it show the contents of the first record.

bulletgoldAfter committing, be open to more Link Alert messages.

bulletgoldWhen the number of records in the commit table becomes large, closing the commit table prior to committing speeds things up a lot.

 End Node (Reliability library)

bulletgoldSet EndNodeNameShowAboveIconchk = TRUE by default.

 Event Builder (Reliability library)

bulletgoldFound a problem with the ability of the Start Node and Component blocks to effectively open the Event Builder block remotely to the correct event cycle when the user clicks on one of the Edit Class buttons in the Event Cycles table.

bulletgoldAfter committing, be open to more Link Alert messages.

bulletgoldIn models with many fail modes, calling RBDDBNEventsReg_GetEvents() in OpenModel2 slows the model as it does a sort on the event cycle names.

bulletgoldWhen the number of records in the commit table becomes large, closing the commit table prior to committing speeds things up a lot.

 Start Node (Reliability library)

bulletgoldNo longer reporting the node name in the event log in the wrong format.

bulletgoldFor now, hide SDIntsTbl dialog items.

bulletgoldIf NoValue at allowRepair input, don't treat it as an error condition. There may be times when the input connector is actually a no value. Instead treat a no value as permission to repair. If the user wants to actively stop the repair, they will have to set the connector to FALSE.

bulletgoldOnly show Node Interrupt options if the node has more than one event cycle

bulletgoldChanged the name of Event Status table to Event Cycle Instances.

bulletgoldIn models with many fail modes, calling RBDDBNEventsReg_GetEvents() in OpenModel2 slows the model as it does a sort on the event cycle names.

bulletgoldThere were problems with the values at the valuesIn input connector getting updated properly at the beginning of the run.

 Buttons (Utilities library)

bulletgoldFixed an issue with copy/pasting equation code from one editor window to another editor window.



Application • New and Improved Features


bulletgoldUsing a new version of QT - 5.14.

bulletgoldSwitch control now toggles when clicked, making it much easier to change the state of the switch from off to on and vice versa.

bulletgoldAdded Find Me button to all dialogs so user can find where owning block resides.



Application • Fixes

Converting Models to ExtendSim 10

bulletgoldFix ExtendSim 9 arrow connection settings: always go from output to input when converting to  ExtendSim 10.

bulletgoldExtendSim 9 plotters with a visible Key were not showing the Legend in ExtendSim 10.

bulletgoldConverting an older library was crashing when converting a block with no connectors, like the default ExtendSim 9 structure block.

Relating to Blocks and Hierarchical Blocks

bulletgoldChanging the connection type now works properly in hierarchical blocks' submodel or structure.

bulletgoldHierarchical block tabs are now the correct gray color and the tab border is visible.

bulletgoldBlock numbers and simulation order numbers are now visible even if animation objects or connections cover them.

bulletgoldInvalid block dates are now shown stating they are invalid.


bulletgold Corrected the issue that some random distributions (e.g. Triangular) would lose the last parameter value in some cases.

bulletgoldOpening a database table will no longer make the model "unsaved".

bulletgoldFixed WhichDTCellClicked() function which would sometimes return the wrong cell.

bulletgoldDBDatabaseCopy() function now copies to the correct destination all the time.

bulletgoldCorrected the placement of popup selectors to be centered in a dialog box.

bulletgoldFixed issue when creating relations sometimes didn't work and had to be redone.

bulletgoldOpening pre-ExtendSim 10 models sometimes caused some database table windows to be invisible.

bulletgoldUsing a database table to define random seeds now works correctly.

bulletgoldDBTableExportData() now works correctly while multiple models are running.

bulletgoldInserting and/or deleting a field into a database table viewer now always works.

bulletgoldDatabase field columntags now display all records starting at the first record.

bulletgoldDate and time fields or column tags now allow editing of both the date and the time sections.

bulletgoldDate and time cells can now be selected without opening their editor.

bulletgoldCopying and pasting of dates from Excel will give all sections of time.

Block Structure

bulletgoldNow remembers which line number was used last in the goto line command.

bulletgoldConnectors used a hidden cyan color incorrectly in some cases.

bulletgoldIf the script pane is ripped off, the go to definition command now works.

bulletgoldCreating new connectors in a hierarchical block's structure will no longer create incorrectly sized connector text blocks.

bulletgoldFixed the opening of the dialog editor and icon views that would set the scrollbar values too high, displaying an empty window.

bulletgoldCheckboxes and Radiobuttons now have the correct colors in dialogs.

bulletgoldDragging objects to left edge of a structure dialog window now works correctly.

bulletgoldConnectors now show input/output status by using the correct connector image.

Miscellaneous App Fixes

bulletgoldSlider clone will no longer move behind blocks.

bulletgoldSlider now works properly during a simulation run.

bulletgoldUndoing a move operation didn't always undo to the old position.

bulletgoldApplication allows optional opening of newer models and newer libraries with warnings.

bulletgoldModels and libraries can be opened in ExtendSim 10.0.6.

bulletgoldFixed the prevention of deleting or pasting of blocks during a simulation run.

bulletgoldAdded type of connector to connector properties dialog.

bulletgoldMoved Find Dialog down and left as it covered the ExtendSim close box.

bulletgoldAdded an option to make value connectors black.

bulletgoldCloned datatables now allow editing.

bulletgoldProblems with stopping running models resolved.

bulletgoldChild field popups now work in linked and cloned datatables.

bulletgoldCopy and Paste now works with cloned datatables in Notebooks and in hierarchical blocks' worksheets and Notebooks.

bulletgoldSwedish keyboards now work correctly with the ALT GR key and square bracket keys.

bulletgoldAdded missing block numbers in messages that are involved with stopping a running model.

bulletgoldClones in hierarchical blocks now update to the latest values when the hierarchical block is opened.

bulletgoldMissing Go to Debugger button always present if block has aborted a simulation run.

bulletgoldYou can now call RunSimulation() from a cloned datatable button columntag cell without crashing.

bulletgoldMore problems with the stopping of running models resolved.

bulletgoldEquation editor fast click timing issue is no longer occasionally corrupting equations.

bulletgoldBad duplicate connections from rapid copy/paste commands are prevented and now get repaired when opening previous ExtendSim 10 models.

bulletgoldDatatable read-only links disabled using Link button to change to a different link.

bulletgoldAdded error messages when trying to change data in a datatable read-only link.

bulletgoldExtendSim can now launch when installed on a different drive (e.g. D drive).

bulletgoldA worksheet and its scrollbars now automatically increase or decrease in size as a model changes size.

bulletgoldLarge selection copy/paste is more reliable for huge models.

bulletgoldSlider arrow keys now work and give higher resolution than using the thumb to change outputs.

bulletgoldShow Object IDs and Show Simulation Order commands now show their block numbers clearly above all other elements in the worksheet.

bulletgoldFixed the issue where Data Table clones had the incorrect row height, chopping off the bottom of numbers.

bulletgoldHistogram (Chart library) no longer crashes when changing the number of bins.

bulletgoldThe File menu now shows the Save command even if the worksheet is torn off.

bulletgoldASP version only: Server Connected window will show up if the ASP version gets a connection. This code should be disabled until finished.

bulletgoldIf a connector array is collapsed, it now correctly calculates the block's area. Fixes RBD problem with connecting blocks.

bulletgoldDialog parameters now show the number using the existing width of the parameter.

bulletgoldSlider now uses arrow keys to change its value by 1% or 10%.

bulletgoldEditing datatable entries now show full numeric precision while editing.

bulletgoldThe formatting of numbers now looks at the height of a cell or parameter to calculate the correct font size.

bulletgoldRight-clicking a Popup button do not send messages to the block.

bulletgoldWhen changing simulation time units or parameters, a DIALOGOPEN message is now sent to open blocks.

bulletgoldDialog Text Frame now gets created with a larger size so it is easily resized and  keeps its size when dragged in a structure window.

bulletgoldAlign Left command now won't crash when finding an empty object.

bulletgoldAdded more block information to OLE/COM error messages.

bulletgoldClones can now be deleted during a simulation run.

bulletgoldMultiple clones now update correctly.

bulletgoldNamed connections can now be edited even if they are connected to an output.

bulletgoldWhen editing datatables or parameters, the correct font is now used.

bulletgoldWhen opening models, block substitution now recovers correctly if the user accidentally didn't choose a block.

bulletgoldUser messages now handle carriage returns correctly.

bulletgoldCloned datatables can now be deleted.

bulletgoldOnline Help now works correctly for all blocks.

bulletgoldPlotter clones now keep their size when dragged.

bulletgoldLeft over created animation objects now get cleaned up while opening model.

bulletgoldBlocks no longer jump when clicked on after clicking on another application.

bulletgoldNew model endTime is no longer 10, but 1000 like the Simulation Setup value.

bulletgoldAutoscrolling now works with either an object being dragged or the cursor selecting a hidden area outside the view.

bulletgoldHaving a block's Properties dialog open and behind the worksheet no longer causes a crash.

bulletgoldCloned datatables now have a grow table icon.

bulletgoldCorrected the issue where animation would sometimes progress in the wrong order on certain connections.

bulletgoldPlotter error messages no longer prevent the placement of a new Optimizer block on a model.

bulletgoldYou can now delete clones while the model is running.

bulletgoldDragging a clone to a block now works even if you drag the clone to an animation object.

bulletgoldNewly created animation objects, which have their bounds undefined, now have their original bounds set to their new bounds..

bulletgoldLinking a datatable to a database or global array would sometimes change the linked values when selected in the datatable..



Functions • New

String DIGetName(long blockNum, integer dialogID) returns the dialog item name from the item's dialogID.

Integer LibrariesOpen(StringDynamicArrayName) returns the list of library names in the String dynamic array.

String LibraryUsed(integer blockNum, data02Ptr blockData) returns the name of the library that owns blockNum.

Enhanced getDialogItemInfo() to allow a "which" of 11 which returns the item's dialog tab number.



Functions & Messages • Fixes

RemoveSignal() no longer crashes when removing too many signals and it now removes the trace.

In some rare cases, the ResumeSim message was not being sent when the model resumed. This has now been fixed.

FindBlock functions on longer find textblocks when looking for block labels.

DuplicateBlock() no longer crashes.

A BLOCKCLICK message now gets sent when mouse button is released.

Right-clicking on a block no longer incorrectly generates a BLOCKCLICK message.

Calling SetRunParameter() to change a random seed now works immediately even if it's during a run instead of waiting for the next run.

SetDialogVariable() no longer incorrectly changes the row 0 cell in a dialog table when changing a different cell.

RemoveSignal() now works properly even if the plot is closed.

LocalToGlobal2() now works correctly for non-block objects.

FormatString() no longer crashes if a returned string ends up longer than 255 characters.

The CreateHBlock() function now asks for a name only if the name argument is blank.

ExtendDateDiffDate() doesn't crash for any dates.

GetBlockTypePosition() no longer includes connectors or labels and returns the same values as in ExtendSim 9.



Includes • New

RBD Procs v10.h (Reliability library)

bulletgoldAdded block Help.

AR constants v10.h (Advanced Resource Management)

bulletgoldAdded the new constant AR_RANK_FIELDNAME which is used in the Resource Requirement Expressions table.

RM constants v10.h (Advanced Resource Management)


bulletgoldAdded c_ExportResourceClasses_BTN_name and c_ExportResReqExpressions_BTN_name constants.

bulletgoldUpdated c_SRRD_numArguments_i from 10 to 11.

RM database v10.h (Advanced Resource Management)

bulletgoldAdded a new function RMdBprc_deleteBlockingResourcesDBs to delete blocking resources database from model.

bulletgoldCreated a new procedure RMdBprc_exportPoolResourceResults to export Pool and Resource table results to separate tables.

bulletgoldCreated a new function RMdBfcn_validateExpressionGroups to validate resource requirement expressions table use to auto-generate ARM requirements.

bulletgoldAdded new field to specify the associated filtering condition when creating RRexpressionGroups in RMdBprc_createRRexpressionGroups procedure.

bulletgoldRelocated the procedure deleteGroupFromDatabase from the Resource Manager block to this include and renamed it RMdbPrc_deleteGroupFromDatabase.

bulletgoldAdded a new argument autogenerateName to the procedure RMdBprc_saveQuantityExpressionData to specify whether to automatically generate names for quantity expressions.

RM dialog v10.h (Advanced Resource Management)

bulletgoldAdded a new procedure RMdlg_enableDisableButton.

RM functions v10.h (Advanced Resource Management)

bulletgoldAdded logic to assign previously reassigned resources to a higher priority item in RMfcn_doesResHavequantityToAllocate.

bulletgoldAdded a qualifier in RMfcn_serviceWaitingOrder for reassigned resources to filtering condition for checking whether to service the resource order.

bulletgoldAdded new logic in RMfcn_checkResourceReassignment to accommodate resource reassignment from one resource order that already has reassigned resources to another.

bulletgoldUpdated RMfcn_isResourceQEblocker to include "reassigned" resources as blockers.

bulletgoldCreated new function RMfcn_getRREexpressionGroupRec used for auto-generating resources.

bulletgoldAdded new argument to RMfcn_createNewFilteringCondition to allow for the specification and lookup of the filtering condition name.

bulletgoldAdded new logic to reduce overhead from string searches in RMfcn_executeResourceChange.

bulletgoldAdded crecordIndexChangePropertyName to support enhancement to dynamic resource change functions.

RM message handlers v10.h (Advanced Resource Management)

bulletgoldRestructed the code for the query for AR_GETBLOCKINGREQUIREMENTRESOURCES_ACTIONTYPE in BLOCKRECEIVE7 to get a list of resources blocking a resource requirement from being satisfied.

bulletgoldAdded a new call in RMmsg_onTabSwitch to RMdlg_enableDisableButton to manage a new button for exporting the [Resource Classes] table.

bulletgoldSet the new checkbox ExportResultsToSeparateTbls_chk to True in the CREATEBLOCK message handler.

bulletgoldChanged a parameter in the call to RMfcn_addResources to force auto-generated resource names to be distinct in the RMprc_addResourceClasses procedure.

bulletgoldCreated a new procedure RMprc_deleteBlockingResourcesTables() to delete the tables created during a simulation run in the blocking resources database.

bulletgoldAdded error checking for property specifications and sequences when auto-generating resource requirements in RMprc_setupResReqExpressionData.

bulletgoldDo not update pending status of resource if it is already in Reassigned state in RMprc_respondToResourceStatusChange(integer resourceRecord.

RM procedures v10.h (Advanced Resource Management)

bulletgoldNew logic added to RMprc_SchedServiceWaitOrdersEvent to prevent rescheduling events for blocks that have already been scheduled.

bulletgoldNew logic added to reduce string-based searches in RMprcexecuteResourceChanges and RMprcchangeResourceProperty.

bulletgoldEliminated call to RMprcrequestRRdependenciesUpdate in RMprcexecuteResourceChanges and moved it to procedure RMprc_changeResourceProperty to update only the immediately affected resources to to reduce unnecessary overhead when making dynamic resource changes.

CHART_CONN_VariableInputConn v10.modl (Chart library)

bulletgoldAdded the ability to filter data on schedule in continuous models.

bulletgoldCorrected a mistake in naming of a function - should be CONA_OnConArrayChangedComplete instead of CONA_OnConArrayChangedCompleted.

CHART_DATA_Management v10.modl & CHART_DATA_Management v10.h (Chart library)

bulletgoldAdded the ability to filter data on schedule in continuous models.

bulletgoldChanged behavior: When Last point selected, it is now filtering out the new data when Y is not changing, but time is changing. It applies no duplicate after Last point filtering. It makes sense because otherwise cases with a lot more points than necessary might slow down simulation.

bulletgoldImprovement: The Histogram has now the option in multi-run Only end values like the Scatter.

CHART_DB_ValuesFromDB v10.modl (Chart library)

bulletgoldIncreased the maximum number of bins. Also the number of bins can be equal or lower, not strictly lower than max.

CHART_HIST_BIN_DataOptions v10.modl (Chart library)

bulletgoldAdded more details to error messages about the setting of the bins in the Histogram.

bulletgoldThe minimum axis should be the one set in the block if it is not supposed to be calculated.

bulletgoldLifted the restriction that bins had to be constructed at least once within the first run. It turns out that's too restrictive of a condition when gathering data across multiple runs.

bulletgoldBins only being constructed during the first run is too restrictive. This condition has been lifted.

CHART_HIST_CONN_DataOptions v10.modl (Chart library)

bulletgoldImprovement: The Histogram has now the option in multi-run Only end values like the Scatter.

bulletgoldIf draw Histogram is not during a simulation (with button) scaling should happen if scaling is only at end of simulation.

ColumnTags v10.h, Constants v10.h, & Link Info v10.h

bulletgoldAdded a #Define COLUMN_TAGS_CONSTANTS_INCLUDE to identify the presence of the declared include in the block.

CONA_Manage_ConnectorArray v10.modl, CONA_Manage_ConnectorArray v10.mox, & CONA_Manage_ConnectorArray v10.h

bulletgoldCorrected a mistake in naming of a function - should be CONA_OnConArrayChangedComplete instead of CONA_OnConArrayChangedCompleted.

bulletgoldAdded a constructor for the variable connector declared per position with each position linked to a different parameter.

bulletgoldAdded a constructor to reset data within includes before calling any other constructor.

bulletgoldAdded the use of new include: Miscellaneous general tools

bulletgoldAdded a public function to gather the connected block# of a given connector.

Constants v10.h

bulletgoldGetDialogItemInfo with which==11 returns the position of the tab the dialog item is in (starts at 0).

bulletgoldAdded new costing constants.

DBDI DB selection from DI v10.h & DBDI DB selection from DI v10.h.modl

bulletgoldTo avoid having to declare the necessary includes in the main, do it conditionally within the include.

bulletgoldAdded a separate function to clear info before constructors. It is useful when constructors can be called from multiple includes.

bulletgoldImproved code: New DBDI_onLinkContentWithIndexes allows the use of parameters as inputs.

Dialog utilities v10.h

bulletgoldAdded a variable value field to the table created by dlg_buildModelDialogVarsTable.



Includes • Fixes

Diverge Merge v10.h (Rate library)

bulletgoldAdded a warning to prevent the use of Sensor blocks or sensing mode in Merge & Diverge blocks. Otherwise, it is slow, adds a lot of complexity, and is inaccurate most of the time.

Flow.h (Rate library)

bulletgoldIn some cases, individual blocks could be set to update at each step even if the global option in the Executive is set "as necessary". Checking is now more thorough.

bulletgoldAccording to the Executive global rule, the value of UpdateEachStep_chk needs to be changed in blocks.

Tank and Attribute v10.h (Rate library)

bulletgoldIn case the exiting layer does not exist (cOUTFLOW_FROM_ATT_VAL), it is possible that a new entering layer can make the exiting layer possible to select as the exit authorization needed to be updated.

bulletgoldWith the option cOUTFLOW_FROM_ATT_VAL, the search for the right exiting layer now works properly as it was using the wrong static variable to point to the Flow Attribute interrupting the simulation.

bulletgoldWhen initializing Attribute Layers, if cINIT_CONTENTS_WITHOUT_ATT_VALUES and an outflow connection is made, avoid ending up with 2 empty entering layers.

bulletgoldWhen a new layer becomes the entering layer, it is possible that this layer was neither cLAYER_S_INTERMEDIATE nor cLAYER_S_EXITING but is already set to entering. The if condition needed to be tightened to take this case into consideration.

bulletgoldIf a previous entering layer is empty, do not remove the layer when updating the quantity in the layer, do it right after the calculation.

bulletgoldWhen a candidate for the Exit layer is found, the first liLowerIDElement found was not set properly. This caused the Exit element to also not be set properly. This has now been fixed.

bulletgoldWhen a new value is received for the Attribute Value to exit the Tank block, when layers are updated, do not remove the empty layers.

Tank functions v10.h (Rate library)

bulletgoldAnimation bug fix: If animate level and capacity is infinite, the animation was wrong. It has now been hidden anyway because there wass no way to show a level if capacity is infinite (level is a percentage of capacity).

bulletgoldA message could attempt to send a value connector during InitSim causing the simulation to abort. Test to be sure you're in Initsim before sending the message.

bulletgoldWhen initializing Attribute Layers, if cINIT_CONTENTS_WITHOUT_ATT_VALUES and an outflow connection is made, avoid ending up with 2 empty entering layers.

bulletgoldUse the same mechanism as in the Convey Flow, Interchange, and Tank blocks. Try to avoid sending an update of attributes if you know there will be a recalculation of the Effective Rates. It is always preferable to update Effective Rates before the Attribute values.

DBN End Node v10.h, DBN Node v10.h, DBN Start Node v10.h, DBN v10.h, DBN v10.h, Dist v10.h, Distribution Builder.cm, & RBD Procs v10.h (Reliability library)

bulletgoldFor icon ID animation, changed " - " (space dash space) to "-" (no space dash no space).

EB Procs (Reliability library)

bulletgoldAfter committing, be open to more Link Alert messages.

EVT Procs (Reliability library)

bulletgoldOnly show Node Interrupt options if the node has more than one event cycle.

bulletgoldChanged the meaning of ISDAttribEciIDpop from ECC.

RBD DB Component & RBD DB Start Node v10.h (Reliability library)

bulletgoldThe name stored in the ID - Component Name field in the Component Set table needed to be altered.

RBD DB ECI v10.h (Reliability library)

bulletgoldCorrected the problems with the values at the valuesIn input connector getting updated properly at the beginning of the run.

RBD DB Start Node v10.h (Reliability library)

bulletgoldCorrected formatting for SDEventsTblNodeBlockName_txt.

bulletgoldRedesigned the Event Status table. It is now called Event Cycle Instances and has different fields and p-c relationships.

bulletgoldAdded an availability field to RBDDBRsltsEventSumTbltxt.

bulletgoldIf running, only package data at the end of the last run.

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

bulletgoldWhen the number of records in the commit table becomes large, closing the commit table prior to committing speeds things up a lot.

RBD DBN Procs v10.h (Reliability library)

bulletgoldRBDDBNEvtReg_EventsList[] was getting sorted by blockNum instead of compID. This has now been corrected.

RBD DBN Start Node v10.h (Reliability library)

bulletgoldA row must be selected before attempting to set block icon view in the subsequent call to SDEventsTblBlockNum_Get(topRow).

RBD Procs v10.h (Reliability library)

bulletgoldSD_EventsTbl_NodeBlockName_txt was getting assigned a name to it that contained spaces which was causing an incorrect evaluation of it.

bulletgoldColumn headings in SD_EventsTbl_ttbl are now conditional.

bulletgoldConditional popup heading when adding a new event cycle instance for the Node-DE Interrupt.

bulletgoldAdded block Help.

bulletgoldDon't ever set evtReg to "N/A" because it has no meaning during the simulation run. Rather set to "ignore" and conditionally build the events table to show "N/A" when there's only one ECI.

bulletgoldSDEventsTblttbl and SDIntsTblfrm row indexes should start at 1.

bulletgoldFor now, hide SDIntsTbl dialog items.

bulletgoldSDEventsTblNodeBlockName_txt was getting assigned a name to it that contained spaces which was causing an incorrect evaluation of it. This has now been corrected.

bulletgoldOnly show Node Interrupt options if the node has more than one event cycle.

bulletgoldA row must be selected before attempting to set block icon view in the subsequent call to SDEventsTblBlockNum_Get(topRow).

bulletgoldDon't ever set a schedule or shift event to N/A because those two always ignore interrupts.

RM database v10.h (Advanced Resource Management)

bulletgoldAdded a check for "Expression Group ID" in RMdBfcn_validateRREproperties().

bulletgoldCreated a new procedure RMdBprc_updateFieldProperties to update field properties in Pools and Resources tables.

RM dialog v10.h (Advanced Resource Management)

bulletgoldAdded the new procedure RMdlg_initializeFCpopups() to standardize the initialization of filtering condition popups.

bulletgoldAdded error checking for filtering condition popup variables that forces initialization if popup values are out-of-range.

bulletgoldAdded a call to RMdlg_populatePropertiesSourcesPopup in RMdlg_populateListOptionsPopup.

bulletgoldAdded a call in RMdlg_refreshDialogVariables(string tabName) to setDialogVariable to force the initialization of the ResourceGroup_POP popup.

bulletgoldCreated a new initialization procedure RMdlg_initializeMaxTextWidth to initialize maxTextWidth array. Added a call to this procedure before making calls to Dlg_setTableDisplayDimensions.

bulletgoldAdded a new procedure RMdlg_initDialogRefreshVars to initialize refresh management data structures.

bulletgoldAdded a call to RMdlg_hideUnusedDialogVariables() in the procedure RMdlg_setDialogVarsVisibilityInTab.

RM functions v10.h (Advanced Resource Management)

bulletgoldModified RMfcn_checkResourceReassignment to get the resource order ID from the resource's current value in the [Resources] table in.

bulletgoldAdded logic to accumulate cost per unit time in the new variable rM_costPerUse_releasedResources for released resources.

bulletgoldAdded a condition in the function RMfcn_getNumFCsInGroup to check to ensure the requirement expression property is equal to the quantity property.

bulletgoldAdded logic in RMfcn_executeQuantityExpression for testing results of quantity expression to depend on whether a procedure was executed from dialog.

bulletgoldAdded logic in RMfcn_executeQuantityExpression to prevent allocating less than minimum allocation quantity specified for the resource.

bulletgoldFixed the uninitialized variable problem in RMfcn_createNewFilteringCondition.

bulletgoldAdded explicit setting of count-based Resource Pool fields in RMfcn_addResourcePool.

RM message handlers v10.h (Advanced Resource Management)

bulletgoldInitialized refresh management data structures with a new call to RMdlg_initDialogRefreshVars().

bulletgoldAdded setting of SysGlobal29 to rM_costPerUse_releasedResources to support resource-based item costs when releasing resources.

bulletgoldAdded a call to RMdlg_hideUnusedDialogVariables() in the RMmsg_onTabSwitch() procedure.

bulletgoldChanged the timing of when RMdlg_setDialogVariableLabels is called in RMmsg_onTabSwitch().

bulletgoldFixed the constant used to control sizing of checkbox titles in RMmsg_onTabSwitch.

RM procedures v10.h (Advanced Resource Management)

bulletgoldFixed the logic in RMprc_changeResourceProperty to check if the property being changed dynamically during a simulation run is a custom resource property.

bulletgoldCleared the reference to child resource order when releasing a resource order in RMprc_releaseResourceOrder(integer resourceOrderRecord).

bulletgoldAdded loop terminating condition when searching for matching property values in RMprc_setupResReqExpressionData(real i_arguments_ptr, real r_arguments_ptr, real s_arguments_ptr).

bulletgoldAdded code to set the rank value of a resource requirement in the RMprc_autogenResourceReqs procedure.

bulletgoldInitialized the static variable rM_costPerUse_releasedResources in RMprc_ReleaseResources procedure.

bulletgoldAdded a condition in RMprc_autoGenerateResources that the RRE table must have records in it.

bulletgoldUpdated the RMprc_changeResourceProperty procedure to allow for resource shifts to be set to NULL/BLANK.

RP procedures v10.h (Resource Pool)

bulletgoldFixed error message outputs in RPprc_validateTotalResourcesCount.

bulletgoldFixed accounting for pending capacity changes including converting pendingCapacityChange from integer to real.

bulletgoldUpdated the user error message in RPprc_updateStaticVariableValue.

CHARTBARCONN_DataOptions v10.modl (Chart library)

bulletgoldUpdated the width of the columns after a possible change of name for categories or series.

CHARTBARCHARTCreateAndAddNewPoint v10.modl (Chart library)

bulletgoldWhen creating the Histogram, the default bins were not set in a proper order: Bin# 0, 3, 4, 1, 2 instead of Bin# 0, 1, 2, 3, 4.

CHARTBARCHARTCreateAndAddNewPoint v10.modl & CHARTBARCHARTCreateAndAddNewPoint v10.h (Chart library)

bulletgoldWhen increasing the maximum for categories in the Histogram, the existing blocks would not have their max changed because it is set in createblock. Made a change in oldfileUpdate updating existing Histograms.

CHARTDATAManagement v10.modl & CHARTDATAManagement v10.h (Chart library)

bulletgoldFixed problem with the cCHARTDATAFILTERNODUPLICATE filter, it did not properly filter data for Scatter and Line charts for filter Y when identical to X.

CHARTHISTBIN_DataOptions v10.modl (Chart library)

bulletgoldFixed problem where the maximum is fixed and not being taken into account when creating bins, but the maximum value received was taken into consideration instead.

bulletgoldIncreased the maximum number of bins. Also the number of bins can be equal or lower, not strictly lower than the maximum.

CHARTHISTCONN_DataOptions v10.modl (Chart library)

bulletgoldIf setup recording during the simulation, the resize of the table might not be enough causing an error message. This has been corrected.

bulletgoldIn multi-run, the Histogram from one run to another would not reset the bar values properly because of a confusion between passing an argument series instead of bar. This has been fixed.

bulletgoldThe wrong column was being used to set negative reset values in cCHART_HIST_SERIES_I_ONLY_ONE_RUN_NUM and not cCHART_HIST_SERIES_I_SCHEDULE_ROW.

bulletgoldThe option cCHART_HIST_UPDATE_AT_END_SIM now works properly.

CONAManageConnectorArray v10.modl, CONAManageConnectorArray v10.mox, CONAManageConnectorArray v10.modl, & CONAManageConnectorArray v10.h

bulletgoldIn CONA_TrueIfConnected, it was returning an error code of 0 instead of the -1 expected.

DBDI DB selection from DI v10.modl

bulletgoldIf the database table was not selected, the dialog text was not disabled. Now Record ID is disabled if no table has been selected or the selected table has no ID field.

bulletgoldIn function call DBDI_RemoveDBSelectionUpTo, the dialog values were not erased, only the internal data within the include. The dialog has to be blank also.

bulletgoldIn case the record selected had modified its ID name, the ID name was not always updating in the dialog. Needed to update the value if necessary and not skip validation.

bulletgoldIn the case where a database table or field is being selected and the index is the same, it needs to check that the name is still up to date before returning and changing nothing. There was an issue when name DB/Table/Field would change and not be valid anymore, but not being updated either.

bulletgoldTo avoid looping in LinkContent and LinkStructureNone initialize values for flag .

Equations v10.h

bulletgoldCall GetSimulateMsgs(TRUE) if model is continuous.

bulletgoldChanged the UserError wording for describing when the equation cannot find the specified include file.

bulletgoldEnhanced the search for prototypes in users' include files.

bulletgoldFixed a bug with tracking the right Link Alert input variable name.

lp_solve v10.h

bulletgoldChanged the error message as it needed to be shorter since it was getting truncated.

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