Each updated release of ExtendSim 10 contains enhancements and fixes to maintain and improve its quality and stability. This is the complete list of changes in each release.
From ExtendSim 10.1.0 to 10.1.1 • Released on March 2, 2024
Application
- Updated Software License Agreement to indicate ExtendSim is now part of the ANDRITZ Inc. portfolio.
- All copyright statements within the app and blocks refer to ANDRITZ Inc. ownership.
From ExtendSim 10.0.9 to 10.1.0 • Released on August 11, 2023
Application • New and Improved Features
- New global variable sysSimOrderBlockNum.
- Block dialogs and the database viewer open and refresh faster.
- Sped up the importing of large text files.
- Model Developer Edition (i.e. the "full" version) now recognizes and can open RunTime libraries (.lbrrt).
- When copying a number shown in scientific format, the copy now has the number with all its precision and not just what the scientific format displays.
- Show Reserved Database is now disabled in the Analysis RunTime (ART) product so model developers can hide information in a reserved database.
- New keyboard shortcuts for 3 and 5 pixel line thickness.
- Removed the upper limit on how much data can be routed via setdatabasetable.
Application • Fixes
Model fixes
- Ctrl-Z has been fixed when applied to “Moving multiple blocks on worksheet while pressing the Ctrl key”.
- Fixed the issue that when trying to delete blocks while the waitNticks function call is getting executed, the model would crash within a few instances of deletion.
- All blocks in models are now getting the AbortSim
- When protecting or converting a library to RunTime, the original protected library is no longer being compiled, as was the case prior to release 10.
- Fix DLL call: Substituting a C# DLL ("Add.DLL" from the AddDLLCSharp-Binary-Src-006 unblocked/Binary folder) then restarting ExtendSim as instructed in the Help without entering the name of a target DLL before trying to add, ExtendSim would crash. Entering the name dll as the target, you’d instead get a -1 error as a result of adding.
- The Model Developer Edition of ExtendSim now recognizes libraries with the .lbrrt
- The Library Open window now supports the opening of a .lbrrt type library.
- Corrected a disappearing block structure issue that might occur when opening the structure of a block, then using Ctrl-S to save the block structure.
- ExtendSim will no longer crash if an uncompiled block is added to the model.
- Fixed a crash that might occur when substituting a block with an uncompiled block.
- When substituting a block, the substituted block might appear at a different scale (smaller) than the normal block coming from a library.
- Fixed an issue that might occur when trying to open the application and QT dll error messages would prevent the app from opening.
- Cloned checkbox has been corrected when the checkbox value is changed by script in OpenModel. Previously, updates on the clones were called upon the codeblock that calls the API. Now, it is done over the dialog item like it should be.
- Corrected the issue that when changing a checkbox by script, if the dialog of the block was closed, the clone was not being updated.
- When copying and pasting a block and one of its clones, 2 clones would be pasted instead of one.
- Scientific format: When copying a number shown in scientific format, it now copies the number with all its precision and not only what the scientific format displays. For large numbers, scientific notation is used when displaying. However, the value is kept in memory to prevent loss of precision. When the user activates the field to type or copy the value, the scientific notation has been replaced with its exact value.
- Scientific format in End Time or Start Time is not displayed unless there are at least 12 digits.
- Zooming with the mouse wheel now is focused on cursor location and can be done continuously. If both mouse wheel movements are less that 200ms apart, the zoom is directed at the same point as before, which will save us from a "zoom creep" where zoom is not predictable and the model moves upwards.
- Zooming in was enlarging items by 25%, but zooming out was doing the opposite by 25%. Zooming once in and out would end up scaling nearly 94% of the original size. Now zooming out is scaled up to 20%, and the same action will result 100%.
- Holding the ctrl key down and then moving the mouse-wheel allows you to zoom in and out on your model. However, when you did this, the model focus used to start creeping downwards.
- Crash with block structure open: If you were to put a block already in debug mode on the worksheet, open the structure of that block, right-click on the block from the worksheet and execute the command Remove Breakpoints and Debugging Code, ExtendSim crashes. Now a warning pop-up denies that action.
- Sometimes when an ExtendSim 9 model was being opened in ExtendSim 10 (with 10 being open on a secondary monitor), the dialog box of some blocks would be totally off screen – essentially the window was lost. Or when double-clicking on a block icon, the dialog box would not be visible.
- Some windows (Hblock, DialogBox, Database tables...) would sometimes open off screen. The only way to retrieve the windows would be to call Window > Cascade or Tile. This has been fixed.
- The Menu Bar X, Y coordinates were not updating when moving an object using arrow keys.
- Some icons on Open Model were shifted. Draw object was off relative to connectors and animation objects. It was a recent break which was fixed before any release.
- Corrected the double message in the HelpButton message handler.
- Fixed the issue that a model could list two identical elements in the debugger stack.
- Debugger stack missing elements: There was a line of code in the Calc() function of the Display Value block that could trigger a Link Alert in an Equation block. The problem was that line of code was not showing up on the debugger's stack.
- Corrected an issue with the ModL Debugger Stack where the breakpoint was off by one line and the stack would remove some information.
- Fixed block jump on click. Steps that would cause the jump: Open a model, scroll right a little, have a different app open next to ExtendSim. Click back and forth in the external app then click on an ExtendSim block (one after the other), eventually one of the blocks would jump (typically would happen after about 10 back and forth clicks).
- The QT logo was showing on block structure instead of ExtendSim logo. This has been fixed.
- When Pause at beginning of simulation is on, after the initial pause the run button would allow the model to resume and not do a step by step.
- PauseSimulation and ResumeSim behavior has been fixed when editing a dialog during a simulation run.
- Fixed a state where a model would pause even if it was not running. This would prevent the model being able to run unless the model was closed then opened again.
- Duplicating a block in a library, then removing a block from a library would not update in the library menu. It could cause an ExtendSim crash if trying to place a non-existent block from the non-updated library popup menu.
- In the Find Object window when Open Hblocks was checked, blocks that were not Hblocks were being opened as well.
- Fixed a bug where there was a crash when using the Find Dialog
- When more than one model was open, there was a bug preventing the ability to change the number of runs in either of the models.
- Various menu commands have now been disabled when a model is running (e.g., most of the library menu commands, Save Model, Revert, Run Simulation, Create Hblock, etc.)
- When a model has text draw objects, it would do an unnecessary string search right before closing the model. That search is now bypassed and models with text objects close faster.
- Added new keyboard shortcuts for connection line thickness:
- 3 pixels • Ctrl + shift + W
- 5 pixels • Ctrl + shift + L
- Duplicating a block using a right-click command is now a prevented action when a model is running.
- Find Object now unselects blocks before selecting new blocks on a worksheet.
Database fixes
- Loading DB Tables improved. DB tables now only load for the currently selected tab. Lazy-rendering of database tabs ensure non-active tabs are not rendered until they are activated. This results an improvement in the pop-up of the window.
- Fixed DBDataSetAsString() and DBDataSetAsNumber() as they would occasionally fail.
- DB Viewer tables are now hiding properly. In some cases, despite all the boxes to Show Table being unchecked, some tables would still be visible.
- Fixed unique DB field problems:
- In a DB table with a unique field, ExtendSim will not allow multiple cells to have an empty value.
- When clearing data from a table with a unique field property then pasting multiple times, the unique field will now remain blank.
- Significantly increased DB viewing load time. Certain databases were taking too long to load (in the 10 minutes range) and were then very difficult to handle. This problem has been solved.
- For the Database Viewer in Schema View:
- Remembering the location of the DB table from the last time the model was saved has been fixed.
- Show All / Hide All DB table was working only for the table in view when the command was sent. Now it works even if scrolling after the command.
- When dragging a DB table off screen, the table was disappearing before being ending up being completely off screen. This is now corrected.
- Secondary tabs would go from the desired subset of tables to the entire list of tables if the Clean up button was clicked twice then a table was moved on the worksheet.
- When opening a model, tables that are to be shown are now displayed properly.
- Fixed parent/child connection rendering.
- If a cloned table in a secondary tab has a parent/child connection with a non-cloned table, double-clicking on the table’s label prompts a window asking if you want to add the table to the list of tables in order to expand. If the answer is no, the action is aborted.
- When selecting one table which is positioned in the upper left corner, the table’s labels linked to the fields are now showing properly.
Hierarchical block fixes
- Immediately after creating a connector in an Hblock, the connector value was not being propagated and you’d need to close and open the model to get it working. This has been fixed.
- ExtendSim will no longer crash If trying to create a new Hblock in a model while another model is running.
- In an Hblock’s structure, if there were changes made to the Hblock connectors, the model with existing Hblock connections could became unstable and eventually generate a crash. It has been fixed.
- Improved the look of connector objects on Hblock worksheets. The red border should adjust to the size of the connector name and there was a large empty space between the name and the bottom border that needed to be adjusted closer.
- Stopped models from crashing/corrupting when saving an Hblock in a library but choosing Discard instead of Save when closing the Hblock structure.
Fixes to Functions & Message Handlers
- When ExtendSim tried to open a port that was already in use, a ModL function called ServerOpenPort()was causing an error and subsequent crash of ExtendSim. This has been fixed.
- Sped up the importing of large text files.
- Fixed a problem when DBTableImportData() was called to import into a table that has a record ID field.
- A call to the ModL function DTPaneFixed() in a Read block from the Value library would crash ExtendSim during OpenModel.
- GetDialogVariable, GetStaticVariable or GetVariableNumeric: PointerType is now working properly with the APIs.
- DBDataSetAsNumberReserved() was failing to write the value to the database. Previously, unique values were reserved for denying future insertions of the same value. However, when they are removed, they still were kept as reserved. The fix prevents that.
- DynamicDataTable2 API: Dialog table information was being shown as inaccurate as there was a problem with the dimension of the array.
- GetMouseXActiveWindow and GetMouseYActiveWindow are now providing accurate answers.
- Problem fixed with GetMouseXActiveWindow and GetMouseYActiveWindow when they were being called in the ConnectionClick message handler. The API was returning 0.
- Fixed a problem with GetMouseXActiveWindow() and GetMouseYActiveWindow() while holding a key down. If you were to hold a key down on the keyboard, then call GetMouseXActiveWindow() and GetMouseYActiveWindow(), the first time would work properly, but the second time would give the wrong mouse position. The position would be wrong only if you held a key down the entire time.
- SetDialogItemEColor() is now working properly with Blank Ecolor.
- Fixed crash when calling SetDialogVariable, SetDialogVariableNoMsg, GetDialogVariable, GetVariableNumeric, or SetVariableNumeric when the call was done to/from a disposed dynamic array.
- The ModL function AnimationShow() now works properly in CreateBlock.
- If SetIndexedConValue2 is called during open model, ExtendSim now presents an error message to choose whether to abort or continue opening the model.
- Fixed a right-click connect crash when connecting to the Record Message
- The GetExtendSimVersion API returns 1010 for its version number.
- COM - Execute - DBTableImportData was broken in 10.0.9 and is now fixed.
- COM - Poke to a data table has now been fixed.
- COM - Request from a data table has now been fixed.
- DBRecordPopupSelector() now returns the correct value of 0 on Cancel.
- Fixed a problem with the sequence of calls involving the ResumeSim message handler when a dialog is changed during a simulation.
- Removed the upper limit on how much data can be routed via setdatabasetable.
- Fixed a problem with PauseSimulation that would occur when editing a data table cell during a simulation run as the ResumeSimulation message handler was not sent properly.
- When a simulation is paused, the call to the resumeSim message handler was delayed when a button, checkbox, or radio button of a popup menu were being clicked on.
- Fixed MenuCommand(5) as it was not working properly when a model was opened (Save Model).
Blocks • New and Improved Features
Chart blocks have a Graph Properties window to set properties of each graph. One of these properties is a checkbox to show or hide cursor values. It had been set to true by default.
Data Import Export (Value library)
- Added a checkbox to close the worksheet after automatically importing or exporting to Excel.
Resource Pool Release (Item library)
- The release name no longer shows if the animation object is an empty string, avoiding a white rectangle on the icon of the block.
Convey Flow (Rate library)
- Improved the Convey Flow block by avoiding repetitive writing in drNextEvent even if the value does not change.
Convey Flow, Interchange, & Tank (Rate library)
- Improved these blocks by adding if a user remotely changes the value of ContentsLastTime_prm to currentSim, the content of product in that block is forced to be recalculated.
Interchange (Rate library)
- When an Item is released, the item attributes from the Flow attribute are now uses the average value from layers (weighted by quantity).
- Improved error messages and allows the ability to change setting on the fly.
Meter (Utilities library)
- Rewrote Checking Min and Max so the Meter is far more efficient.
Blocks • Fixes
Activity (Item library)
Fixed the error that under the following conditions the Activity block could lose track of what its capacity should be:
- the activity's capacity is controlled by a shift
- the model run is aborted
- at the time of aborting, the shift was set to false or zero
- activity does not receive an AbortSim
When these conditions would happen, the Activity's capacity improperly gets set to zero permanently. Solution: Use the saveCapacity static to store the user's manually input capacity.
Batch (Item library)
- Fixed TotalInBatch to be accurate at the time checkFullBatch() gets called.
Convey Item (Item library)
- Found and corrected an uninitialized variable.
- Block now calls UpdatePositions() in ChangeSpeedDuringSimulation().
Equation (Item library)
- The Cancel button was messing up the static memory of the block. If a user made a change to the input or output variables of an Equation block and then clicked Cancel, the block would end up in a corrupted state.
Executive (Item library)
- Found and corrected an uninitialized variable.
- sysGlobalInt88 = the current block number in the TimeBlocks[] array is now being used in the DA and SM blocks for freeze detection.
- Precision issue aligned in lrSecondMember2 where a negative number that is not close enough to 0 would stop the simulation. The model will now ignore it and continue.
- The content of FSA_Names_ttbl now puts values in its correct column when the dialog is open. Also, corrected an issue with the setting FSA_Names_DA where it would go in the wrong column.
Resource Pool Resource (Item library)
- The animation of the name released is now updated when selecting a new name.
Select Item Out (Item library)
- Items were getting blocked upstream of the Select Item Out block as selectIn was not responding to a change to the selectIn connector when TopSelect_prm != 0. selectIn was not being translated to a connector number using
- Fixed the Select Item Out block to prevent it from crashing ExtendSim.
Scenario Manager (Value library)
- Changed wording from ASP to Cloud.
Throw Value (Value library)
- If the Throw Value block was connected to an Executive block, it would receive a ValueIn message during OpenModel.
Change Units (Rate library)
- The cumulative amount of product inflow and outflow adds up to the correct number.
Convey Flow (Rate library)
- The Convey Flow block now more precisely calculates currentTime, preventing nextTime to calculate prior to it.
- calculatedContent and desiredContent are now compared with only 6-digit precision instead of 7.
- Cumulative inflow and outflow are more precisely adjusted to be in sync to prevent the disappearance of too much product.
- Fixed a bug that if a sensor calculation is timed just before a full event, there was a chance the sensor event might cause the Convey Flow block to fill up making product disappear.
- To update Sensor, the next event calculation was not considering when the accumulating point would grow. Some events were not being scheduled properly to account for the change of density at some sensors.
- Abort inserted to prevent an infinite loop bug.
- No longer divides by 0 as it will first check if the number is 0 before attempting to divide.
- Even if an event has already been created with Interval or another mechanism, the next event will need to reevaluate sensors.
- In accumulation mode, when the accumulation starts, the density at the exit of the conveyor should be infinite, but a portion size 0 infinite does not exist. If a sensor is placed exactly at the exit of the conveyor, then it needs to return max density to relay the beginning of the accumulation.
Convey Flow, Interchange, & Tank (Rate library)
- Because of the call to UpdateTheCurrentRowInTheIntervalTable, these blocks were fixed so the call to RATE_HOLD_OnInitSim will happen before DoInitSim_TK to avoid an issue with uninitialized variables.
Interchange (Rate library)
- The Interchange is now registered as a block that uses item attributes. This will allow the Executive block to list the Interchange block if it uses item attributes.
- Updated the size of siLayerLLIndex to avoid the possibility of liTotalLayers changing within the while loop creating an abort of the simulation (out of bound).
- If the block has inflow and outflow connected to an empty Interchange block, there could be a unique empty Exit layer that should just be replaced by an Enter and Exit layer when a new item enters. Otherwise, there would be both a new Enter and older Exit layer which could have caused the simulation to be interrupted in some cases.
- In case one exiting item is created by layer, the value output connectors for content and Num items must be updated after each item is released even if all happens at the same simulation time.
- When an item departs and gets flow attribute information, identical layers are merged only if the option to do so is set.
Tank & Interchange (Rate library)
- If a new capacity is set while a new set of effective rates is being propagated, a problem could arise where the effective rates are not compatible with the new capacity (example capacity set to 0 and Rates are filling the tank). If a new rate is about to be calculated by the block, then we can ignore the error message generated as long as a new rate calculation is about to be generated.
Valve (Rate library)
- The Valve block now checks to see if AnimationStatus is called while opening the model; otherwise, GAs are missing because the simulation is not running.
Event Builder (Reliability library)
- Now supports the removal of all Event Cycle Instances from the model.
Bar Chart (Chart library)
- Bar Chart now properly saves the newly selected color for an axis title or label.
Meter (Utilities library)
- CheckIfMinMaxAreValid now returns a value at the end of the function.
Slider (Utilities library)
- Mousing to change a Slider block’s value properly selects the maximum or minimum.
- Fixed the Slider when Max and Min where overlapping. When maximum and the slider level were identical, the numbers would overlap and be hard to read. We right-justified the Maximum and Minimum numbers that appear on the Slider dialog object to correct this.
Includes • New and Improved
Rate library
Flow constants v10.h
- When an item is released, the item attributes from the flow attribute are the average value from layers (weighted by quantity).
Flow v10.h
- Instead of using GAGetReal multiple times, a local variable is set.
Tank functions v10.h
- Added block name and block number to its error message.
Reliability library
RBD Procs v10.h
- When clicking on SD_IntsTbl_SelectedEvent_pop and nothing happens, the error message has been improved.
- If SD_EventsTbl_NodeBlockName_txt is set to "an individual node", then make sure SD_IntsTbl_Filter_pop = SD_INTS_TBL_FILTER_INTRA so a good, informative error message appears when clicking on SD_IntsTbl_Filter_pop and numEvents < 2.
Chart library
CHART_TRACE_CreateAndAddNewPoint v10.modl & CHART_TRACE_CreateAndAddNewPoint v10.h
- Two procedures have been created to update Min max on the axis from Min max on traces.
- diCHART_TRACE_PointsSizeProperties used to be called in openModel before the creation of the Distributed Analysis functionality in ExtendSim. The code has been improved to be able to open models made after 10.1.0 in 10.0.9 or earlier. The number of columns should not blankly change but be renamed "unused" and a new DA declared later in the code. We do not guarantee backwards compatibility, but if we can make it happen, we do not block it.
Includes for multiple libraries
Dialog Utilities v10.h (Chart & Utilities libraries)
- DBDI DB selection from DI v10.modl - Small change to avoid a line of code which was not necessary.
- DBDI DB selection from DI v10.modl - If a reserved database is allowed, then we do not "pre-enter" the only available database by default if only one database can be selected.
- DBDI DB selection from DI v10.modl & DBDI DB selection from DI v10.h - When wanting to remove a DB selection, it checks to ensure there is not only one DB selectable because if it is the case, but the next time you open a dialog the only possible DB will be selected by default.
- DBDI DB selection from DI v10.modl & DBDI DB selection from DI v10.h - Added a function to ask what dialog color to apply.
Includes • Fixes
Item library
RP Message Handlers v10.h
- The exit condition from a while-loop no longer hits a boundary condition.
RM procedures v10.h & RM procedures v10.h(ARM)
- Array dimension error message corrected when reneging a resource because it is off-shift. Call to increase RM_releaseResourceSets had failed because the quantityExpressionRow is -1.
Chart library
CHART_BAR_CONN_DataOptions v10.modl & CHART_BAR_CONN_DataOptions v10.h
- Pasting a list of category or series names now works properly if entering more than one at a time based on a sequence of events. A flag will indicate if the change is coming from DI.
CHART_CONN_VariableInputConn v10.modl
- Fixed the bug where there was a “&&” instead of a “||” comparison, speeding the simulation up.
CHART_DB_ValuesFromDB v10.modl
- If one trace has a blank value and the record has other traces with no blank, the block now writes other traces with a non-blank value in the trace with blank value.
- When Blank is a value sent to interrupt a trace, if there is following blank values, it needs to be ignored.
- In the case where an entire table of data must be represented as traces, we need to resize the number of points for the trace up front.
CHART_DB_ValuesFromDB v10.modl & CHART_DB_ValuesFromDB v10.h
- Improved performance when creating a trace per DB table by getting only the necessary information.
CHART_DATA_Management v10.modl & CHART_DATA_Management v10.h
- If using the Line Chart in a continuous simulation, the Plot every Steps needs to be a multiple of the total number of steps otherwise the X axis does not show the proper times.
CHART_TRACE_CreateAndAddNewPoint v10.modl
- Code was improved to speed up the procedure of saving a lot of data in DA.
- Updated information in diCHART_TRACE_PointsSizeProperties when data is recovered when a model is opened.
- Additional checking for Global Arrays (format-size) when retrieving information during open model.
- Improve the reading of code when saving a model and its trace data in Global arrays.
CHART_TRACE_CreateAndAddNewPoint v10.modl, CHART_DB_ValuesFromDB v10.modl, & CHART_TRACE_CreateAndAddNewPoint v10.h
- When plotting an entire table, CurrentRow and Last Run are now set properly.
CHART_TRACE_CreateAndAddNewPoint v10.modl & CHART_TRACE_CreateAndAddNewPoint v10.h
- Improved speed for Chart blocks: When we write a new point to a trace, often the point is not a new point, but replaces the previous existing point. When that happens, we now have a data structure to avoid having to update Min Max too often.
Rate library
Diverge Merge v10.h
- If AnimationStatus is called while opening the model, it checks for to see if other GAs are missing if the simulation is not running.
Flow solver LP_Solve v10.h
- Fixed the issue where if lrSecondMember2 was a negative number not close enough to 0, it would stop the simulation. Now it is allowed and ignored so the simulation can continue.
Flow units v10.h
- Fixed the problem that if the block is not connected to the flow, the section would be negative.
Flow v10.h, Flow constants v10.h, & Tank functions v10.h
- If a new capacity is set while a new set of effective rates is being propagated, it was possible the effective rates wouldn’t be compatible with the new capacity, e.g. if capacity was set to 0 and rates are filling the tank. If a new Rate is about to be calculated by the block, the error message generated can be ignored if a new rate calculation is about to be generated.
Tank and Attribute v10.h
- Amount check error message shortened and rephrased to include block number.
- When a layer empties, the entry layer needs to have its quantity updated. If not and if the next product to leave becomes the entry level, then the entry level is missing product because it was not updated.
- Fixed a problem that might have occurred when the entering layer is removed leaving on the exiting level stopping the simulation. The cause was the exiting level would end up not having been updated (though it was to have been updated next), losing its proper index. It now accounts for both the necessary update and the possible change of the index of second layer to update.
- When the new exiting layer used to be the only exiting layer, we might have to calculate the current quantity in the layer before changing its status to enter and Exit layer. That was not done and caused loss of accounted product and stoppage of the simulation
- There was an issue where the entering layer had been removed and the new one had not yet been inserted. It is not possible to only change the entering layer as it might not be identical to the one about to enter now as it will be created later.
- When new attribute values arrive, if there was no exiting layer then there would not be a need to update quantities for none-existent exiting layer. This might cause layer to try to update too early and end up creating potentially more than one entering layer.
- After updating the exit attribute layer, it was possible that the status of siDiscrepencyInLayerAttFlag had to be updated and a new LP calculation might have to be triggered. The flag was updated to act accordingly, otherwise there would be cases of unnecessarily keeping the Outflow<=Inflow
Tank functions v10.h
- When there’s a change of capacity, the effective rate needs to recalculate if capacity goes from empty to non-empty or non-empty to empty.
Throwing Catching v10.h
- If Merge and Diverge had no rows defined in their Throw or Catch table, they would not be added to the GA in openModel. It caused to openModel2 to abort as it could not be found.
- If select a group without having any row in the dialog table for the Throw-Catch connection, there would be no entry in siListTCBlocks_GA so we the group linked to the block could not be entered yet creating an error message. Yet, it should just be ignored.
Reliability library
RBD License Mgr Constantsv10.h
- Removed constants that were no longer being used so a good, informative error message appears when a user clicks on SD_IntsTbl_Filter_pop and numEvents < 2.
Includes for multiple libraries
Equation v10.h (Item & Value libraries)
- If the Equation is using includes:
- ALWAYS compile in PreCheckData.
- Check in the Includes folder as a last resort.
Dialog Utilities v10.h (Chart & Utilities libraries)
- DBDI DB selection from DI v10.modl - When calling DBDI_RemoveDBSelectionUpTo with level up to cDBDI_COL_LEVEL_NONE, the behavior has been changed so instead of doing nothing, it removes whatever selection was there.
- DBDI DB selection from DI v10.modl – If a Table DB selection is removed, the potential Dialog Table which has been linked to the table is now removed as well.
- DBDI DB selection from DI v10.modl – If mixed DI and DIT, then the condition to update which part is DI compared to DIT needs to be updated properly.
- DBDI DB selection from DI v10.modl - When defining the Dialog DB exist up to, if the parameter is -1 and the string is not empty (exists but not remove), we need to correct the parameter because we take into account the string being right.
- DBDI DB selection from DI v10.modl & DBDI DB selection from DI v10.h – While indexes of DB selections are checked, we also need to check the other selection rows linked to the same dialogs.
- DBDI DB selection from DI v10.modl & DBDI DB selection from DI v10.h - In case a dialog is shared between more than one DBDI rows, when one row dialogs are updated all the shared ones need to be updated as well.
From ExtendSim 10.0.8 to 10.0.9 • April 5, 2022
Application • New and Improved Features
Runtime versions (Analysis and Player) can now open regular (non-RunTime) libraries when opening existing models. Other ExtendSim versions still cannot open RunTime libraries.
Removed line-wrapping in text documents making it easier to see individual records.
ExtendSim now displays the product name at top of application window.
Stat::Fit menu command is dimmed if Stat::Fit is not installed.
Fixed Find Block dialog also opens the dialog if that feature is enabled.
Application • Changes to Functions
PlotterSignalValueGet() now has a new value for "which" = 11: the number of data points in this signal.
GetDTOffset has new parameter values. The Row parameter is now "which" and the values are: 0 first column, 1 first row, 2 last column, 3 last row.
NotebookItemInfoString() function has new "which" values: which == 2 returns border color as HTML value string, which == 3 returns fill color as HTML value string.
NotebookItemInfo() function has new "which" values: which == 3 returns font size in pixels, which == 4 returns border thickness.
DBTableCopy() now can append the table's data to the target table if the target table name starts with a + (plus).
Application • Fixes
Model fixes
- Double-clicking a model now correctly uses the already launched ExtendSim application.
- Navigator now retains visible selection after using it to select blocks.
- Fixed crash in Navigator when opening a block and updating the Windows menu.
- Fixed crashes when closing ExtendSim with certain dialogs open.
- Protected libraries will now automatically open if full libraries are not available.
- Models can now be stopped even if they are in complex loops.
- Rewrote some license error messages for better clarity.
- Fixed the All Objects cursor so all objects can be selected and copied/pasted in notebooks.
- Fixed items becoming invisible in Notebooks when a Notebook is deleted.
- Fixed crash that would ocassionally occur when using arrow keys.
- ResumeSim message is now sent when clicking on checkbox, radio button, and slider dialog items.
- Animation pictures of all types now display properly.
- BarChart no longer crashes.
- New models now have animation speed set at the fastest value.
- Slider now deals correctly with typing parameters and its clones.
- Getting Data Table values from some tables will no longer cause a potential crash.
- Opening Properties dialog during a simulation run could cause crashes.
- The All Blocks Trace functionality was now works consistently on blocks inside of hierarchical blocks.
- The Line Chart Legend additionally now shows the X-Axis values, and all trace values now have 3 significant digits instead of 2.
Database fixes
- Fixed crash when opening certain database tables with AutomaticField Widths selected.
- DBRecordPopupSelector() now doesn't crash with illegal record index argument.
- DBDataGetAsNumber() now returns a NoValue if the cell is blank, even if it is an integer cell.
Block structure fixes
- Now prevents duplicate connector names from being entered.
- When replacing blocks in a library, it now shows the library name.
- Fixed a potential crash that might occur when compiling blocks and libraries.
- Fill colors for text and frame now default to white.
- The Structure window title is now set correctly.
Hierarchical block fixes
- No longer corrupts hierarchical blocks when saving structure using CTRL-S or the Save menu command.
- Can now add connectors to old converted hierarchical blocks with animation items.
Fixes to Functions
- Fixed Date and Time functions to work correctly with all input values.
- PopupCancelled() function now reports user cancelling popup menu under any conditions.
- MakeConnection() scripting function now shows correct connection line type immediately.
- RegisterLinkGA() now prevents duplicate registration.
- LastKeyPressed() now retains key pressed and looks at shift key and caps-lock key to return correct case.
- FindBlock() function now distinguishes correctly between block label and text item.
- StopDataTableEditing() function now works correctly.
- ConArraySetValue() and ConArrayGetValue() now work properly even if block has changed connectors.
- FindBlock() function will always show the dialog of a found block even if it was open and below other windows.
- GetDirectoryContents() now gets all of the contents.
- Min2() and Max2() functions did not always correctly return a BLANK value if one or both arguments were BLANK.
- CodeExecute() could crash during certain function calls.
- GASearch() and GASearchCount() and other GA functions were not returning the correct values in some cases.
- DILinkUpdateInfo() for "Which" is 8, now correctly returns a -1, instead of the block number that called the function, if user manually changes the database.
- DBBlockUnregisterStructure() and DBBlockUnregisterContent() now unregister the entire area called for.
- DuringHBlockUpdate() now correctly returns TRUE if during an HBLOCKUPDATE message.
- GetSimulationPhase() now returns -1 if there is no active model open.
- WaitNTicks() no longer crashes if used in scripting.
- ExecuteMenuCommand(cmdQuit) now quits ExtendSim properly.
- ExecuteMenuCommand() now allows additional stepping modes:
- Step Each Block(2024)
- Step Entire Model(2023)
- Step(30003)
Other application fixes
- Fixed bug allowing Student Version to use more than 75 blocks when copy/pasting.
- Rright-clicking a RunTime library block will no longer allow changes to be made to blocks.
- The Compare Results application no longer causes ExtendSim to crash.
Blocks • New and Improved Features
Write(I) (Item library)
- Added the option to write the item count to the target database cell.
Random Number (Value library)
- The unused views Distribution View and Distribution View Reverse have been removed. Prior to ExtendSim 10, a DLL was used to show the shape of the distribution selected. This DLL is not compatible with ExtendSim 10 so has been removed.
Tank (Rate library)
- Improved the Tank block by adding flow control.
All Chart blocks (Chart library)
- New button added to all Chart blocks to open the graph with a clone. By default, the button's title is that of the graph or it can be manually customized.
- Chart blocks' code has been improved to remove the warning message when a block's label has been changed. That warning message would sometimes get in the way of the graph title when the label is set remotely.
Histogram, Bar Chart, Line Chart, DB Line Chart, & Scatter Chart (Chart library)
- Increased content for the Histogram block.
- Updated the Include's declaration to target the subfolder to avoid looking at an incorrect duplicate, if one exists.
Blocks • Fixes
Batch (Item library)
- If setting to matching mode, check that options/connections which are about to be hidden are not in conflict with the matching mode.
- Fixed the attribute index to find attribute values in a global arrary as it only needs to be called only once at currentsim==0, not at each run.
Convey Item (Item library)
- If speedIn is connected when itemIn receives a WANTS message, ChangeSpeedDuringSimulation() must be called.
- Fixed how calculated itemLength < 0 was setting the block's nextEventTime < currentTime which was essentially causing the block to never have a next event.
- Changed how to calculate is the last item has transitioned completely onto the conveyor.
- Undid a change from January 14, 2015 that converted the block from using speedIn and speed_prm to manage items to using speed_curr and speed_prev.
- Added speedIn_SendMsg() to formalize sending messages out the speedIn connector.
Create (Item library)
- Fixed how the first two values in prg_StartInBehavior_pop could get transposed.
- Corrected how the app might change the case of some of the dialog item variable names. This could cause a problem in DialogItemsShow() where StrFind() was getting called with TRUE for case sensitivity. All these calls are now using a FALSE for case sensitivity.
Data Import Export (Item library)
- In XL_SetupExcel, workbookItem was not set in cases where a Workbook was already open.
- Fixed a bug that might occur if it's a Wild Card and the Table name does not have to match an existing table from the database.
- Removed code for ODBC import all and creating ExtendSim tables.
Executive (Item library)
- Fixed that if records got deleted in string attribute values database table, blocks would reference that attributes were not getting a message about the change.
- The Executive's dialog needs to be openable even if there's a problem. on LinkStructure could inadvertantly block the opening of the Executive's dialog if there was a problem in LinkStructure.
- The string attribute value warning exceeded 31 chars is now just sent when a model is not running. The warning should not be sent running.
- The Executive now accounts for the possibility that string attribute values in the database could be longer than 31 characters.
- When initializing a run, ExtendSim will now delay the SA value check until PostInitSim.
- Interrupting error messages now works as it should.
- Moved the call to Attrib_SortAndSync() from LinkContent (where it would get called soooo many times) to InitSim where it will only get called once.
History (Item library)
- If time units got switched when there is data in ItemHistory_dtbl, the times in column 0 must be converted to the new time units.
Math (Item library)
- Editable text attached to the checkbox is now properly hidden if it is empty and not in use.
Queue (Item library)
- When switching from Queue Resource Pool to Sorted Queue, the icon is now getting cleared of the listed resource pools.
Resource Manager (Item library)
- To avoid reentrance in RMdlg_repositionFrameDialogVars, a reentrance counter now limits in case by case if reentrance or not is desired.
- To avoid an array dimenson error message, checking has been added during Auto-Generate component and the import tables are empty.
- Resource release rules are no loner destroyed when importing new requirements.
- Too avoid array dimensional bound, a new constant c_rM_AllocatedQuantityToDispose has been added to support the dynamic array resizing procedure.
Resource Pool Release (Item library)
- If release uses a custom rule and the release rule is from list selection, the selection name should be saved. (If there's no name tracking, then the selection might change when the list of release rules changes.)
- When the number of resources is determined by a connector, access to the parameter used to set the initial number of resources cannot be stopped because it is used in initsim to set the available number before the connector updates a value.
Select Item In (Item library)
- If SelectType_pop = RANDOMSELECT, DataTableResize now works properly.
- This block now ensures everyting sums up to 1 (or nearly so).
Select Item Out (Item library)
- ShowConnectorLabels() is now called in EndSim so that the throughput values on the icon are updated at the end of the simulation run even if animation is turned off.
Shutdown (Item library)
- If both thisTtrEndTime_st and nextEvent_st are occurring at 1e300, it does not effect the run.
Data Import Export (Value library)
- If hideExcel == FALSE, the Excel application's window state does not get changed.
- Cleaned up the XL_Embed_chk option which is now longer available in ExtendSim 10.
- To let the Scenario Manager block suppress import/export in the child nodes, use daBlk_suppressImportExport.
Integrate (Value library)
- If the reset value connector is not connected, the trace in the block does not work because a value is trying to be read from a non-connected value connector. The connection must be checked before trying to read.
Optimizer (Value library)
- If a cloned dialog item does not exist, the dialog will open.
Scenario Manager (Value library)
- Now checks to see if OldRecordIndex is legitimate.
- Corrected the error message that might appear when using Export Report because supposedly there was no scenario selected even if there was. Need to update the DA containing the selected scenarios.
Change Units (Rate library)
- In some cases, an invalid factor could get into the LP Solve causing an error. Extra checking was added to avoid that from happening.
Convey Flow (Rate library)
- Precision rounding now correctly recognizes all densities entering the block are identical.
Merge (Rate library)
- If physical connections are mixed with Catch connections, be sure the connection is Flow before reading the value from Flow Result table.
Valve (Rate library)
- In the case where a new goal quantity or time is <=0 or blank and not Ignored, then it is an instant goal going from start to finish and is never in progress.
- If a New Rate calculation has been done and the connection results generate the request for a new calculation, the flag to siStartNewLPSolveCalculation was set to False too late preventing the recalculation at time 0. The flag is now updated earlier and recalculation can proceed.
- The calculation of cumulative time was reviewed - the issue was that the calculation was not always accurate depending on Shift/goal and shutdown.
Tank (Rate library)
- Flow control has been added to the Tank.
Includes • New and Improved
RM Constants v10.h & AR Constants v10.h
- These includes have been renamed and moved to Constants v10.h
SM procedures v10.h
- The percentage on the Status Bar can now be adjusted to show less digits.
Tank • Rate holding product v11.modl, Rate holding product v11.h, Flow constants v10.h, Tank functions v10.h, & Flow v10.h
- Flow control to the Tank block in the Rate library.
Tank functions v10.h
- If Demand value input connector not set up give a little more information that just "unused".
CHART_BAR_CONN_DataOptions v10.modl & CHART_DATA_Management v10.modl (All Chart blocks)
- Behavior has been changed to that if a model is continuous, random numbers are allowed to be drawn by the plotter. If the model is discrete event, this is not the case.
Constants v10.h
- Added new arguments and value for argument to PlotterValueGet and PlotterValueSet.
- PlotterSignalValueGet added to return the number of points for each trace.
- Pie Chart and Bar Chart have been added to Plot type in GetPlotterValue().
Multiple includes
- Added dlg_getFrameBottom() to multiple include files.
Includes for Chart library blocks and other new blocks
- Code was improved so that if reserved databases are accepted, then the popup to select databases will now include the reserved databases.
- Updated many include declarations to target the subfolder so it avoids looking at wrong duplicate if that exists, but need updating if moved.
Includes • Fixes
Resource manager • RM dialog v10.h & RM Message Handlers v10.h
- To avoid reentrance in RMdlg_repositionFrameDialogVars, a reentrance counter was created that can limit, on a case by case basis, if reentrance is necessary or not.
Resource manager • RM dialog v10.h & RM procedures.h
- To avoid an array dimenson error message, checking was added so that while "Auto-Generate component" and the tables to import are empty.
Resource manager • RM Prototypes v10.h, RM Constants v10.h, RM databases v10.h, RM functions, & RM procedures.h
- Resource release rules were destroyed when importimg new requirements.
Resource manager • RM Prototypes v10.h, RM Constants v10.h, RM functions v10.h, & RM procedures v10.h
- To avoid array dimensional bound, a new constant c_rM_AllocatedQuantityToDispose was added to support the dynamic array resizing procedure.
Resource Pool Release • AR Constants v10.h
- Fix Bug: If releasing using a custom rule and that release rule is from list selection, the selection name should be saved (if no name tracking, then the selection might change when the list of release rules changes).
Resource Pool Release • RP message handlers.h
- When the number of resources is determined by a connector, access to the parameter used to set the initial number of resources cannot be stopped because it is used in initsim to set the avaiable number before the connector updates a value.
AR Resource Manager v10.h, AR Constants v10.h, & RM procedures v10.h
- Fix an issue that when new resources are added dynamically, orders waiting to be serviced did not get a chance to be serviced right away.
AR utilities v10.h
- Added range checking for mapping table array in updateResourceTableData_N.
RM Database v10.h & RM procedures.h
- In the Resource Requirement Expressions DB table, identical RR ID and Expression Groups need to be identically trimmed or not trimmed. Only trimmed values used to be considered, but that causes bugs. In order to avoid ripple effects, Resource Requirement Expressions names are trimmed at the source.
RM dialog v10.h
- Avoid array dimension bound error if no filtering condition has been defined.
RM functions.h
- When the RR (Resource Requirement) determines its pool with an attribute, if the attribute value is blank, the quantity requirement is set to select a "wild card".
RM procedures.h
- Commented out the unnecessary code in RMprc_initializeResourceTable.
RP Procedures v10.h
- RPfcn_getTotalResources can be called during PostInitsim. This must be taken into consideration and return Total resources taking everything into account during PostInitSim.
RM procedures v10.h & RM Constants v10.h
- Fixed problems that would occur when using the changeResources_TIdx database table to change resources dynamically during the simulation.
Resource Pool • RP procedures v10.h
- There was a problem when using ARM and NumResources is set to a lower number than resources already in use. The resources already in use were tending to disapear as soon as they will got back to the pool, but they are still in the model. The simulation should not stop when the count of resources does not match.
Dialog tables handling v10.modl
- If resize columns is set to on, then GetDTOffset returns -2 when code is executed while the dialog box is closed. The return needs to be checked and the starting row set to 0.
Tank and Attribute v10.h
- When a layer becomes empty, if the quantity does not quite match. the bar needs to be lowered to declare it an error.
Tank functions v10.h
- After updating EffectiveInputRate_prm and EffectiveOutputRate_prm, srNext_ExtremContent needed to immediately be updated because the value connector updated might trigger attribute update and then when extreme content is not up to date, an error message is received and the simulation stops.
DBN Start Node v10.h
- when an Reliability Block Diagram (RBD) gets deleted, other RBD's in the model get notified of the deletion when the deleted Start Node block sends BR7 messages to all the other Start Nodes. This is done at the end of DBN_Content_Clear(). However, in BR7 of the remaining Start Nodes, we were not reregistering the Start Nodes for linkcontent or linkstructure.
Line Chart & Scatter Chart • CHART_CONN_VariableInputConn v10.modl
DB Line Chart • CHART_DB_ValuesFromDB v10.modl
CHART_TRACE_CreateAndAddNewPoint v10.modl
- Checks that traces are not added beyond the maximum size set for the block.
CHART_TRACE_CreateAndAddNewPoint v10.modl
- When enacting SaveHblock, OpenModel is called and data is trying to be "restored" which should not happen because the model is not really "opened".
DBDI DB selection from DI v10.modl
- When records are deleted, it now reads which row instead of which column.
- Some checking is now ignored if DB dialog is not set to keep the name up to a certain level.
Constants v10.h & RM Constants v10.h
- Added constants for the Data Import Export block. Renamed and moved these to Constants v10.h.
Dialog Utilities v10.h
- Added dlg_getFrameBottom().
Costing v10.h
- Under certain conditions, NoValues could exist for certain constant parameters. If that happens, set those parameters to zero.
From ExtendSim 10.0.7 to 10.0.8 • August 7, 2021
Application • New and Improved Features
Analysis RunTime product can now open regular (.lbr) library types rather than only RunTime libraries.
Added new type of text file: .rsm
Now detects integer blank entries as NoValue, not 0, which is a valid entry.
Now allows default PDF printing to a single page for a model.
Charts have rubber-band zoom if right-clicked.
Chart's Data tab can now be cloned like the Graph tab.
Dashed line added to Border/Line Thickness tool.
For a Floating license, added Roaming status to model's Title Bar.
You can now right-click on the icon pane (not on the icon itself) in a block structure to add an animation object.
Application • New Functions
DBGetLinkedDialogsList() - To find all the linked dialog items in a model.
DBGetLinkedContentList() - To find all the linked database content items in a model.
DBGetLinkedStructureList() - To find all the linked database structure items in a model.
MaintenanceSupportPlanExpired() - Checks the maintenance date of the license to determine if it has expired.
GetBlockTabNames() - Gets all the tab names for a block's dialog.
ServerOpenPort() - Sets ExtendSim as a listener on that port.
EColorToHTML() - Gets the HTML color as a string for publishing an HTML page.
Application • New Variables
sysGlobalInt80 to sysGlobalInt99
sysGlobal30 to sysGlobal39
sysGlobalStr10 to sysGlobalStr19
Application • Fixes
Model fixes
- Licensing error message improved.
- Model would not stop running, even if error condition, during connector message loop.
- Closing main tabsheet if worksheet ripped off didn't save, even if changes have been made.
- Corrected error message. You can modify models in the analysis runtime version.
- Models with animation open much faster.
- Fixed old model conversion of animation objects to be aligned.
- Fixed block substitution so it doesn't keep asking for opened libraries when looking for missing blocks. Also speeds renaming blocks.
- Ensured visibility of error messages when opening a lot of windows.
- Window size corrections if opening a model that was previously opened with more monitors or larger monitors.
- When converting old models to V10, animation size and position is now maintained.
- New startup screen with current TM and copyright info.
- Main window titlebar now shows active model title.
- Make sure open model's window size always fits into user's monitor.
- When converting old files to ExtendSim 10, force text on top of other items.
- Fix connector positions in old models when converting to ExtendSim 10.
- Missing Cancel button in Save Model dialog.
- Now allows moving disabled clones.
- Fixed an issue where images were being lost when saving and opening models.
- Data tables now show the complete number for all values.
- Fixed color tools so that default color comes from top model and not dependent on open hierarchical block windows.
Database fixes
- Importing database over an existing database no longer gets duplicate LINKSTRUCTURE messages.
- Importing database now tolerates extra characters in database import file.
- When renaming a database field, no more duplicate rename messages are sent.
- Insert or append database record functions were returning the wrong index of the insert or append location.
- Can now insert a new field in database structure without a crash.
- Don't allow random numbers in non-real database fields.
- ExtendSim was always returning a zero for how many records were inserted or deleted in a linked table.
- Fixes in DBTableImportData().
Block structure fixes
- Editing text in Dialog Editor no longer causes a crash.
- Adding more tabs to dialogs now works properly when the tab bar has more than one row.
- Some dialog text items did not respect the SetDialogItemEColor() function.
- Copying and pasting model text items on dialogs is not allowed.
- Empty dialog item names are now removed when the dialog is closed.
- For consistency, can now double-click on structure Icon pane to create new text label.
- Now detects integer blank entries as NoValue, allowing unique and valid comparisons with empty values.
- String tables were not limiting cells to 15 characters, causing a crash.
- DIALOGOPEN no longer refreshes units in dialogs. We now use SIMSETUP instead.
- Now correctly allows dialog editor to rename a block's first tab
- Formatting text with brackets now works in all cases.
- Moved animation objects to a higher Z-order, from 500 to 600
- Fixed crash when dialog is closing and object is no longer in lists.
Hierarchical block fixes
- Notebooks in hierarchical blocks can now be accessed even if the hierarchical block is not open.
- NotebookItemInfo() functions were using the wrong notebook in hierarchical blocks.
- Hierarchical block structures now maintain correct connector type in all views.
- Duplicate notebook names in hierarchical blocks are no longer allowed.
- Corrected notebook numbering in hierarchical blocks.
- A block's Find Me button now opens the correct owning window for the block.
- Find Me now correctly shows the object's owning window and doesn't cover it with the object's dialog.
- Fixed the issue that when hierarchical block contents are zoomed too far out, they were almost invisible.
Notebook fixes
- Notebook names on a model worksheet now must be unique.
- Can now detect that a notebook was opened when the model was saved; notebook automatically opens when model is opened again.
- Now renumbers notebook correctly when deleting notebooks in hierarchical block or on worksheet.
Equation block fixes
- Equation blocks now work correctly with variable names that happen to contain other variable names used.
- An Equation block inside a protected hierarchical block will no longer open and reveal its equation if there is an error condition.
- Equation blocks now correctly stay open if the equation has a compile time bug.
Chart block fixes
- Fixed Histogram loop when opening charts.
- In some cases, dialog plots were not being closed when the dialog was closed, causing a crash.
- Charts now zoom properly using a right-click on the plot pane.
- Charts now can be dragged and show no points beyond the X-axis limits.
- Chart rubber band drag-to-zoom fixes.
- Incorrectly allowed the Chart Data Selector to edit data.
Miscellaneous fixes
- More debug information if bad object in model file or file was terminated before done.
- Reactivation warning message is now a critical warning message to prevent needless reactivations.
- ExtendSim no longer crashes when quickly selecting and copying hundreds of blocks at one time.
- When preloading libraries entered in Options, we ignore empty slots and continue to load all filled in slots.
- If using PDF printer, we display everything on one large page using the dimensions of the entire model.
- Now allows library names with more than one period character.
- Sensitivity Analysis now reports errors and allows stopping the run.
- Sensitivity errors during a run should only send ABORTSIM message, not go to FINALCALC.
- Corrupted models give a list of blocks and connections that need repair.
Application • Function/Message Handlers Fixes
Opening a block's dialog box in OPENMODEL or OPENMODEL2 no longer places the dialog behind the model window.
CloseDialogBox() needed to wait until dialog was completely closed.
UpdateAllHblocks caused connection problem: Added LinkNodes() call.
AnimationBlockToBlock() no longer crashes if orphan connections are not deleted.
Some of the Ecolor functions did not work properly when converting from one color standard to another.
The Color Picker now interprets a blank color as black and returns the correct hue of 0 instead of -1.
CloneGetPosition() now returns the correct position.
Created animation objects should not be visible until a call to AnimationShow().
FindRecordFromString() now correctly converts blank string into NoValue instead of zero.
DynamicDatatable2() function no longer returns an error code when no error has occurred.
MakeArray2() now correctly creates the array in the passed-in block number.
OpenExtendFile: Ignore already Open message if called with scriptin.
Fixed crash in DBGetLinkedContentList() function if error occurs.
Only one CELLACCEPT message is now sent when changing values.
Tables now only send a single CELLACCEPT message.
For GetPlotterValue and PlotterValueGet, added a Which argument for plotter type:.
- Linear plot
- Scatter plot
- Error bars
- Strip chart
- Worm plot
- Bar plot
- Pie chart
- Bar chart
DILinkUpdateInfo fixed Which=8 so it works correctly with global arrays.
Blocks • New and Improved Features
History (Item library)
- Add: new checkbox which will resize columns automatically when filled up / Open model /Setup / check the option / resize.
Resource Manager (Item library)
- Updated call to RMfcn_addResources to accommodate new argument for initial resource quantity.
History(R) (Rate library)
- Allow to change the view of the block's to and from Status. Not being able to do it created some problems because it could not right-connect in between hierarchical block connectors.
Tank & Interchange (Rate library)
- Add results: contents average, content Max and Mins.
Tank, Interchange, & Convey Flow (Rate library)
- Add result: cumulative time the tank level has been in each indicator.
DB Line Chart (Chart library)
- Improved code: When in openmodel, if the block detects a problem and gives an error message, don't abort opening the model.
Animate Value (Animation library)
- Improved code: Be smarter in setting GetSimulateMsgs(FALSE) to avoid calling on simulate if not necessary.
Blocks • Fixes
Create (Item library)
- Added call to DialogSetup() in DIALOGOPEN to force dialog tab to correctly resize.
- Make sure only call Prg_PostInitsim() once. if the startIn connector is connected you can get some wierd timing issues where the connected block sends a message in PostInitsim before the app sends the PostInitSim message to the Create block.
- Fixed an issue where if a Create block was in Create Random Values mode, random numbers were not getting sent.
Executive (Item library)
- SA_Values_ttbl was not editable. One problem was referencing "blockList_ttbl" when "blockList_DA" should have been referenced instead. Referencing "blockList_ttbl" became problematic after I implememnted an optimization in Attrib_GetBlocksInModel() where DynamicaDataTable() only gets called conditionally because it was slowing down models with large numbers of SA's.
History (Item library)
- Bug Fix: If local time unit for the block is different than model time unit and calendar date is checked then the calendar date displayed were wrong because it assumed the number to interprete was in global unit.
- AutoscrollHistory_chk only worked if the dialog of the block was open.
Queue (Item library)
- Added logic in reneging setup to check that each referenced resource pool block has a valid entry in the list of registered resource pool blocks.
- Added code to clear the average wait time (AvgWait_prm) in ClearStatistics message handler.
- in the Queue block, if reneging is turned on, the dimensions the queueList and the renegeList were not matching. this was causing an error when the queue called ListCopyElement() in the DoRenege() function.
Queue Equation (Item library)
- in the Queue block, if reneging is turned on, the dimensions the queueList and the renegeList were not matching. this was causing an error when the queue called ListCopyElement() in the DoRenege() function.
Read(I) (Item library)
- Added condtions to exit earlier out of ValuesIn_ConnectorLabelsUpdate() to speed up runtimes.
Select Item Out (Item library)
- Need to hide sum label warning if probabilities add up to 1 otherwise it leaves a white print on the dialog.
- Fixed a problem with "predict".
Shift (Item library)
- Added right-click connect.
Shutdown (Item library)
- If the user linked the empirical table to a database, the number of rows may have changed. NOTE: right now we don't have an event to capture the user clicking the link button on a data table.
- Blanks received at tbf and ttr inputs were causing an infinite loop.
Throw Item (Item library)
- Fix bug: When change view, the label animated on top of the block was not updated.
- Fix bug: Check at the beginning of the simulation that if SetMyBlockNumInAttribute_chk is checked, then an attribute has been selected.
Transport (Item library)
- The simulation was interrupted if get on shift and no item in the block., If the listLink is empty, we should not call the first element.
- ItemSpeed_prm could inadvertantly get reinitialized to a blank during a run if the dialog is opened. Here's how: in DialogOpen CalcDelta() eventually gets called. If the block is in TIMETRAVEL mode, and if Length_prm or ItemSpeed_prm are blank, ItemSpeed_prm was getting set to blank.
Write(I) (Item library)
- Added condtions to exit earlier out of ValuesIn_ConnectorLabelsUpdate() to speed up runtimes.
Equation (Value library)
- Added condtions to exit earlier out of ValuesIn_ConnectorLabelsUpdate() to speed up runtimes.
Max & Min (Value library)
- Bug Fix: The anmation on icon of min or max was not showing in ES10 because AnimationColor pattern argument was set to 0 instead of 1.
Convey Flow (Rate library)
- Precision Fix: When A layer becomes empty at the same time as an event is scheduled to recalculate Rates (but a very small amount of time before), it is possible that the layer attributes has no attribute value for a very small amount of product which will still leave the block until the event empty happens.
History(R) (Rate library)
- Name tracking: When History is written in a database table, the change of name for database and database table was not updated in the block.
- Fix display: If Flow attribute is Blank and Alert is on, we have to display better the blank status.
Interchange (Rate library)
- Fixed the issue that when StoreContentsAttrib_chk was checked and no product was left in the Item, the attribute value had to be updated to 0.
History(R) (Rate library)
- Name tracking: When History is written in a database table, the change of name for database and database table was not updated in the block.
- Fixed display: If the Flow attribute is Blank and Alert is on, Blank status is better displayed.
Merge (Rate library)
- Bug Fix: If mixed physical connections and Catch connection simulation would not be able to run because ConArrayGetValue could be called on a Catch connection which would interrupt the simulation.
Tank & Interchange (Rate library)
- When receive a request for content in ValuesOut value connector, need to not send an active message otherwise we have the risk for an infinite loop.
- If Maximum Intput or Output flow rate change during the simulation, the new values were not used in the block, only the initialized ones (DB link for example).
- When to send an active msg for tank content should be compared to last time sent not to last time tank content calculated. The reason is that we could have updated the value without msg but a msg is needed anyway (if not done it can change results in v9 and previous models).
Valve (Rate library)
- In utilization calculation: the effective Rate used is from siInfoR_GA GA and when srConstrainingRate is not in sink (constraining will be taken into account in Lp calc at 0 time) we could be at odd with the 2 Rates causing errors in the flags update and then in the Utilization rates can happen.
- The start time stump time starts when the Utilization flag is becoming active, not the other way around.
Start Node (Reliability library)
- Link messaging got turned off in PreCheckData and will get turned back on at end of PostInitSim, but we need to respond to any messages that might come into valuesIn in PostInitSim.
- Needed to call RBD_DB_Rslts_NodeSumTbl_Create() in OldFileUpdate in order to successfully open older reliability models.
- added the integer variable Results_RunNum to support RSM distributed analysis.
PauseSim (Utilities library)
- Retire the option "PauseBetween" as it not relevant in 10 anymore (no saving during simulation available).
Includes • New & Improved
Flow v10.h
- Add results: contents average, content Max and Min.
Tank and Attribute v10.h
- Add result: cumulative time the tank level has been in each indicator.
Throwing Catching v10.h
- Code add checking: If we have a Catch or Throw block, the position can actually be ignored because it is irrelevant (instead of forcing -1/Blank). We can correct the position in this case if it is not a valid one.
Includes • Fixes
AR utilities v10.h
Block location utils v10.h
BTB Animation v10.h
CHART_DISPLAY_options v10.modl
Constants v10.h
DBDI DB selection from DI v10.modl
Dialog utilities v10.h
Equation v10.h
Flow v10.h
Flow constants v10.h
Flow units v10.h
Item Contents v10.h
Miscellaneous general tools v10.modl
RBD DB Start Node v10.h
RM dialog v10.h
RM functions v10.h
RM procedures v10.h
Shifts v10.h
Tank and Attribute v10.h
Tank functions v10.h
From ExtendSim 10.0.6 to 10.0.7 • Released on November 12, 2020
Blocks • New and Improved Features
Batch (Item library)
- Created procedure Bprc_DynamicDataTable to enable dynamic linking to the batch quantities & attributes input dialog tables.
Executive (Item library)
- Added call to dlg_buildModelBlockConnsTable in BLOCKRECEIVE8.
- Added reference to new Cloud include file and replaced calls to dlg* procedures with Cloud* procedures in BLOCKRECEIVE8.
Resource Manager (Item library)
- Added 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.
- Added call to RMdlg_enableDisableButton to manage a new button for exporting resource class definitions.
- Added 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.
- Added a new dynamic array for use in the validation of resource requirement expressions table content.
- Added new variables and logic to better manage dialog refreshing.
- Added new data structures to more completely capture information for resource change groups.
Resource Pool (Item library)
- Moved locally defined constants related to Resource Pool queues and allocation policies into the RP constants v10.h include file.
Throw Item (Item library)
- New implementation: Added an option to set an attribute with my Throw block number.
Merge & Diverge (Rate library)
- Added 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)
- Added block Help.
Histogram (Chart library)
- Increased the maximum number of bins and maximum number of bars.
Line Chart and Scatter Chart (Chart library)
- Added the ability to filter data on schedule in continuous models.
Chart & Report libraries
- Cleaned 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
- Enhanced all hierarchical blocks in the Templates library with updated documentation.
- Added 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)
- Fixed the issue where the current contents table was getting initialized when it shouldn't have been.
- Fixed 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)
- If startIn is connected and if there's only one row in the schedule, non-zero create time should be allowed if PrgStartInBehaviorpop == FOLLOW_SCHEDULE.
- If prgStartInBehaviorpop = ONEITEMTHEN_WAIT, then the next item generated is a future event not a current event.
Executive (Item library)
- Removed 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)
- Fixed 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.
- If 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)
- Corrected the issue where the Icon was not animating at the beginning of the simulation.
- Adjusted block position because there's a new Sensor connector on the top of the block's icon.
Queue (Item library)
- Current contents table is no longer getting initialized when it shouldn't.
- Changed the name of to CalcCosts to q_CalcCosts in order to accommodate generic costing logic.
Queue Matching (Item library)
- Corrected some code in on updateStatistics that failed to check whether or not the block was/was not in Batch mode.
- If a departures list does not exist, don't try to calc ave length.
- Fixed the "dump group" input as ConnectorToolTipSet was indicating the wrong value.
Queue, Equation and Resource Item (Item library)
- Corrected the current contents table from getting initialized when it shouldn't.
Read(I) and Write(I) (Item library)
- If 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)
- Added a new dynamic array for use in the validation of resource requirement expressions table content.
- Added new variables and logic to better manage dialog refreshing.
- Added a new variable rMcostPerUsereleasedResources to enable accumulation cost per unit time in for released resources. This is used in calculating resource-based item costs.
- Added the explicit setting FCattribPop in FCInputVariableType_POP.
- Updated the RMprc_changeResourceProperty procedure to allow for resource shifts to be set to NULL/BLANK.
Resource Pool (Item library)
- Corrected argument value being passed to update pending capacity value in RPfcn_calcNumberResourcesChanged.
Resource Pool Release (Item library)
- Added costing logic to AR_releaseResources to properly account for time-based resource costs.
Select Item Out (Item library)
- When the label or attribute to animate is too long, it gets truncated. Stretch the animation object to fit the name.
Transport (Item library)
- Fixed that some models were getting corrupted and leaving animation objects on the worksheet which needed to be removed.
Write(I) (Item library)
- Added Item Quantity to the list of options for writing item information to the database.
Data Import Export (Value library)
- New code was added to handle fact that OLEObjectIsRegistered() was returning a false positive sometimes.
- Added 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)
- For 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.
- If 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)
- The function XL_OpenFile() is needed to return the workbook path selected by the user.
Convey Flow (Rate library)
- In an if/else statement, an else was missing making the else statement always applied.
- Fixed the quantity checking.
- There 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.
- Made sure that the change to the status of the layer from intermediate to exit and also updated the last time update.
- In 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.
- Adjusted 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.
- The 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.
- Fixed the double call to on OpenExec_btn, so there is just one call.
- The 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.
- Checking 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.
- A 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.
- In 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.
- When checking on contents, if portion content is 0 the other content tolerance could be 1E-5.
- When 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.
- Reviewed sensor logic where the sensor was not being set properly when at the limits.
History(R) (Rate library)
- Fixed 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)
- Using 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.
- When 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)
- Need to check that the simulation is running to call a function when ReleaseOnAttriVal+prm is changed otherwise get an error message.
- When initializing attribute layers, if cINITCONTENTSWITHOUTATTVALUES and an outflow connection is made, avoid allowing 2 empty entering layers.
- Using 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.
- When 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)
- If change option on Executive block, assume the Advanced status option needs to be updated accordingly and not just enabled/disabled.
- If siStartingGoal + diValuesInIsConnected[cVALUESINGOAL] + !FirstGoalFixedchk, check the goal connector. Otherwise there may be differences from one run to another when doing successive runs.
- The 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)
- Node Interrupt options now only show if the node has more than one event cycle.
- The name stored in the ID - Component Name field in the Component Set table needed to be altered.
- In 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)
- Fixed SDEventsTblttbl and SDIntsTblfrm row indexes now start at 1.
Distribution Builder (Reliability library)
- Time units in distributions table are now getting updated properly in PreCheckData.
- When opening the Distribution Builder dialog, by default it show the contents of the first record.
- After committing, be open to more Link Alert messages.
- When 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)
- Set EndNodeNameShowAboveIconchk = TRUE by default.
Event Builder (Reliability library)
- Found 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.
- After committing, be open to more Link Alert messages.
- In models with many fail modes, calling RBDDBNEventsReg_GetEvents() in OpenModel2 slows the model as it does a sort on the event cycle names.
- When 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)
- No longer reporting the node name in the event log in the wrong format.
- For now, hide SDIntsTbl dialog items.
- If 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.
- Only show Node Interrupt options if the node has more than one event cycle
- Changed the name of Event Status table to Event Cycle Instances.
- In models with many fail modes, calling RBDDBNEventsReg_GetEvents() in OpenModel2 slows the model as it does a sort on the event cycle names.
- There were problems with the values at the valuesIn input connector getting updated properly at the beginning of the run.
Buttons (Utilities library)
- Fixed an issue with copy/pasting equation code from one editor window to another editor window.
Application • New and Improved Features
Miscellaneous
- Using a new version of QT - 5.14.
- Switch control now toggles when clicked, making it much easier to change the state of the switch from off to on and vice versa.
- Added Find Me button to all dialogs so user can find where owning block resides.
Application • Fixes
Converting Models to ExtendSim 10
- Fix ExtendSim 9 arrow connection settings: always go from output to input when converting to ExtendSim 10.
- ExtendSim 9 plotters with a visible Key were not showing the Legend in ExtendSim 10.
- Converting 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
- Changing the connection type now works properly in hierarchical blocks' submodel or structure.
- Hierarchical block tabs are now the correct gray color and the tab border is visible.
- Block numbers and simulation order numbers are now visible even if animation objects or connections cover them.
- Invalid block dates are now shown stating they are invalid.
Database
- Corrected the issue that some random distributions (e.g. Triangular) would lose the last parameter value in some cases.
- Opening a database table will no longer make the model "unsaved".
- Fixed WhichDTCellClicked() function which would sometimes return the wrong cell.
- DBDatabaseCopy() function now copies to the correct destination all the time.
- Corrected the placement of popup selectors to be centered in a dialog box.
- Fixed issue when creating relations sometimes didn't work and had to be redone.
- Opening pre-ExtendSim 10 models sometimes caused some database table windows to be invisible.
- Using a database table to define random seeds now works correctly.
- DBTableExportData() now works correctly while multiple models are running.
- Inserting and/or deleting a field into a database table viewer now always works.
- Database field columntags now display all records starting at the first record.
- Date and time fields or column tags now allow editing of both the date and the time sections.
- Date and time cells can now be selected without opening their editor.
- Copying and pasting of dates from Excel will give all sections of time.
Block Structure
- Now remembers which line number was used last in the goto line command.
- Connectors used a hidden cyan color incorrectly in some cases.
- If the script pane is ripped off, the go to definition command now works.
- Creating new connectors in a hierarchical block's structure will no longer create incorrectly sized connector text blocks.
- Fixed the opening of the dialog editor and icon views that would set the scrollbar values too high, displaying an empty window.
- Checkboxes and Radiobuttons now have the correct colors in dialogs.
- Dragging objects to left edge of a structure dialog window now works correctly.
- Connectors now show input/output status by using the correct connector image.
Miscellaneous App Fixes
- Slider clone will no longer move behind blocks.
- Slider now works properly during a simulation run.
- Undoing a move operation didn't always undo to the old position.
- Application allows optional opening of newer models and newer libraries with warnings.
- Models and libraries can be opened in ExtendSim 10.0.6.
- Fixed the prevention of deleting or pasting of blocks during a simulation run.
- Added type of connector to connector properties dialog.
- Moved Find Dialog down and left as it covered the ExtendSim close box.
- Added an option to make value connectors black.
- Cloned datatables now allow editing.
- Problems with stopping running models resolved.
- Child field popups now work in linked and cloned datatables.
- Copy and Paste now works with cloned datatables in Notebooks and in hierarchical blocks' worksheets and Notebooks.
- Swedish keyboards now work correctly with the ALT GR key and square bracket keys.
- Added missing block numbers in messages that are involved with stopping a running model.
- Clones in hierarchical blocks now update to the latest values when the hierarchical block is opened.
- Missing Go to Debugger button always present if block has aborted a simulation run.
- You can now call RunSimulation() from a cloned datatable button columntag cell without crashing.
- More problems with the stopping of running models resolved.
- Equation editor fast click timing issue is no longer occasionally corrupting equations.
- Bad duplicate connections from rapid copy/paste commands are prevented and now get repaired when opening previous ExtendSim 10 models.
- Datatable read-only links disabled using Link button to change to a different link.
- Added error messages when trying to change data in a datatable read-only link.
- ExtendSim can now launch when installed on a different drive (e.g. D drive).
- A worksheet and its scrollbars now automatically increase or decrease in size as a model changes size.
- Large selection copy/paste is more reliable for huge models.
- Slider arrow keys now work and give higher resolution than using the thumb to change outputs.
- Show Object IDs and Show Simulation Order commands now show their block numbers clearly above all other elements in the worksheet.
- Fixed the issue where Data Table clones had the incorrect row height, chopping off the bottom of numbers.
- Histogram (Chart library) no longer crashes when changing the number of bins.
- The File menu now shows the Save command even if the worksheet is torn off.
- Cloud version only: Server Connected window will show up if the Cloud version gets a connection. This code should be disabled until finished.
- If a connector array is collapsed, it now correctly calculates the block's area. Fixes RBD problem with connecting blocks.
- Dialog parameters now show the number using the existing width of the parameter.
- Slider now uses arrow keys to change its value by 1% or 10%.
- Editing datatable entries now show full numeric precision while editing.
- The formatting of numbers now looks at the height of a cell or parameter to calculate the correct font size.
- Right-clicking a Popup button do not send messages to the block.
- When changing simulation time units or parameters, a DIALOGOPEN message is now sent to open blocks.
- Dialog Text Frame now gets created with a larger size so it is easily resized and keeps its size when dragged in a structure window.
- Align Left command now won't crash when finding an empty object.
- Added more block information to OLE/COM error messages.
- Clones can now be deleted during a simulation run.
- Multiple clones now update correctly.
- Named connections can now be edited even if they are connected to an output.
- When editing datatables or parameters, the correct font is now used.
- When opening models, block substitution now recovers correctly if the user accidentally didn't choose a block.
- User messages now handle carriage returns correctly.
- Cloned datatables can now be deleted.
- Online Help now works correctly for all blocks.
- Plotter clones now keep their size when dragged.
- Left over created animation objects now get cleaned up while opening model.
- Blocks no longer jump when clicked on after clicking on another application.
- New model endTime is no longer 10, but 1000 like the Simulation Setup value.
- Autoscrolling now works with either an object being dragged or the cursor selecting a hidden area outside the view.
- Having a block's Properties dialog open and behind the worksheet no longer causes a crash.
- Cloned datatables now have a grow table icon.
- Corrected the issue where animation would sometimes progress in the wrong order on certain connections.
- Plotter error messages no longer prevent the placement of a new Optimizer block on a model.
- You can now delete clones while the model is running.
- Dragging a clone to a block now works even if you drag the clone to an animation object.
- Newly created animation objects, which have their bounds undefined, now have their original bounds set to their new bounds..
- Linking 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)
- Added block Help.
AR constants v10.h (Advanced Resource Management)
- Added the new constant AR_RANK_FIELDNAME which is used in the Resource Requirement Expressions table.
RM constants v10.h (Advanced Resource Management)
- Added new constant RM_BLOCKINGRESOURCES_DATABASENAME.
- Added c_ExportResourceClasses_BTN_name and c_ExportResReqExpressions_BTN_name constants.
- Updated c_SRRD_numArguments_i from 10 to 11.
RM database v10.h (Advanced Resource Management)
- Added a new function RMdBprc_deleteBlockingResourcesDBs to delete blocking resources database from model.
- Created a new procedure RMdBprc_exportPoolResourceResults to export Pool and Resource table results to separate tables.
- Created a new function RMdBfcn_validateExpressionGroups to validate resource requirement expressions table use to auto-generate ARM requirements.
- Added new field to specify the associated filtering condition when creating RRexpressionGroups in RMdBprc_createRRexpressionGroups procedure.
- Relocated the procedure deleteGroupFromDatabase from the Resource Manager block to this include and renamed it RMdbPrc_deleteGroupFromDatabase.
- Added 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)
- Added a new procedure RMdlg_enableDisableButton.
RM functions v10.h (Advanced Resource Management)
- Added logic to assign previously reassigned resources to a higher priority item in RMfcn_doesResHavequantityToAllocate.
- Added a qualifier in RMfcn_serviceWaitingOrder for reassigned resources to filtering condition for checking whether to service the resource order.
- Added new logic in RMfcn_checkResourceReassignment to accommodate resource reassignment from one resource order that already has reassigned resources to another.
- Updated RMfcn_isResourceQEblocker to include "reassigned" resources as blockers.
- Created new function RMfcn_getRREexpressionGroupRec used for auto-generating resources.
- Added new argument to RMfcn_createNewFilteringCondition to allow for the specification and lookup of the filtering condition name.
- Added new logic to reduce overhead from string searches in RMfcn_executeResourceChange.
- Added crecordIndexChangePropertyName to support enhancement to dynamic resource change functions.
RM message handlers v10.h (Advanced Resource Management)
- Restructed the code for the query for AR_GETBLOCKINGREQUIREMENTRESOURCES_ACTIONTYPE in BLOCKRECEIVE7 to get a list of resources blocking a resource requirement from being satisfied.
- Added a new call in RMmsg_onTabSwitch to RMdlg_enableDisableButton to manage a new button for exporting the [Resource Classes] table.
- Set the new checkbox ExportResultsToSeparateTbls_chk to True in the CREATEBLOCK message handler.
- Changed a parameter in the call to RMfcn_addResources to force auto-generated resource names to be distinct in the RMprc_addResourceClasses procedure.
- Created a new procedure RMprc_deleteBlockingResourcesTables() to delete the tables created during a simulation run in the blocking resources database.
- Added error checking for property specifications and sequences when auto-generating resource requirements in RMprc_setupResReqExpressionData.
- Do 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)
- New logic added to RMprc_SchedServiceWaitOrdersEvent to prevent rescheduling events for blocks that have already been scheduled.
- New logic added to reduce string-based searches in RMprcexecuteResourceChanges and RMprcchangeResourceProperty.
- Eliminated 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)
- Added the ability to filter data on schedule in continuous models.
- Corrected 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)
- Added the ability to filter data on schedule in continuous models.
- Changed 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.
- Improvement: The Histogram has now the option in multi-run Only end values like the Scatter.
CHART_DB_ValuesFromDB v10.modl (Chart library)
- Increased 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)
- Added more details to error messages about the setting of the bins in the Histogram.
- The minimum axis should be the one set in the block if it is not supposed to be calculated.
- Lifted 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.
- Bins only being constructed during the first run is too restrictive. This condition has been lifted.
CHART_HIST_CONN_DataOptions v10.modl (Chart library)
- Improvement: The Histogram has now the option in multi-run Only end values like the Scatter.
- If 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
- Added 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
- Corrected a mistake in naming of a function - should be CONA_OnConArrayChangedComplete instead of CONA_OnConArrayChangedCompleted.
- Added a constructor for the variable connector declared per position with each position linked to a different parameter.
- Added a constructor to reset data within includes before calling any other constructor.
- Added the use of new include: Miscellaneous general tools
- Added a public function to gather the connected block# of a given connector.
Constants v10.h
- GetDialogItemInfo with which==11 returns the position of the tab the dialog item is in (starts at 0).
- Added new costing constants.
DBDI DB selection from DI v10.h & DBDI DB selection from DI v10.h.modl
- To avoid having to declare the necessary includes in the main, do it conditionally within the include.
- Added a separate function to clear info before constructors. It is useful when constructors can be called from multiple includes.
- Improved code: New DBDI_onLinkContentWithIndexes allows the use of parameters as inputs.
Dialog utilities v10.h
- Added a variable value field to the table created by dlg_buildModelDialogVarsTable.
Includes • Fixes
Diverge Merge v10.h (Rate library)
- Added 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)
- In 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.
- According to the Executive global rule, the value of UpdateEachStep_chk needs to be changed in blocks.
Tank and Attribute v10.h (Rate library)
- In 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.
- With 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.
- When initializing Attribute Layers, if cINIT_CONTENTS_WITHOUT_ATT_VALUES and an outflow connection is made, avoid ending up with 2 empty entering layers.
- When 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.
- If a previous entering layer is empty, do not remove the layer when updating the quantity in the layer, do it right after the calculation.
- When 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.
- When 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)
- Animation 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).
- A 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.
- When initializing Attribute Layers, if cINIT_CONTENTS_WITHOUT_ATT_VALUES and an outflow connection is made, avoid ending up with 2 empty entering layers.
- Use 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)
- For icon ID animation, changed " - " (space dash space) to "-" (no space dash no space).
EB Procs (Reliability library)
- After committing, be open to more Link Alert messages.
EVT Procs (Reliability library)
- Only show Node Interrupt options if the node has more than one event cycle.
- Changed the meaning of ISDAttribEciIDpop from ECC.
RBD DB Component & RBD DB Start Node v10.h (Reliability library)
- The name stored in the ID - Component Name field in the Component Set table needed to be altered.
RBD DB ECI v10.h (Reliability library)
- Corrected 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)
- Corrected formatting for SDEventsTblNodeBlockName_txt.
- Redesigned the Event Status table. It is now called Event Cycle Instances and has different fields and p-c relationships.
- Added an availability field to RBDDBRsltsEventSumTbltxt.
- If 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)
- When 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)
- RBDDBNEvtReg_EventsList[] was getting sorted by blockNum instead of compID. This has now been corrected.
RBD DBN Start Node v10.h (Reliability library)
- A 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)
- SD_EventsTbl_NodeBlockName_txt was getting assigned a name to it that contained spaces which was causing an incorrect evaluation of it.
- Column headings in SD_EventsTbl_ttbl are now conditional.
- Conditional popup heading when adding a new event cycle instance for the Node-DE Interrupt.
- Added block Help.
- Don'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.
- SDEventsTblttbl and SDIntsTblfrm row indexes should start at 1.
- For now, hide SDIntsTbl dialog items.
- SDEventsTblNodeBlockName_txt was getting assigned a name to it that contained spaces which was causing an incorrect evaluation of it. This has now been corrected.
- Only show Node Interrupt options if the node has more than one event cycle.
- A row must be selected before attempting to set block icon view in the subsequent call to SDEventsTblBlockNum_Get(topRow).
- Don't ever set a schedule or shift event to N/A because those two always ignore interrupts.
RM database v10.h (Advanced Resource Management)
- Added a check for "Expression Group ID" in RMdBfcn_validateRREproperties().
- Created a new procedure RMdBprc_updateFieldProperties to update field properties in Pools and Resources tables.
RM dialog v10.h (Advanced Resource Management)
- Added the new procedure RMdlg_initializeFCpopups() to standardize the initialization of filtering condition popups.
- Added error checking for filtering condition popup variables that forces initialization if popup values are out-of-range.
- Added a call to RMdlg_populatePropertiesSourcesPopup in RMdlg_populateListOptionsPopup.
- Added a call in RMdlg_refreshDialogVariables(string tabName) to setDialogVariable to force the initialization of the ResourceGroup_POP popup.
- Created a new initialization procedure RMdlg_initializeMaxTextWidth to initialize maxTextWidth array. Added a call to this procedure before making calls to Dlg_setTableDisplayDimensions.
- Added a new procedure RMdlg_initDialogRefreshVars to initialize refresh management data structures.
- Added a call to RMdlg_hideUnusedDialogVariables() in the procedure RMdlg_setDialogVarsVisibilityInTab.
RM functions v10.h (Advanced Resource Management)
- Modified RMfcn_checkResourceReassignment to get the resource order ID from the resource's current value in the [Resources] table in.
- Added logic to accumulate cost per unit time in the new variable rM_costPerUse_releasedResources for released resources.
- Added a condition in the function RMfcn_getNumFCsInGroup to check to ensure the requirement expression property is equal to the quantity property.
- Added logic in RMfcn_executeQuantityExpression for testing results of quantity expression to depend on whether a procedure was executed from dialog.
- Added logic in RMfcn_executeQuantityExpression to prevent allocating less than minimum allocation quantity specified for the resource.
- Fixed the uninitialized variable problem in RMfcn_createNewFilteringCondition.
- Added explicit setting of count-based Resource Pool fields in RMfcn_addResourcePool.
RM message handlers v10.h (Advanced Resource Management)
- Initialized refresh management data structures with a new call to RMdlg_initDialogRefreshVars().
- Added setting of SysGlobal29 to rM_costPerUse_releasedResources to support resource-based item costs when releasing resources.
- Added a call to RMdlg_hideUnusedDialogVariables() in the RMmsg_onTabSwitch() procedure.
- Changed the timing of when RMdlg_setDialogVariableLabels is called in RMmsg_onTabSwitch().
- Fixed the constant used to control sizing of checkbox titles in RMmsg_onTabSwitch.
RM procedures v10.h (Advanced Resource Management)
- Fixed the logic in RMprc_changeResourceProperty to check if the property being changed dynamically during a simulation run is a custom resource property.
- Cleared the reference to child resource order when releasing a resource order in RMprc_releaseResourceOrder(integer resourceOrderRecord).
- Added loop terminating condition when searching for matching property values in RMprc_setupResReqExpressionData(real i_arguments_ptr, real r_arguments_ptr, real s_arguments_ptr).
- Added code to set the rank value of a resource requirement in the RMprc_autogenResourceReqs procedure.
- Initialized the static variable rM_costPerUse_releasedResources in RMprc_ReleaseResources procedure.
- Added a condition in RMprc_autoGenerateResources that the RRE table must have records in it.
- Updated the RMprc_changeResourceProperty procedure to allow for resource shifts to be set to NULL/BLANK.
RP procedures v10.h (Resource Pool)
- Fixed error message outputs in RPprc_validateTotalResourcesCount.
- Fixed accounting for pending capacity changes including converting pendingCapacityChange from integer to real.
- Updated the user error message in RPprc_updateStaticVariableValue.
CHARTBARCONN_DataOptions v10.modl (Chart library)
- Updated the width of the columns after a possible change of name for categories or series.
CHARTBARCHARTCreateAndAddNewPoint v10.modl (Chart library)
- When 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)
- When 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)
- Fixed 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)
- Fixed 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.
- Increased 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)
- If setup recording during the simulation, the resize of the table might not be enough causing an error message. This has been corrected.
- In 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.
- The 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.
- The option cCHART_HIST_UPDATE_AT_END_SIM now works properly.
CONAManageConnectorArray v10.modl, CONAManageConnectorArray v10.mox, CONAManageConnectorArray v10.modl, & CONAManageConnectorArray v10.h
- In CONA_TrueIfConnected, it was returning an error code of 0 instead of the -1 expected.
DBDI DB selection from DI v10.modl
- If 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.
- In function call DBDI_RemoveDBSelectionUpTo, the dialog values were not erased, only the internal data within the include. The dialog has to be blank also.
- In 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.
- In 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.
- To avoid looping in LinkContent and LinkStructureNone initialize values for flag.
Equations v10.h
- Call GetSimulateMsgs(TRUE) if model is continuous.
- Changed the UserError wording for describing when the equation cannot find the specified include file.
- Enhanced the search for prototypes in users' include files.
- Fixed a bug with tracking the right Link Alert input variable name.
lp_solve v10.h
- Changed 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)
- Added area counting.
Resource Pool Release (Item library)
- Added 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)
- Protected the code in the Rate library including moving some includes to a Not installed folder.
End Node (Reliability library)
- Added the down(CS) output value connector. It is needed for proper communication with the Valve block.
Start Node (Reliability library)
- Added 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)
- The 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)
- Updated 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)
- Corrected calls to prgSVT_OnPrg_dtbl().
Executive (Item library)
- If SA_Names_ttbl is out of bounds, it will ignore user clicks.
- When there is a problem, it will break out of string attribute loop.
- There 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)
- Now allows the pulling of upstream items for the first (currentTime=0) scheduled event by setting diConToPullItemsFrom[i] = True.
Resource Manager (Item library)
- Forces the total allocation time to be equivalent to the total busy time.
- For now, in RMprc_updatePoolStatusTime, set the total quantity allocation time equal to total busy time.
Resource Pool Release (Item library)
- Changed the order in which SetupDialog is called in the DIALOGOPEN message handler.
- Added an ELSE case for setting transaction log table field indices when a table already exists.
Shift (Item library)
- Moved 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)
- Fixed 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.
- Fixed 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)
- Fixed the getting flag so it happens after the return.
Unbatch (Item library)
- Must 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)
- If 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)
- Cleaned up the call sequence for setting up Excel objects in XL_populateNamedRangesPopup and XL_populateTableNamesPopup.
- Fixed 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.
- Replaced existing GUID for ADO COM DLL so it will work with 64-bit COM DLL.
- Hid the dialog checkbox for using an embedded object.
- Added a condition in DIE_refreshExternalfieldListTable to ensure that XD_TableName_prm is blank before exiting from the procedure.
Equation (Value library)
- oVarsOut_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)
- If 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.
- Problem 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)
- If a whole row is being read whole row, the reference point has to be results_StartCoordinate_prm – not "1";
- Embedded objects are no longer supported in ExtendSim 10.
Scenario Manager (Value library)
- Allow row=-1 to accommodate scenario table headers row click events in the DIALOGCLICK message handler.
Equation-Based blocks in the Value library
- Corrected RCC Functions.h for equation-based blocks.
Convey Flow (Rate library)
- To 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.
- For improved accuracy, fixed an issue where it might not test if next the event is too close to current time.
- It 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.
- srLastTime_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.
- When 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)
- Corrected 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)
- Removed 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.
- Corrected 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.
- Changed how occLog and reports are managed across multiple runs because simulation runs were slowing down when occLog got too big.
- In occLog, we changed the ID field to not be a unique record ID field in order to speed things up.
- Fixed a bug with data management for the event log.
- Corrected 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.
- Fixed 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)
- The around me tables were displaying block numbers instead of Node ID's. This has now been corrected.
All blocks in the Chart library
- The minimum and maximum for axis is now properly kept in between runs.
Application • New and Improved Features
Block Structure
- Updating hierarchical blocks on open models now has a "Please wait…" dialog so you can see its progress.
- Rotation of an animation object in the icon view now rotates the animation object on the model.
Miscellaneous
- Allow multiple library blocks to be added to the model via copy/paste from the library window.
- Optionally include page numbers when printing.
- Added 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
- Fixed ExtendSim 9 to ExtendSim 10 model and block conversion issues where connectors were added or eliminated in a block.
- Fixed crashes when converting very large, pre-ExtendSim 10 models.
- Reading pre-ExtendSim 10 models now correctly converts dynamic arrays of reals correctly.
- Old box connectors from older library blocks can now connect to new item connectors when reading in older models.
Relating to Blocks and Hierarchical Blocks
- Improved the functionality of scrolling data tables.
- Equation debugging error messages now refer to the correct offending blocks.
- Chart datatables are now updating correctly.
- Repaired models that had hierarchical blocks that when the Properties dialog was opened, it would corrupt the hierarchical block.
- Fixed dialog items showing through to the wrong tab.
- Animation objects created by code were not showing after copy/paste or Make Selection Hierarchical commands. This has now been fixed.
- Cloning of dialog items now correctly obeys properties dialogs.
- Clones don't disable dialog items when dialog items are disabled by code.
- Fixed issue of false message about multiple includes in Equation blocks.
Database
- No longer sends unneeded database data or structure messages to blocks if creating records during importing.
- Fixed a double-click crash that might happen when there were no tables in the database when in Data View mode.
- When right-clicking on a table header, don't change the existing database table selection.
- Undo now works when creating and deleting database relations
- Fixed a crash that might occur when opening a database that has some tabs removed.
- Selecting from a list of tables field now keeps the field visible.
Block Structure
- When editing a block's structure, clicks in the Dialog Editor no longer changes dialog items.
- ModL code to track scrollbars in different tables now works precisely.
- Dialog item connection to Stat::Fit now updates properly.
- Radio button column tags now displays properly.
- When reducing the number of connectors in a block, models no longer show partial connections.
- Selected connectors in the Icon tab are now more visible.
- Radio button and checkbox bold styles clear correctly when styles are removed.
Miscellaneous App Fixes
- Player RunTime version does not allow changes in dialog tables.
- Fixed problem with animation objects created by code.
- Eliminated crash when aborting the opening of a hierarchical block worksheet.
- Fixed some licensing issues that were preventing activation to be completed.
- Improved the explanation of licensing error messages to help users complete the licensing step.
- Corrected an issue that caused model animation to occasionally travel in reverse.
- Fixed situations where the model was not set to dirty - changes weren't saved when the model is closed.
- Navigators now update correctly when changing models.
- More windows now remember their positions when reopened.
- Improved stopping model runs that would continue when the Stop button was pressed or abort functions were called.
- The simulation status bar now reports the correct number of runs if the simulation is stopped or aborted.
- Fixed simulation message order so it is the same as ExtendSim 9, but with additional message handlers.
- Successive randomized seeds (seed 0) are now different no matter how closely in time they are created.
- Pasting a model with an Executive block over another model no longer crashes.
- Changed qt.conf file so changing the Windows settings for screen resolution and zooming works better.
- Added more color to improve the visibility of selected text and other objects.
- Fixed a bug where clicking Help opened the wrong block's Help.
- Improved the wording for several error messages and dialogs.
- Added warning, and an option to Open or Cancel, when opening a model that had been created or saved in a newer release
- Equation blocks no longer falsely report that include files were being used twice.
- Breakpoints window doesn't get lost when switching monitors.
- During model open, identifies models that have multiple outputs connected using named connections.
- Notebook 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)
- Replaced the dialog for a multi-run trace: Removed checkboxes and replaced with options per the Trace For Run column.
- Improved code: Added a new function which returns if data can be collected by looking at disable recording and window recording options.
- Improved scaling: Found a more elegant number for scaling limit.
- Option 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)
- Replaced the dialog for a multi-run trace: Removed checkboxes and replaced with options per the Trace For Run column.
- Improved code: Added a new function which returns if data can be collected by looking at disable recording and window recording options.
- Option 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)
- Improved scaling: Found a more elegant number for scaling limit.
- Option 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)
- Propagation starving and/or blocking the Convey Flow block is now treated as a Tank and or an Interchange. Limitation is not necessarily both ways.
- Corrected 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.
- The 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)
- The 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.
- Improved the error message that informs which block is linked to a specific section.
Tank functions v10.h (Rate library)
- Corrected 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.
DBN Start Node v10.h (Reliability library)
- Fixed 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)
- Corrected 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.
- Fixed selection of a row in the event cycles table in a component block.
RM functions v10.h (Advanced Resource Management)
- Total allocation time is now forced to be equivalent to total busy time.
RM procedures v10.h (Advanced Resource Management)
- For now, in RMprc_updatePoolStatusTime, set total quantity allocation time equal to total busy time.
CHART_BAR_CONN_DataOptions v10.modl (Chart library)
- Fixed 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)
- Corrected 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)
- If 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)
- Scaling 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.
- Scaling during initsim is done differently if it's a Bar or Line Chart.
CHART_TRACE_CreateAndAddNewPoint v10.modl (Chart library)
- The minimum and maximum for axes is now remembered between runs if necessary.
RPM dialog v10.h (Report library)
- Block 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
- If error message during open model then it aborted the initialization, abort has to be replaced by return.
CONA_Manage_ConnectorArray v10.modl
- Change from an error message if failed function to return -1, it allows more flexibility in the timing of some calls.
RP procedures v10.h
- Added 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)
- Can now generate one item, then wait.
Queue (Item library)
- Centralized all calls to dlg_setDialogTabSize(GetCurrentTabName(myBlockNumber())) to setupDialog.
Resource Manager (Item library)
- Added new logic to release reassigned resources when the items they are allocated to get renegged from.
Select Item Out (Item library)
- When changing how to select the branch or to add branches to the block, the default values set in the block are now more likely to be correct.
Data Import Export (Value library)
- Block any attempt to do anything with Excel at end of a simulation run if DLG_AutoImportExport_chk is NOT checked.
Lookup Table (Value library)
- Added checking for proper connections to the input depending on whether option Input Value or Time is selected.
Scenario Manager (Value library)
- Added more restrictive range checking on a row clicked in DIALOGCLICK case for the scenarios table.
Convey Flow (Rate library)
- Added ContentsLastTime_prm to the dialog so you know what time the last content update was done.
- Added a Disable quantity checking checkbox. The Convey Flow block accumulates product according to density and attribute value. If the two ways of counting product doesn't match, this block will stop the simulation and give an error message. If the difference is negligible and you would prefer the simulation to continue even with a mismatch, you can use the Disable quantity checking checkbox to disable automatic checking.
Valve and Flow (Rate library)
- For debugging purposes. we've added the ability to keep going in recursive mode to be able to follow the recursive loop if debugger code is turned on in the block.
Event Builder (Reliability library)
- Added Edit Instances Table and Commit Instance Changes buttons to help users change event cycle instances for all RBD's in the model.
Start Node (Reliability library)
- Added three new ways to display the Event Log found on the Results tab of the Start Node block.
- Added the ability to change RBD database table names.
- Added the ability to add new RBD databases as a way of organizing Reliability data.
- Improved and simplified the interface on the Event Cycles tab.
Popups (Utilities library)
- Updated Connector Value on ConnectionMake/CONNECTIONBREAK Message Handlers so even if the simulation is off, the connector value can be updated.
Block • Fixes
Create (Item library)
- Corrected Array Exceeded Dimensional Bounds error when clicking on prg_dtbl.
Information (Item library)
- Fixed Animation so when toggling between Off and On, if simulation is not running, the animation would not turn back on.
Resource Manager (Item library)
- Added logic in RMmsg_onShiftSchedule to properly account for status changes of allocated resources that are not residing in Activity blocks when shift changes occur.
- When a resource is transitioning to busy and is currently attached to an item in an Activity block, pending status is set to idle.
Resource Pool (Item library)
- Fixed a problem with shift status transitions and resources not yet released when the pool goes off-shift and the input connector receives an input to change the resource quantity of the pool.
Select Item Out (Item library)
- Corrected the issue that GotItem was not initialized to 0 at beginning of the simulation, then the first call in itemIn could block any item going through.
Convey Flow (Rate library)
- When creating the LP constraint, the block should not only consider the flag siConveyorIsFull, but should also look at the effective content of the block. At any given time, the block could be full with an output rate greater than the input rate. The flag for conveyFlowFull is then False, but logic should consider it full; otherwise it's at risk to accept more flow than possible in the block.
Event Monitor (Utilities library)
- To get the number of event posting blocks in a model call GetDimension() on the TimeBlocks[] array instead of the TimeArray[] array.
Queue Tools (Utilities library)
- Opening a model created prior to ExtendSim 9.3 or ExtendSim 10 would remove data from InitAttribsValue_ttbl. Data needed to be recovered from a model in older version.
Application • New and Improved Features
Context (right-click) Menus
- Copy Name puts the name of the (cloned or regular) dialog item onto the clipboard.
- Go To Definition in block structure works the same as the Go To Function/Message handler command in the Develop menu. It tries to find the message handler for that dialog item in the code. If it finds it, it switches to the Script tab. If it can't find it, it does nothing.
- Open Linked Database Table works for dialog parameters linked to an ExtendSim database.
Menu Commands
- Develop > Break to Debugger immediately opens the debugging window if libraries are compiled with debugging code and you are running a model or starting some operation in a block's dialog.
- Changed the names of the License commands in the Help menu to make it clearer that these commands only control the licensing, they do not uninstall ExtendSim.
- Library > Library Tools > Set Library Version now supports changing versions for multiple libraries.
Database
- For database data tables, inactive and active cell selections now show the same.
- Added number of records indicator (r:nnn) after table name title.
- Improved datatable update speeds when linked to a database table.
Block Structure
- The Script tab will remember if you maximized the area by hiding dialog variable names.
- Hovering over a Modl function in the Script tab displays a tooltip of the function and its arguments.
Miscellaneous
- Added the ability to print a text file.
- Popup menus no longer have limits on the maximum number of characters they display.
- Added 64bit Add.dll (built in C++), the AddDLL project, and Add.mox files. Updated the DLLAdd block in the ModL Tips library.
- More responsive user interface during the simulation run.
- Added Abort All Sims button in error messages that come up during a simulation run.
Application • Fixes
Converting Models to ExtendSim 10
- Converting a model from ExtendSim 9 that was saved while it was paused could fail.
- Fixed many multi-threading issues.
- Hierarchical blocks that were in libraries and contained equation blocks, did not convert correctly from ExtendSim 9.
- Prevented many types of crashes when reading ExtendSim 9 corrupted models during 9 to 10 model conversion.
Relating to Blocks and Hierarchical Blocks
- Default tooltips on hierarchical block connectors were showing zero. They now show the correct value.
- The Key in Chart blocks should not clip when Y2 is displayed.
- Fixed a problem with narrow popup menus in block dialogs.
- Fixed an issue with too many digits in real numbers in data tables by limiting significant figures to 14.
- When row and column headers are selected, ExtendSim will now output both even if it's a small selection.
- Improved the precision of block profiling in the Real Timer block.
- Fixed a crash with Chart blocks that contained functions.
- Fixed dialog box buttons so they animate correctly and also send messages when the mouse is released, like in ExtendSim 9.
- In a dialog box, during text or parameter editing, the Enter button will just stop editing and will not also close the dialog box.
- Disabed popups will no longer respond to the mouse wheel.
- Equation block labels will appear in the correct position when using many variables.
- Clones were not respecting their disabled status.
- Sensitivity was missing inside of hierarchical blocks.
- Select All command was missing in scripting windows.
- Equation blocks now handle names used both as input and output variables.
- Popup menus are now working great when created by InternalPopup() and called from DialogClick.
- Cloned datatables are now being updated correctly.
- Datatables no longer get time units mixed up with generic time units.
- Sped up closing the Editor in equation-based blocks with large equations.
Database
- Fixed the inserting of new database table fields before the last entry of a field list.
- The Database table now updates when inserting new fields using the DBFieldCreate() function.
- Triangular distribution in the database now shows Most Likely instead of Most.
- Creating and modifying empirical distributions will be working better.
- Relation connections should now be in the correct place.
- Database tables now allow zero field width so fields can be hidden.
- Some database random distributions were missing needed parameters, such as Location.
- Read only fields were allowing checkboxes to change value.
- Database percentage format now handles and converts numbers like ExtendSim 9 used to.
- Copying data from database tables with a partial selection now can include both row and column headers.
- Cloned linked datatables are now updating completely.
Block Structure
- Ctrl-F should work even when the script widget is not active in the structure window.
- Find Block dialog could crash if opened in the structure window without any models open.
- Fixed intermittent issues with Shift Selected Code Right/Left keyboard equivalents.
- The Find command is now more responsive in block structure window tabs.
- Blocks in models will now more accurately reflect animation changes done in block structure.
- Adding or removing connectors in a block's structure will work correctly when reading models in.
Miscellaneous App Fixes
- The Zoom value is maintained when switching from Worksheet to Notebook tabs.
- Improved how Bump Connect works.
- Improved stopping a model run.
- Moving a line sometimes moved just a point rather than the whole line, but no longer.
- Linked parameters in the Debugger could show the wrong value.
- Fixed how some Cancel buttons related to clones caused crashes.
- OK and Run buttons were not functioning in the Run Setup dialog.
- Error messages during a simulation run were missing the Abort button.
- Increased the maximum size of windows so zoom is more effective in seeing larger worksheets.
- Fixed crash when quitting with Find Dialog open.
- Double-clicking models with periods or spaces in their name will no longer cause a problem.
- Message emulation works during FINALCALC message.
- Switching tabs in models no longer affects the zoom level.
Functions • New
NotebookItemRect
NotebookItemInfo
NotebookItemInfoString
NotebookItems
DBDatabaseOpenCell
Functions • Improved
DBTableExportData now allows the including of field names in an exported database table.
StringTrim supports a Which value of 3 for trimming all white spaces.
Tag_Color added as a value (24) for column tags.
Tag_Progress added as a value (23) for column tags.
DBTableImportData can also be set to ignore field names in the first row of data.
Functions • Fixes
SelectBlock() and SelectBlock2() were not selecting and not scrolling to selected block.
MakeArray() and MakeArray2() functions were not updating 64-bit pointers in some cases, causing crashes.
DLLMakeProcInstance() and DLLMakeProcInstanceLibrary() would sometimes fail even if called correctly.
DILinkUpdateInfo function could sometimes report the wrong origin block during LINKDATA LINKSTRUCTURE message.
- OpenDialogBoxToTabName function will now bring the dialog tab to the front if it is already open.
FindInHierarchy() greatly sped up as this function is used by Resource Pools and other blocks.
getBlockTypeNumeric(), getBlockTypePosition(), and blockName() functions were ignoring hierarchical connector text blocks.
DBFieldMove() function used incorrect field index in some cases.
SelectBlock() and SelectBlock2() were not selecting nor scrolling to selected a block.
Fixed EDSimTimeToDate() function when an input was close to the next whole value.
Fixed functions that convert simulation time to date.
GetModelPath() now returns a correctly formed path in all cases.
ListCopyElement() no longer causes crashes.
Linked list indexing now works for extremely large indexes.
BlockName() now works correctly with named connections or text blocks.
Message Handlers • New
UserMsg10-19
FinalCalc2 is an additional message that is sent to all blocks after FinalCalc completes.
Includes • New
Flow v10.h / Valve.cm (Rate library)
- For debugging purpose only: allow to keep going in recursive mode to be able to follow the recursive loop if debugger code is turned on in the block.
ColumnTags v10.h
- Added new column tags to the constant list: TAG_PROGRESS_BAR (23); TAG_ECOLOR_PICKER (24).
DBDI DB selection from DI v10.modl
- When changing where the database registration needs to be handled, this gives the option to update or remove the existing registrations.
lp_solve v10.h
- Improved the error message that failed to ask the user to run the application as an administrator when loading a dll.
Includes • Fixes
To determine that you are in the first Effective Rate propagation, we used to rely on SYSFLOWGLOBALINT25==0. This is not necessarily the case anymore. Now, we are using SysFlowGlobalInt17 to flag the first propagation.
There was a problem when the indicator has a 0 quantity layer as it would not be triggered. Indicators are now triggered properly even for 0 size indicators.
In ExtendSim 10, the animation for direction was not showing properly during a simulation run. Be sure to use z-order to make sure animations show properly with the right layer order.
When copying a block into a new model, the global array siListTCBlocks_GA might not exist causing an error message. First, check if the global array exists and index legit to avoid the error message.
CHART_CONN_VariableInputConn v10.modl (Chart library)
- To avoid writing a point twice, this include will check to see if a point has already being written at the start of a simulation.
CHART_CONN_VariableInputConn v10.modl (Chart library)
- There was an error in the Scatter Chart at the beginning and ending of a simulation run that instead of writing the point x,y it wrote y,y.
CHART_DATA_Management v10.modl (Chart library)
- In a multi-run situation, during initialization from one run to another, data for none run specific trace/Bar was not reset properly.
DBDI DB selection from DI v10.modl
- When a Record ID is used in a Field, sometimes the type returned was different than the target Field.
- When Table or Field were renamed, we fixed how the name tracking code did not update the block selection properly.
Equation v10.h
- Two noValues can be different values.
- Setting CMC_OVars_ValuesOld[] AFTER oVars_Values[] has been initialized. Why? Because CMC_OVars_ValuesOld[] is being used to determine if the results from calling an equation to calculate caused a change in the values of the output connectors.
From ExtendSim 10.0.3 to 10.0.4 • Released on March 19, 2019
Blocks • New and Improved Features
Executive (Item library)
- The error message gives more information when lpsolve.dll cannot be loaded.
- Initializes sysGlobalInt75=0 in ModifyRunParameter for Reliability library.
Reliability library
- Blocks now use a static unchangeable number as the database identifier.
Advanced Resource Management (ARM)
- Users can execute, during a simulation run, any of the functions that can be manually performed in the Resource Manager block's Resources tab (see the Change Resources table).
Block • Fixes
Item library
- Throw Item block • Was not allowing a new item attribute to be selected.
- Fixed ARM problem with the execution of resource requirements having "OR" conditions.
- Fixed how the Resource Manager's Policies tab displays when changing allocation policy.
Chart library
- Changed the default filtering for each trace to "last point" rather than "no duplicate", since that is a more common setting.
Rate module
- Fixed a problem where Merge and Diverge blocks could wrongly interpret the propagation of a change in Flow attribute values.
- Stops simulation with an error message if model is in a recursive loop (any Rate block calculating more than 150 times at the same clock time).
- Merge block • Now properly propagates downstream when upstream attribute value changes.
Application • New and Improved Features
Developed using a newer version of the UI environment (Qt 5.11.3) that has security updates.
3 new functions added: OpenNotebooks2, DBTabGetTableIndexList, DBGetSize.
Opening multiple include files now cascade file locations.
Error message windows default to OK instead of Go To Debugger.
Worksheet windows in Hblocks placed from libraries have better default sizes.
Activation Dialog retains user information between activations.
Increased the maximum scripting line numbers to 99,999.
Added a new substitutionListUser.text which will not get replaced by updates (use this if you have moved a block from one library to another or have renamed the library).
Edit > Options > Misc tab has a new option: Black value connectors to convert Value connectors to solid black.
Added arguments for the EDDateToString function to better accommodate European formats.
Changed Help > Update Activation Key command to Help > Reactivate License.
Dynamic text dialog items can now be resized in the block structure.
Added finalCalc2 message; sent right after finalCalc.
Application • Fixes
Resolved some important memory leaks that should improve performance and prevent out of memory problems.
Block numbers could change during model read in unusual circumstances.
Auto opening structure of uncompiled block wasn't showing dialog tab correctly.
Resolved some issues with empirical distributions in database cells.
Clicking on the database list would sometimes open more than one database.
A database link to a table with a string lookup column tag could fail to draw properly.
Should be impossible to 'drop' an item off the edge of the worksheet.
Block help would sometimes return the text for the wrong block.
I-beam cursor should appear in approximately correct position when an equation reports an error.
Dropping a document on some ExtendSim document windows from the explorer would not always open the document.
Cursor Position window was not always visible in Chart windows.
Switching icon views should hide connectors that are hidden in the structure.
Clone selection works better when using Make Selection Hierarchical command.
Selecting a connector in the icon pane of a hierarchical block structure could sometimes cause a crash.
Fixed possible crash when debugging equations.
Fixed a crash when a model with an open Random Number block was showing the plot.
A ripped-off dialog tab was not accepting cursor actions.
Stopping simulations should happen quicker.
Calling Abort in a PasteBlock message handler will abort the entire paste, not just the block calling Abort.
- Cancel button is disabled during a simulation run.
Fixed the Cancel button in block dialogs so it doesn't keep increasing block memory size.
Editing with no changes no longer sends dialog item message to blocks for parameters and edit text.
Hovering over an invisible connector could send the block a ConnectorToolTip message.
Debugger stack could sometimes show the wrong code.
Debugger window position adjusts if outside application frame.
Structural animation object changes should update to existing blocks better.
Animation during endSim and finalCalc should show even with animation turned off.
A new model will now remember its initial size when you switch to a notebook and back.
Dynamic Text dialog:
- Disabled Dynamic Text dialog items support copy of all text.
- Properties dialog contains correct items.
- Added ability to resize dialog items in the block structure.
Obsolete date functions now show block number of calling block in error message.
Continue button in Find Dynamic Links dialog shows correct text.
Clicking the Enter key when editing a parameter or editable text was stopping the editing, closing the dialog, and sending two messages to the block. Now it should just stop the editing and send one message.
Moving and selecting the Signal Key in Chart should be easier.
Fixed EquationCompileDynamic producing a spurious error message in some cases.
- StringFindDynamicStartPoint could crash in some cases.
- EDStringToDate function has been optimized.
- OpenAndSelectDialogItem now selects the specified dialog item better.
- CurrentSim should have the correct value when a simulation is aborted.
Dragging a dialog item over a block icon could fail if the worksheet was scrolled.
For consistency with ExtendSim 9:
- SendMsgToBlock just returns rather than reporting an error on bad block numbers.
- Block sendSimulationMsg flag initialized to true.
- FinalCalc/AbortSim messages are now sent correctly when a simulation ends normally or is stopped.
- Animation Level object should show maxed out when set to higher than.
- FindInHierarchy should no longer fail to find certain blocks.
From ExtendSim 10.0.2 to 10.0.3 • Released on February 11, 2019
Blocks • New and Improved Features
Chart library
- Bar Chart • You can now define an angle for the Axis values that is saved in the block code.
Report library
- Cost Stats • Added the option only blocks at this level of hierarchy and below.
Rate module
- Set(R) • Added checkbox so you can set to Blank all non-used Flow attributes.
Reliability module
- Allows multiple RBD databases in one model, so tables can be split between the databases.
- Allows copy/pasting of an RBD, automatically copying over all necessary DB information.
- RBD’s can now be saved into hierarchical blocks and stored in libraries, carrying forward all DB info.
- You can now collapse and expand an RBD.
Blocks • Fixes
Item library
- History • Creating a DB table of the History resulted in an extra empty record at the end of the table that caused problems with the Statistics block.
- Throw Item • To save memory it now disposes attribPopContents dynamic array when it can be disposed.
- Convey Item • Checks that Distance Ratio is not set by 3D, as this option is not available.
- Activity • Corrected spelling in UserError message about Preemption checkboxes in OK message handler.
Value library
- Lookup table • Block did not work if set to Time and table was not DB linked but used Calendar date.
- Lookup table • Fixed compatibility issue between ExtendSim 9 and ExtendSim 10 so that for continuous models setting time and discrete behaves the same as time and stepped, since discrete is meaningless in continuous models.
Chart library
- Bar Chart • Some dialogs would not be updated correctly if change setting during the simulation.
- Bar Chart • Fixed a problem when 3-connector option is selected and action on how to deal with wrong received values on connectors were not identical (Bar Value and Series or Category values).
- Custom plotter trace colors should now convert from ExtendSim 9 correctly.
Report library
- Cost Stats • To speed up execution use the ObjectIDNext function instead of looping through all Object ID.
- Cost Stats • Fixed that, in the case where options Append New Updates and Update Every xxx are checked, the accumulation of cost would be duplicated.
- Reports Manager • Prevents more than one Reports Manager block from being placed in a model.
Rate module
- Set(R) • Allow the block to have no Attribute defined in the dialog table.
Application • New and Improved Features
Zooming support using Ctrl + mouse wheel.
More Undo capability for ExtendSim database operations.
New size parameters for ExtendSim database tables and fields, in their Properties dialogs.
New Properties dialog for cloned dialog items.
Editing in a Properties dialog now selects the object being edited.
The Enter Selection command used in Properties dialogs now works with Find command.
Additional control over Bar Chart labels (color, angle, etc.).
Revert Model warning now defaults to OK.
Pausing a model should respond quicker when animation is turned on.
Improved depiction of non-expandable variable connectors in Structure window’s Icon View.
Database list window / library windows interaction improvements.
Improved Shift-click functionality when selecting multiple objects.
Dangling connection lines should work better (extending and connecting).
Go To Definition on right-click in Script window should be working better.
Single block models no longer close when second model opens.
After run ends, Status Bar displays Simulation Setup's End time and Runs.
You can stop the conversion process if you double-clicked a previous release's model file.
Application • Fixes
Control blocks (Slider, Switch, Meter) working better.
Fixed cloning and dialog issues with the Switch dialog item.
Block Help window now closes when the application quits.
- ListLastElementIndex function could return the wrong value.
Random seed values in Simulation Setup dialog were sometimes incorrectly treated like real numbers.
Improved Date/Time values in the Simulation Setup dialog for non-English languages.
- DELETEBLOCK messages could be sent twice when deleting hierarchical blocks.
- COPYBLOCK message was not implemented.
- OLDFILEUPDATE message sent more correctly and consistently.
Very large models deal better with Window’s resource limits.
Database copy and paste should maintain indexes better.
DB_RENAMED and TABLE_RENAMED LinkStructure messages now only sent if the name actually changes.
Database checkbox fields could return a value of 2 for True.
Objects being blocked from moving off the edge of the worksheet should work better when scaled.
Dialog Item names in the Structure window were incorrectly reporting a too long error when the name was edited.
- IPCOpenFile function could have path issues.
- SetVisibilityMonitoring wasn’t working correctly.
- BLOCKSELECT and BLOCKUNSELECT not sent during Make Selection Hierarchical.
- LinkStructure message handler wasn’t always getting the dialog item name of the dialog item that was changed.
Fixed title of X axis on Chart blocks when they show Date/Time settings.
VMWare® and Parallels® on the Mac had issues when launching 10.0.2.
Fixed spurious errors when running multiple models at the same time.
Prevents Runs (NumSims) in the Simulation Setup from being set to 0.
- PlaceTextBlocksInHBlock and placeBlock no longer leave items selected.
Fixed a crash when trying to draw a connection line from one window to another.
Continuing random number sequence now works with database random cells.
The Field_Renamed message was being incorrectly sent when a new field was added to the database.
Two Field_Renamed messages were being sent when the DBFieldRename() function was being called.
- NumericParameter function was not displaying the information string passed in.
- DBRelationsGetNames function was interpreting the relationship index incorrectly
Holding the mouse button down while making a connection line was selecting blocks.
Invalid EndTime values in the Simulation Setup dialog will report an error.
- openAndSelectDialogItem was opening the dialog, but not selecting parameters.
Corrected problem with European vs USA number notation in Simulation Setup.
Issue with exporting empirical named distributions.
App could sometimes crash if dynamic arrays in block structure were reordered between ExtendSim 9 and ExtendSim 10.
Loading a DLL now reports the Windows error number if it fails.
- IPCGetDocName function didn't get file name after IPCOpenFile called with "" name.
Message Handlers • New
HBLOCKFROMLIBRARY2 • Sent immediately after HBLOCKFROMLIBRARY
HBLOCKFROMLIBRARY3 • Sent immediately after HBLOCKFROMLIBRARY2
HBLOCKSAVETOLIBRARYAS • Sent when a hierarchical block is being saved to a library
Functions • New
AnimationPIxelSetEColor
WorksheetSettingGet
WorksheetSettingSet
PlotterValueSet
PlotterValueGet
From ExtendSim 10.0.1 to 10.0.2 • Released on November 13, 2018
Fixes
Resolved issues for cloned dialog items:
- fixed ability to delete a clone
- clones now default to visible and enabled when created
- corrected right-click context for Chart block clones
Added time-only date values to the Line Chart block.
Improved the performance of Sensitivity Analysis and when connecting multiple lines to a single connector.
Fixed potential crash if quickly clicking Enter after making dialog change.
- Save command now works if a torn-off Notebook is the active window.
Improved ability to stop simulation run after getting certain error messages, plus removed Debugger button unless in debugging mode.
Added error message if trying to close a model while hierarchical block structure changes are being applied.
Corrected the saved state when using block substitution.
Improved the data table width calculation.
Fixed issues when creating/editing/debugging block structure: checking dialog item names for invalid characters, was crashing if positioning cursor in text box while getting compiler errors or if using copy/paste while using a resize tool in Dialog tab, fixed appending and deleting tabs in multi-tab dialogs and possible crash on close model after debugging.
Fixes to functions: GetDialogNames crashed if called on a non-block, EDCalendarDateGet wasn't working, IconGetView and IconGetViewName now work with hierarchical blocks, UserPrompt returns 0 or 1, AnimationPixelRect default color is now white, repaired StringCase's upper/lower case issue, PlaceBlock was failing when called for a block from a protected library.
From ExtendSim 10.0.0 to 10.0.1 • Released on October 23, 2018
Fixes
Converting certain types of ExtendSim 9 models sometimes caused a crash.
Simulation Setup dialog now properly saves changes when clicking the OK and Run button.
If a model hasn't been saved, the first save is now the same as a Save As.
Trying to open a model that was missing some blocks could sometimes cause a crash.
Improved Animation Text when opening ExtendSim 9 models.
Animation pixel rectangles now initialize to gray when ExtendSim 9 models are converted.
Removed the previous model's name from the File Open dialog when issuing an Open Model command.
New Features
PlotterSignalValueSet and PlotterSignalValueGet now support line thickness.
Clicking Alt+O in the Script tab of a block's structure now opens the Edit > Options > Script window to customize the script appearance