Imagine That Inc. was founded in 1987 to develop and market Extend and its successor ExtendSim - the first simulation application to allow users of any discipline to use simulation and to develop their own libraries of customized simulation tools. In 2024, ExtendSim was acquired by ANDRITZ, Inc. - a globally leading supplier of plants, equipment, automation solutions and services to a variety of sectors.
The ExtendSim Team has been dedicated to bringing the art, science, and fun of simulation to the desktop, in a form digestible and accessible by everyone. ExtendSim was the first user-extendible simulation package that met those expectations. Over the last 3+ decades, ExtendSim has continued to innovate, establishing many other firsts in the simulation industry.
Follow along to learn how ExtendSim has become the powerful simulation tool it is today:
Extend 1.0 -- released 1988
- Graphical user interface (GUI) for model building.
- GUI integrated with a simulation programming language for custom development.
- Includes libraries of blocks (modeling components) for template-based simulation.
- Blocks are pre-compiled and open source.
- Interactive during model run.
- Extensive list of simulation-specific and general purpose functions.
- Compiled programming language with message handlers
Extend 1.1 -- released 1989
- Added discrete event capability in Extend 1.1.
- Import/export data using menu commands.
- Additional support for batch and Monte Carlo simulations.
- Bi-directional flow of data at connectors.
- Copy and paste blocks and model segments onto the worksheet.
- Autoscaling of plots.
- Global variables and ability to pass arrays through connectors.
Extend 2.0 -- released 1992
- Hierarchical model building - unlimited layers of submodels.
- Notebook for documentation and centralized input/output.
- Cloning (functional duplicates) of dialog items onto worksheet or Notebook.
- Customizable 2D animation of block icons.
- Messaging architecture for discrete event blocks.
- Controls (sliders, switches, and meters) for interactive modeling.
- Global functions and processes so blocks can communicate without connections.
Extend 3.0 -- released 1994
- Sensitivity analysis.
- Customizable reports and trace files.
- Dynamic interface to Microsoft Excel.
- Create, open, and edit text (ASCII) files.
- Include files so developers can simplify library maintenance
Extend 3.1 -- released 1995
- Windows 3.1, 95, and NT 3.5 compatible version.
- Throw and Catch blocks - pass discrete event items without connections.
- New Statistics library featuring confidence intervals, clearing statistics, random seed control, etc..
- Preemptive transactions and reneging queues.
- New DLL functions.
Extend 3.2 -- released 1996
- Dynamic data exchange (DDE) for Windows and AppleEvents for Macintosh.
- Native support for the Power Macintosh.
- Long file names for Windows 95.
- Tool tips for tools, blocks, and block dialog items.
- New Popup Menu dialog item for block developers.
Extend 4.0 -- released 1998
- Activity based costing.
- Tabbed dialogs and dynamic data tables.
- Global and local time units.
- Hot-link to Microsoft Excel and other apps.
- Popup lists of animation objects for discrete event items.
- Resource pools.
- Direct linking to distribution fitting programs.
- Support for 2.5D animation, with Proof Animation.
- Scripting to programmatically place, connect, and move blocks.
- Global arrays and scriptable wizards for developers.
Extend 4.1 -- released 1999
- Enhanced Find capability.
- Right mouse button support.
- Arrow keys to move blocks on worksheet.
- Improved dialogs in Queue blocks.
- Line number displayed in ModL code editor.
- Color coded comments in ModL code editor.
Extend 5 -- released 2001
- Optimizer introduced - open source.
- Shift block for scheduled shutdowns.
- New Help system and electronic documentation.
- SDI Industry Flow library for rate-based modeling.
- SDI Industry database for data management.
- Drag and drop support for ActiveX controls, OLE Automation.
- ODBC support.
- Interactive source code debugger and over 100 new functions.
Extend 6 -- released January 23, 2003
- Explorer-type model Navigator.
- Zoom /expand control button.
- Run multiple models simultaneously.
- Save intermediate results.
- Multiple icon views.
- Hide/show block connectors.
- Object rotation and colored borders.
- Code completion and colorization.
- Override functions and message handlers.
- Linked lists.
- Watchpoints in source code debugger.
ExtendSim 7 -- released December 5, 2007
- Product extensively remodeled; product name changed to "ExtendSim".
- Added 3D animation with over 100 pre-built 3D objects, plus sounds, shadows, and trails.
- Next generation integrated, graphical, relational databases for managing data.
- Dynamic data links (DDL) between block dialogs and ExtendSim database tables or global arrays.
- Next generation Item, Value, and Rate libraries replace Discrete Event, BPR, MFG, Generic, and Flow libraries.
- Scalable blocks, connectors, and tables.
- Unified interface for data source management using Read/Write blocks.
- More extensive statistical reports, plus mouse over connectors to view input or output values during run.
- Unlimited number of inputs/outputs for equation blocks.
- Calendar dates and times.
- String and database attributes.
- Enhanced data table interface for input/output (column tags)
- Use of LP technology to provide global oversite for calculations in discrete rate modeling.
- #IFDEF and #IFNDEF statements for conditional compilation.
- Watch points on arrays; debugger jump.
ExtendSim 8 -- released July 12, 2010
Scenario Manager • One of the more notable features added to ExtendSim 8 was the Scenario Manager. It gives the MOST COMPLETE understanding of how a model reacts to different factors. Explore projected outcomes as the Scenario Manager varies model inputs. Results change as the input changes; thus, run multiple experiments with the same model.
Essentially, the ExtendSim Scenario Manager keeps track of multiple what-if models, all based on the same model. It does this by assigning a named scenario to each combination of variables you choose to examine. For example, create best-, worst-, and typical-case assumptions for input values. Then recall each of these scenarios to see how the model behaves under different conditions. For comparative analysis, recall scenarios in combination, such as best-case sales and worst-case costs.
Enhanced Equation capabilities
- The Equation Editor was added to most equation-based blocks as a separate, scrollable window to view, enter, and edit equations.
- Equation-based blocks got their own debugging tools so you could now set breakpoints and conditions for equations, step through lines of code, and examine values of variables.
- When a set of commands (definitions, assignments, or functions) have multiple uses, the added ability for equation-based block to call include files simplified model maintenance. These include files allow functions and message handlers to be overwritten and compilation to be conditional.
Query Equation blocks • Sophisticated tools to search database tables for the best record appeared in ExtendSim 8 with the introduction of the Query Equation and Query Equation(I) blocks. These blocks have proven to be indispensable when a database holds information that is required for making decisions in a model.
New blocks introduced in ExtendSim 8
- Block Info • Reports information about the block connected to its input connector.
- DBStatistics • Calculates a set of basic statistics for all of the records in a database field.
- Event Monitor • Displays the event calendar in discrete event models, revealing the event times for all event posting blocks.
- Link Alert • Registers a section of a database so that the block receives a message when data in the linked database changes.
- Model Interface • Creates an interface for controlling a model.
- Memory Usage • Calculates the amount of memory required for each block, global array, or database table in the model. It is helpful in locating where memory is being used in large models.
- MYOB DB Dialogs • Shows how to develop ExtendSim database popup menus.
- Slider • Provides a flexible slider for models. It can be cloned to the worksheet or Notebook, be linked to a database, and more.
Shift-Click • Time-saving Shift-Click was added in 8 to open a dialog in which you may choose which block or feature should get a given variable. Shift-Click an appropriate dialog item to add variables to the Find, Optimizer, Scenario Manager, and Statistics blocks as well as for Sensitivity Analysis and in custom block development.
Plus many user-requested functions, system variables, and message handlers.
ExtendSim 9.0 -- released July 17, 2013
Statistics (DB) Report • Statistics (DB) report contains final values for output parameters. Statistical data from each simulation run is stored in an ExtendSim database, organized by block type so that there is one table per type of block. Blocks included in the report can be all blocks in the model or a user-defined subset of the blocks. Report tables can be exported to external databases or Excel when the simulation is complete.
Of course, ExtendSim’s existing text-based reports have been maintained, but the new Statistics (DB) report provides better organization, presentation, and accessibility of model results.
ADO Database Support • Communicate with the most commonly used external databases. ActiveX Data Objects (ADO) provides built-in import and export support for Microsoft Access, SQL Server, and MySQL. ADO sends an entire table of information at one time, providing high-speed data interchange.
ADO is faster and easier to use than ODBC and it does not require defining a data source name (DSN) before accessing data. It automatically configures the ExtendSim database when importing and the external database when exporting. Plus mirrors fields and records between the source and its destination.
For example, here is the dialog of the Data Import/Export block configured for ADO Import from a SQLServer database into an ExtendSim database. The ADO interface is designed so that the modeler can access an ADO database by adding a Data Import/Export block to the model and selecting the internal and external data sources.
Flow Attributes • Enhancing ExtendSim’s unique discrete rate technology, flow attributes track the properties of the type of product that is modeled as a continuous "flow" in a discrete event environment. Examples of flow include bulk material such as grain or ore, liquids and gases, and product in a high-speed production line. A flow attribute is a quality or characteristic of flow that stays with it as it moves through the model, such as type, product, color, and so forth. Flow attributes provide information about the flow and allow you to organize quantities or volumes of flow into layers. The entire set of attribute values assigned to a particular layer is what distinguishes it from other layers. In other words, all the units of flow in a layer possess the same set of flow attribute values.
Flow attribute usage includes:
- The flow held in a Tank can be organized into individual, distinct layers. This allows you to control where incoming flow is deposited and which type of outgoing flow next exits.
- Flow can be routed through the Merge and Diverge blocks based on flow attribute values.
- Attributes are assigned to the flow by the model builder. They become linked to sections of flow that pass through the blocks, according to settings in the blocks’ dialogs.
- The flow held in a Tank can be organized into individual, distinct layers. This allows you to control where incoming flow is deposited and which type of outgoing flow next exits.
Excel Add-In • The ExtendSim DB Add-In for Excel works with database text files to transfer data between an ExtendSim database and Microsoft Excel. Excel has become the ubiquitous repository for simulation data and is often used for ad-hoc analysis. However, because of performance and scalability issues, Excel is a less-than-ideal database. To bridge the gap between Excel as a data repository and the ExtendSim database, we created an Excel Add-In that allowed exported ExtendSim database text files to be imported into Excel for editing, then exported back to ExtendSim.
ExtendSim 9 featured an entirely new version of the Add-In that supports most of the construction and editing features available in ExtendSim. This means that you can completely specify a new ExtendSim database in Excel, including parent/child relationships, cell randomization, named distributions, and more. Afterwards, export the database for use in ExtendSim models. In addition, the new Add-In leverages the latest Excel features such as ribbon interface, XML-based file format, and 1 million rows/16,000 columns. Plus, database consistency checking is now faster and has expanded capabilities.
Item Logging • Track items and their states as they move through a simulation. In addition to the existing ExtendSim trace features, the Item Log Manager (ILM) block supports customized data collection and report configuration from within ExtendSim by doing two things:
- During the simulation run, the ILM block directs other blocks in the model to collect data on items as they pass through. These “remote” data collecting blocks include History, Activity, Queue, Queue Equation, and Resource Item. Each of these blocks can be remotely instructed to collect specific item property information for the ILM through its “Data Collection” tab.
- Once the remote blocks have collected the data, the ILM packages it into a report. You can control which types of data are included in the report and the order in which the data appears. This is done on the ILM block's “Configure Log” tab.
Once the run is complete, any number of reports can be generated from the data that has been collected in the remote blocks. These reports can be generated after each run either automatically or manually. Item loggingAny number of ILM blocks can be used in any one model with each ILM block responsible for generating its own report. The ILM also supports generating reports across multiple runs.
Templates Library • Speed up model building by using pre-built templates for common modeling situations. These templates are actually submodels within hierarchical blocks - constructs created in ExtendSim by combining just a few blocks together.
ExtendSim’s Templates library blocks are similar to standard blocks in that they contain an icon, help, blocks, and animation that can be used directly by the modeler. However, they contain the combined functionality of many blocks. As with any ExtendSim block, simply drag a block from the Templates library into the model and change the parameters to reflect a specific modeling situation.
Template library blocks include:
- Activity (cycle-based shutdown)
- Activity (load / unload)
- Create (arrivals vary by time)
- Queue (batch all items)
- Queue (dump contents)
- Queue (hold until quantity reached)
- Queue (random renege)
Smart Connections • Intelligent connection line control better automates the modeling process when moving blocks around. Imagine That has developed a series of features collectively called smart connections that allow the modeler to quickly and easily modify models by moving blocks into strategic positions.
- Bump to Connect • When a block from the Item or Rate library is placed in the model and its input connector is placed on an output connector of the same type, ExtendSim will automatically connect the blocks, spaces them evenly, and aligns the connectors.
- Auto Insert • Drop a block onto an existing connection line so either the block's input or the output connector is on that connection line. Smart connections will increase the spacing between the existing blocks and insert the new block inline between two existing blocks.
- Connection Routing • If a block is moved, ExtendSim will reroute the connection lines so they will not cross over the icon of the block.
New Blocks Introduced in ExtendSim 9
- Get(R) Rate library • Supports the Rate library's new flow attributes feature. The Get(R) block displays either multiple flow attributes from one location or one flow attribute from multiple locations.
- Set(R) Rate library • Supports the Rate library's new flow attributes feature. The Set(R) block is for setting value or string flow attributes.
- Meter Utilities library • Provides more flexibility and features than the Meter control (Model>Controls>Meter). For example, the color and pattern of the indicator change when the current value has reached specified high and low values. Use the Meter block as a progress bar or to animate a hierarchical block
New Features Added in ExtendSim 9
- Equation-based blocks
- New input and output variables in equation-based blocks.
- Options added in equation-based blocks that provide more control as to when the equation executes.
- Data import • New options for importing a named range of data from Excel.
- Interval statistics • Record the mean, variance, confidence interval, and standard deviation at specific intervals during the simulation using interval statistics.
- Quantile statistics • Can now be calculated within ExtendSim.
- Multi-component failure modeling • New options are available for multi-component failure modeling.
- Functions & message handlers • There are a number of new functions and message handlers.
User Interface and Block Enhancements
- String Attributes
- If a change is made to the value of a string attribute, all the blocks that were referencing the old attribute value will now reference the new value.
- If the index for the value of a string attribute changes (the order of the values for the string attribute change), all the blocks that were referencing that value will be alerted to the change in location.
- Changes to string attribute values defined in the database are now error checked at the beginning of the run. This provides more freedom to manipulate databases without having to worry about losing critical pieces of information.
- A new string attribute interface in the Executive block allows modelers to make global changes to string values that are referenced in other blocks in the model.
- Speed Improvements
- Models with blocks that don’t have Simulate messages execute faster in ExtendSim 9.
- Linked list optimization speeds up the performance of Item library queues and the blocks in the Rate library.
- Other Application Enhancements
- ExtendSim Database • Automatically resizes itself based on the number of rows in the imported data.
- Variable names • The upper limit of the variable name length for static and local variables has been increased from 63 to 127 characters.
- Data tables • Double-clicking the upper left cell of a data table linked to a database goes directly to the database view of that table.
- Block Profile • Reports results even if the simulation ends prematurely.
- Shift capabilities • ExtendSim’s shift capabilities are enhanced and interfaced with additional blocks.
- All ExtendSim blocks • Have been enhanced so that fewer blocks are required to build many models.
- E3D • Mount nodes on custom 3D objects have been increased from 8 to 20.
- Enhancements to Equation-Based Blocks
- Additional input and output variables in most blocks.
- New checkboxes in the Options tab control the execution of the equation.
- Equation blocks now support static variables that have been declared in include files.
- Query Equation (AT and Suite only) has new input variables.
- Value Library Enhancements
- Data Import Export
- Incorporates the new ADO capability.
- New option to import named range from Excel spreadsheet.
- Database field names can be exported to Excel.
- When importing from Excel, the number of rows in the database automatically adjust.
- Mean & Variance
- Collects interval statistics for a specified time period. At the end of the period it reports the calculated statistics, clears the statistics, and begins a new reporting period.
- Has quantiles so you can see what proportion of the observations fell within an interval.
- Data Import Export
- Item Library Enhancements
- Residence blocks - Activity, Queue, Queue Equation, and Workstation • Added variable item input connectors to each block to allow the merging of multiple item streams. This functionality works the same as the Select Item In block’s Merge option.
- Activity
- Two new value inputs:
- PC (Processing Cost) allows users to target different processing costs on different items.
- CPI (Cost Per Item) attaches a unique CPI to each item.
- One new value output:
- TE (Total Items Exited)
- If preempting with items, attributes on the preempting item can be transferred to the preempted item.
- Two new value inputs:
- Executive • Added variable connectors for events.
- Gate • Now allows the Shift block to control its behavior.
- History
- Provides more control over data collection in ExtendSim 9, plus has new options for handling data storage in multi-run scenarios.
- A checkbox on the Options tab causes data to be stored in a database table at the end of each run.
- Query Equation (I) (AT and Suite only) • Added targeted querying and two new input variables.
- Queue Equation • Gained new input and output variables.
- Queue Matching • New "recipe" building and batching capabilities added.
- Read (I) and Write (I) • These blocks have new options for querying where to read and write data.
- Scenario Manager (AT and Suite only) • Supports the optimal design of experiments (DOE) method for Minitab 16, a statistical software product from Minitab Inc.
- Shift • Allows modelers to display a symbol on block icons if a specific Shift block is used.
- Shutdown
- Separate and independent polices can be specified for both Shift and connector-based scheduled shutdowns.
- Off-shift downs (OFD) connector reports the number of shutdowns due to off shifting.
- Accumulated off-shift downtime (OST) connector reports the amount of time the block has been down due to off shifting.
- The “multiple components” option has new capabilities:
- The matching feature allows one master failure table to represent multiple failure points in a model.
- Summary failure data for each component.
- Component state and dependency/independency options.
- Block state versus component state reports.
- Transport • Now has an option to prevent items from passing each other when traveling through the block.
- Rate Library Enhancements
- Flow Attributes
- Characteristics of the flow such as type, product, color, and so forth can be associated with each specified volume of flow.
- Two types of flow attributes are supported: layer and string layer.
- Contents tab • Each Rate block that holds/provides flow has a Contents tab showing the attribute values of its flow by volume.
- Interchange • Now includes a matrix for converting item attributes into flow attributes and vice versa.
- Tank • Provides multiple options for defining how the incoming and outgoing flow should be layered.
- Flow Attributes
New Functions, Message Handlers, & Global Variables • In addition to the functions listed below, include files are useful when creating custom blocks. To see a block’s include file, open the block’s structure. Then give the menu command Develop > Open Include Files.
New ModL Functions
- blockRect
- clearUndo
- DBAddressGetAllIndexes
- DBDatabaseOpenViewerToTab
- DBDatabaseTabChangeName
- DBDatabaseTabDelete
- DBDataGetCurrentSeed
- DBDataSetCurrentSeed
- DBFieldExists
- DBRecordExists
- dialogRefresh
- EquationCompileSetStaticArray
- fileChoose
- INetFileImportText
- INetOpenURL
- lastSetDialogVariableString
- whoInvoked
- WinSetForegroundWindow
New Message Handlers and Global Variables
- ModifyRunParameter
- BlockReceive5-9
- SysGlobal20-29
- SysGlobalInt30-59
ADO (ActiveX Data Object) Functions • These functions are used to communicate between ExtendSim and external databases. They are not part of the ExtendSim application but instead are located in the “ADO_DBFunctions v9.h” include file.
- ADO_Setup
- ADO_Close
- ADO_OpenConnection
- ADO_GetNumTables
- ADO_GetTables
- ADO_GetTableColumns
- ADO_SetTableColumns
- ADO_AddRecords
- ADO_SQLServerGetServers
- ADO_SQLSserverGetDatabases
- ADO_CreateTable
- ADO_GetFields
- ADO_GetNumRows
- ADO_GetNumFields
- ADO_ExecuteNonQuery
- ADO_ExecuteQuery
- ConvertADODataType
- ConvertExtendSimDataType
- DB_FieldGetTypeString
- ADO_CheckCompatableFieldType
ExtendSim 9.1 -- released February 10, 2014
Smart Blocks
- Right-click on the output connector of an Item or Rate library block and this feature will pop up a list of suggested blocks to connect to.
- Uses ExtendSim scripting functionality and an adaptive learning algorithm to seamlessly generate and continuously update the list of suggested blocks based on how you model.
New blocks
- History(R) Rate library • Records a history of rate values over time.
- Model Compare Utilities library • Compares model results before and after running a model.
Enhanced blocks
- Real Timer Utilities library • Analyze model performance using the block profiling capability added to the Real Timer block.
- Data Import Export Value library • Wild Card feature for table and worksheet names in the Data Import Export block.
Automated test environment
- Simplifies the process of comparing simulation results between two ExtendSim releases – it identifies any differences between models that were saved in a previous release and those same models run in the new release.
- Compares simulation results before and after making changes to a model.
- If there is no Results tab, the entire dialog is used.
Improved Smart Connections
- Bump to Connect automatically connects a new block to an existing block and spaces them apart.
- Auto Insert inserts a new block between two existing blocks and automatically increases the spacing between them.
- Enable/disable Smart Connections using an option in the Edit > Options > Model tab.
Improved Auto Route Connection Lines
- Intelligent connection line control anticipates how you want the connections between Item and Rate connectors to behave when you move blocks.
- Enable/disable Auto Route Connection Lines using an option in the Edit > Options > Model tab.
New/changed options in the Edit > Options > Model tab • Both options only apply to Item and Flow connectors (Item and Rate library blocks)
- Auto Route Connection Lines
- Smart Connections • Bump to Connect and Auto Insert
New and changed functions and message handlers
- Message handler
- OldFileUpdate • Sent if the file version is older than the application version.
- Functions
- ProfileBlockGet • Returns the block profile results for a specified block.
- GetRunParameter • Similar to GetRunParameterLong except returns a real rather than an integer.
- ConArrayGetNthCon2 • Same as ConArrayGetNthCon except it has an additional argument to specify the connector on a different block.
- GetBlockTypePosition • Two new values for Type: 5 (embedded object) and 6 (blockControl)
File format change • Due to architectural changes in ExtendSim 9.1, files created and saved in 9.1 are not backwards compatible so are not readable by ExtendSim 9.0.
ExtendSim 9.2 -- released Feb 13, 2015; updated Nov 16, 2017
Improved performance and precision
- Data Specs Value library • Modified so it tightly restricts conditions under which an entire database or table can be registered, decreasing runtimes.
- Executive Item library • A new method for reusing deleted item indexes enhances performance for discrete event models.
- Read(I), Resource item, Set, Write(I) Item library • Improved runtimes by increasing performance.
- Interchange Rate library • Enhanced precision.
Value library
- Data Specs, Equation, Read, and Write • Added right-click ability to automatically add a named connection.
- Equation • If equation debugging has been turned on, a red box shows up on the inside of an equation's icon.
- Mean & Variance • Added first value as the initial value for time weighted statistics.
- Write • Significantly modified and improved exporting to text files.
Item library
- History • Checkbox saves memory by disabling the recording of information during a simulation run.
- Queue Matching • Transfers ARM resources from inbound items to non-preserved batched items.
- Transport • The Do Not Pass option is now available when the delay is set, not just when speed or speed and distance is selected.
Rate library
- Diverge & Merge • Two new options to maintain outflow attribute values - when inflow effective rate is 0 and when all attribute values are Blank.
- History(R) • Checkbox saves memory by disabling the recording of information during a simulation run.
- Valve • Added a shutdown option, utilization statistics, and pie chart animation option. Plus information when the quantity and goal quantity had last been calculated and option to ignore a new goal under specific conditions.
Plotter library
- Plotter, Discrete Event • Added a checkbox that saves memory by disabling the recording of information during a run.
Utilities library
- Model Compare • Added "Ignore blank values in original model" checkbox.
- Pause Sim • Resume option can also initiate a model run. New button runs the model if it is not running, pauses if it is running, and resumes if paused.
- Real Timer • Snapshot option creates a profile each time the block receives a message.
New function & Message handler
- DLLMakeProcInstanceLibrary • Includes the library name so the user can specify in which library to look for the routine.
- BlockSelect message handler
Quality and Stability Improvements • In addition to adding new features in the 9.2 release, we improved its quality and stability. Just a few of the fixes include:
- Calling RunSimulation on a model while it is already running no longer reports an error.
- In the BlockMove message handler, changing selected blocks could ocassionally cause the rest of the moved blocks to not receive the message. This has been corrected in 9.2.
- OLEGetNames and OLDGetDispatchNames no longer crash if one of the names is longer than 31 characters.
- Extend Block Profile file is created in Documents directory, not Application directory, for permissions issues.
- The BLOCKUNDELETE message is now sent after all undeleting has been completed, rather than being sent to each block as the undeleting process proceeds.
- When manually changing a random cell, the random seed will now correctly take on the new value.
- When using more than one connection message type simultaneously (CONNECTORTOOLTIP CONNECTIONMAKE, CONNECTIONBREAK, and CONNECTIONCLICK), the resulting values of ConnectorToolTipWhich() are now correct.
Update to 9.2 on November 16, 2017
Released a revised DLL for Windows 10 Fall Creators update, release 1709.
ExtendSim 9.3 -- released June 25, 2019
ExtendSim 9.3.1 was released on October 28, 2019 to correct some minor issues in 9.3.
New and improved application features
- New functions • DLLUnloadLibrary and EquationCompileDynamicVariablesSilent
- New message handler • PasteBlock3
- New system globals • SysGlobalInt60-79, SysDBNGlobalInt0-19, SysARMGlobalInt0-19
- Data tables linked to database tables use some of the database formatting for cell display.
Changes to blocks in multiple libraries
- Separated constants DILinkinfo and DILinkUpdateinfo.
- Added static variable change detection.
- Added more controls, reports, and error messages.
- Updated the relative positions of constants.h and attribs v9.h.
- New includes: Static Variable Mgt – Functions, Static Variable Mgt – Prototypes, Static Variable Mgt – Variables, Dialog Utilities
Value library
- Data Import/Export • Added connectivity to Oracle database. Plus, over 70 fixes and enhancements to this block as it was extensively updated; see the list of comments at the top of the block's script tab for details
- Data Source Create • The resize button provides the ability to add columns now as well as rows.
- Lookup Table • Almost 30 fixes and enhancements to this block as it was significantly updated; see the list of comments at the top of the block's script tab for details.
- Math • Added the option to ignore BLANK if selected the operation in OR.
- Random Number • Several changes were made to the Random Number block to make empirical distribution work better. Plus, changed the block from a static array of 1000 rows to a dynamic array.
- Read • Added register content and structure to "on PasteBlock" because a pasted block was not getting registered.
- Scenario Manager
- Added logic to enable having multiple Scenario Manager blocks in the same model. Plus the ability to distinguish the "active" Scenario Manager from an inactive one based on which block's "Run Scenarios" button was clicked.
- Created a new RECORD option where whole records can be copied from a source to a target table.
- Added code to LINKCONTENT message handler and supporting functions to ensure that changes to database factor source tables during modeling initialization are transferred to target tables.
- Added code to prompt for response names when adding clones or dragged dialog variables.
- Adjusted the size of the target response table to match the number of scenarios being run.
- Write • Added new options for specifying the record index: last record and last record+1. Plus, added the ability to re-dimension text files.
Item library
- Activity
- Added connector: Values_Out_Num_In_Proc
- Added checkbox: PE_AR_When_Reassign
- Improved block performance by making 3 calls to AnimationHide() conditional.
- Batch
- Added feature in the Options tab that when Preserved uniqueness is checked, the list of batched items in an attribute is stored in an index of global arrays.
- Batch block now delays the clearing of the item's list of batched items until the item has departed.
- Create
- Supports “on AttribInfo” for RndDb_AttributID_pop.
- Checks if the distribution parameters change druing the run.
- Queue • Added new static bookkeeping variable for internal consistency checking static variables.
- Queue Equation
- Changed the valuesIn connector to a connector array.
- Added a "C" Capacity connector.
- Queue Matching
- Set default value of con_BinReqOptions_Pop to Con_Bin_Req_Options_use_Curr_Val.
- Updates lengthOut during run when a Shift is requested.
- Resource Manager
- Added logic so the user can create parent-child relation for custom properties.
- Added logic to release reassigned resources when the item they were assigned to is reneged from the Queue.
- New arguments added for the new fractional resources feature.
- New message handler to auto-generate resources, pools, groups, and properties.
- Added new dynamic array to support a new function.
- Created new function RMfcn_getAvailableResources to get a list of available resources for a specified resource requirement.
- >Updated RMmsg_OnBlockReceive7 to create a list of available resources and store that in a database table, plus the ability to respond to a request to dynamically change resource properties.
- Resource Pool
- Added a new transaction logging feature and checkbox in Results tab.
- Added call to AR_setDBindexes.
- Accounts for off-shift resources when determining if resource number needs to change.
- Select Item Out
- Performance improvement: update animation icon only if the block shows attribute on icon.
- Added a "C" Capacity connector.
- Shutdown • Added message sending whether going down or up.
- Transport • Stopped block-to-block animation if animation is on and Add Connection Line Animation is also on.
- Unbatch
- Behavior change: If Use Preserved Items to Determine Unbatch Quantities is checked and the item has no preserved info, the global array is now also -1 as well as 0. Also changed that if a cost or rate attribute has been defined as Distribute, the values have to be divided.
- Workstation • Made some animation calls more conditional to speed up this block’s performance.
Rate library
- Multiple Rate Blocks
- FlowAttCurrentContent_dtbl is now linkable to a database.
- If a recursive condition is detected in a Rate block, the simulation run will stop.
- Added a re-entrance flag to avoid the code getting into a loop when it gets a linkContent message.
- Updated the sections when OpenModel and changing TC connections occur at the same time.
- Updated some dialogs so a cloned Content table’s Link button would be hidden.
- Get(R) • When comparing two reals, it now also checks for Blank.
- Set(R)
- Added an option to easily erase all attributes when necessary.
- Now the dialog table allows you to not define an attribute rather than return an error.
- Throw & Catch Flow
- Added a checkbox in the Throw block to cause its label to mirror the label of its enclosing hierarchical block.
- Now checks for blank before transforming into integer; give value -1, checks if link to database field that is an integer.
- Valve
- Results tab shows when quantity and goal quantity were last calculated.
- Added a Shutdown option in Options tab and a checkbox to Flow Control tab to deal with blank or negative values.
- Results tab calculates additional results.
Utilities library
- Buttons • Added a button so animation is turned on or off depending on animation status.
- Find & Replace
- When you click on the first column of the dialog table it opens the block’s dialog.
- If the dialog item selected is a data table, allow to select a row and column then a value can be searched/changed.
- Link Alert
- Added support for link structure, new addressOut array connector, ConnectorSetup(), and tooltips.
- Changed addressOut into a connector array.
- Meter • Can now animate either horizontally or vertically.
- Model Compare • Added the option to ignore the difference when an old value is blank and not new value because it is most often a new dialog item created in the newest version.
- Popups
- Added additional calls to SetPopups to fix issues when hBlock is updated.
- Caused connector values to always be updated even if simulation is not running.
- Queue Tools • Allow users to add/delete rows in the properties table in Options tab.
- Record Message
- Added NumberDifferences parameter to show differences from one run to another.
- Add a limit to the number of logged differences and the ability to add rows to adata table only when necessary.
New Includes
- Added code for ADO_SetConnectionID and ADO_OracleGetSchemaObjectType to ADO_DBFunctions v9.h and COM_DBFunctions v9.h.
- Added Attrib_Info_Changes_Complete to Attribs v9.h and a check for _ItemIndex in Attribu_CheckReserved.
- Added “which” argument values for DTColumnTagGet function call in Column Tags v9.h.
- Added new Excel and other constants to Constants v9.h as well as new info indexes for top and left location for GetDialogItemInfo.
- Added new functions to Database v9.h.
- Multiple enhancements made to the Equation v9.h include.
Quality and Stability Improvements • In addition to adding new features in the 9.3 release, we improved its quality and stability. Just a few of the fixes include:
- DBGetDataAsString returns a zero if it’s a child field and no parent is selected.
- Bug fix in dateTime functions for unusual overflow condition.
- Some of the matrix functions had row and column arguments reversed.
- Volume keys on keyboard could insert null characters into scripts.
- Windows could sometimes go above the toolbar.
- OpenDialogBoxToTabName sometimes had a refresh issue.
- GetBlockMemSize could crash if an invalid block number was passed in.
- Datatable linked to a database table didn't deal well with percent formatted fields.
- Poking a safeArray to ExtendSim via OLE/COM should work better than in 9.2.
- Datatable dialog item message send to block when you tab to a cell.
- Copying data from datatables had issues with empty cells in the middle of the data.
- Could sometimes get an extra empty model when you created a new model.
- Changes made to dialog parameters in DialogClose message handler weren't saved.
- Model should require a Save after you make a connection.
ExtendSim 10 -- released October 12, 2018
User Interface
- Whole new look and feel! Complete rewrite of the ExtendSim application using an industry standard IDE (Integrated Development Environment) and a cross-platform framework.
- Moveable docking tool palettes for Shapes, File and Edit menus, Text, and more.
- Tear-off menus – e.g. Default Connection Style, Tools.
- Tear-off Notebooks, model worksheets, etc.
- Multiple Undo/Redo.
- Improved graphic objects – new color selector, free rotation (Alt click on resize box), transparency/translucency, properties.
- Improved Zoom in/out.
- Improved text: edit while scaled, rotate, select in groups to change style, vertical, transparent background, etc.
- Tile and Cascade windows commands (Window menu).
- Consistency of UI between worksheet, Notebooks, block structure, etc.
- Improved search capabilities with regular expressions capability.
- Window size and position memory.
- Two Run Modes:
- Fastest Run Mode for running a single model one or more times.
- Multi-threaded Run Mode for running multiple different models at the same time.
Model Builders
- Right-click to automatically add and connect blocks on model worksheet.
- Right-Click Connect to add blocks and connect them at the same time.
- Worksheet and Notebooks are tabs in model window so can be torn off.
- Multiple Notebooks per model; even hierarchical blocks have notebooks.
- Docking library windows; tear off to float.
- Libraries are database-based; no limits on size.
- Scrollable popup menus (combo box).
- Automatic Executive block placement on new DE or DR models.
- Improved Data Import Export; import an entire database; import/export with Oracle database.
- Connection lines:
- 4 styles, including Smart and Free Form.
- Right-click, Bump Connect, or point and click to connect blocks.
- Control-click on free-form segment makes Bezier curves.
- Up to 20 "Recent Files".
- 64-bit allows bigger models and libraries; multi-threading.
- New Reports Manager • The primary interface in ExtendSim for creating reports from simulation runs for blocks, events, items, and resources. This block's dialog provides filtering conditions to specify which blocks, events, items, and resources to generate reports for; data is stored in an internal ExtendSim database for ease of access and export.
- New Chart library with Bar Chart, Line Chart, DB Line Chart, Scatter Chart, etc., each with up to 20 inputs.
- New Reliability module combining process simlation with reliability block diagramming.
Animation
- Paths • Right-click on a free-form segment to curve.
- Anti-aliasing for cleaner appearance of lines, blocks, and objects.
- Smoother simultaneous animation with multiple objects at a time.
Programmers
- New source code (text) editor similar to Notepad++ with custom colors, code folding, brace matching, auto indent, word/line wrap, zoom/reduce in script window, show end of line characters, show white space, and more. Control O opens Edit > Options > Script window to customize.
- Improved dialog editor and structure windows.
- Code completion improvements – user customizable (add a text.ini file in Extensions folder), call tips.
- Graphic objects in dialogs.
- Progress bar column tag.
- Improved Search and Find capabilities.
Other Updates
- New License Manager for Floating, Shared, and Individual licenses.
- New product line-up: CP, DE, and Pro Model Developer Editions, plus Analysis and Player RunTime versions.
- 30 day trial version available to new users.
- Integrated Maintenance & Support Plan with first year free.
- Improved ASP capabilities.
ExtendSim 2024 -- released July 24, 2024
Multicore Analysis to speed up experimentation
- Run copies of a model in parallel by deploying multiple instances of ExtendSim.
- Manage multiple simulation runs defining factors and responses using the Multicore Analysis feature.
- Multi-launch ExtendSim by double clicking on the application to launch multiple instances.
Notes on the new Multicore Analysis (MCA) feature:
- As long as your Maintenance & Support Plan (MSP) is current, ExtendSim Pro, DE, CP, and ART allow you to run models on up to four concurrent ExtendSim instances (including the Head-Node as it counts as one of your parallel instances).
- If your MSP expires, ExtendSim will still launch and run models, but will only have access for single core model runs.
- To run models on more than 4 cores concurrently, see ExtendSim Pricing.
New & Improved Blocks
- Multicore Analysis (Analysis library) – Launchpad for controlling Multicore Analysis.
- Analysis Manager (Analysis library) – Simplifies analysis by organizing selected factors, responses, and results from the model (dialogs or database) into one Analysis database.
- Search Blocks (Utilities library) – Search for blocks and/or hierarchical blocks in a model by name, label, category, type, tab, dialog item, and more.
- Tank (Rate library) – Flow control tab simplifies the control of filling and emptying tanks.
New Analysis Library
- Analysis Manager (NEW)
- Multicore Analysis (NEW)
- Optimizer (moved here from the Value library)
- Scenario Manager (moved here from the Value library)
New ModL Functions
- FolderDelete()
- FileReadNow()
- GetInstanceNumber()
- GetChildNodes()
- NumInstancesRunning()
- DBGetLinkedContentList(...)
- DBGetLinkedDialogsList(...)
- DBGetLinkedStructureList(...)
- DBDatabaseViewerShowHideSet(...)
New Global Variables
- sysSMType
- sysSMDbAddress
- GLOBALINT10 to GLOBALINT99
Added to the right-click menu the ability to Add Factors and Responses to the Analysis database from block parameters and checkboxes.
New Features Supporting the Launching of Multiple Instances of ExtendSim
Multicore Analysis is supported in the following:
- Packages - Pro, DE, CP, and ART
- License types - Individual, Floating, and Node-Locked
New menu command and toolbar button to launch Multicore Analysis:
- Run menu > Multicore Analysis Setup...
- New button in the toolbar to Setup and Run Multicore Analysis.
When clicking the Multicore Analysis button, if the Analysis library has not already been opened, ExtendSim will try to locate and open the library before asking for the block’s location. The Analysis library needs to be opened as the logic to orchestrate Multicore Analysis is located in the Multicore Analysis (Analysis library) block. This block is placed and hidden in the upper left corner of the model worksheet. It is accessible from the Multicore Analysis button in the toolbar.
Manual launching of ExtendSim instances is permitted and policed.
Child-Nodes of ExtendSim:
- Have a watermark on their model worksheet distinguishing it from the Head-Node.
- The instance number of the Child-Node is shown in its title bar.
- Cannot directly open a model.
When a Child instance is launched:
- It is minimized and a blank model worksheet is not opened by default.
- Default libraries are not opened.
- Messages are suppressed regarding libraries that are in debug mode.
- Model auto-open is turned off when launching a Child-Node.
New ModL functions supporting multiple instances of ExtendSim:
- NumInstancesRunning()
- GetChildNodes(integer children[], integer which)
When there is no model open in ExtendSim or when a model is running and is not set up to run on multiple instances, the Setup and Run Multicore Analysis button in the toolbar is disabled.
Improvements to the ExtendSim Application in 2024.R1
Modifications to the Icon tab in the Structure window of blocks and hierarchical blocks:
- Connector tools have been moved from the model worksheet to the top of the Structure window in the Icon tab.
- The Show Icon Positioner checkbox and Reset Icon Positioner button have been moved to the top of the Icon tab with the other commands.
Modifications to the Dialog tab in the Structure window of blocks:
- Dialog tools have been moved from the model worksheet to the top of the Structure window in the Dialog tab.
The Find Object window (Edit > Find... menu item) is more consistent with options to only Open the dialog of the object and/or base the search on Whole words in the Find Objects with: entry field.
Change the type of connection line for multiple connection lines on a model worksheet by group-selecting them and changing the type of line.
When a block label is very long, it will not widen the area of the block icon to match the label length.
The default starting color of Draw Objects is now black rather than gray.
Added a Which argument to StringTrim to replace empty spaces with an underscore "_".
When calling the function GetExtendVersion(0), it will return the number 2410; "24" for the year and "1" for R1.
Blocks -- New & Improved Features in 2024.R1
Simulation Variable (Value library)
- Integrated reporting the currentSim option with Multicore Analysis (MCA).
Executive (Item library)
- Use sysGlobalInt97 to ID the MCA block in case the MCA block is to the left of the Executive block.
Cost Stats & Statistics (Report library)
- If a model is open in a Child-Node, the block is exporting.
NEW -- Analysis Manager (Analysis library)
- Simplifies model analysis by acting as a data management system for consolidated control of parameters and collection of model results.
NEW -- Multicore Analysis (Analysis library)
- Control panel for distributing model workload over multiple instances of ExtendSim with Multicore Analysis.
Link Alert (Utilities library)
- Enabled the ability to select a database address using the parameters (inputting indexes) instead of popups.
Pause Sim (Utilities library)
- If a model is open in a Child-Node, you can optionally bypass the pause.
NEW -- Search Blocks (Utilities library)
- Advanced way to search a model and create a filtered list of blocks based on specific criteria.
Tank (Rate library)
- New Flow Control tab to dynamically apply constraints to the inflow and outflow rate of a tank.