ExtendSim 7.x Patch Enhancements

Search
 

FixesNew features and fixes in ExtendSim 7.0.4
Released October 20, 2008

New features in 7.0.4
bullet Hierarchical blocks The name of the top level worksheet now appears on the hblock window in angle <> brackets.
line
bullet Preferences Library warnings may be turned off through a Preferences command. (Turns off old version library warnings and legacy library warnings.)
line
bullet Demo-Player The Demo-Player version shows the version number on startup screen.


Functions in 7.0.4
New functions in 7.0.4
bullet E3DLogEvents(long logFlag) Turns on (or off) the logging of Events in the E3D window. Logging is off by default. If logFlag is true (1), Logging will be turned on. Logging will write messages to the Console.log file in the ExtendSim7 folder when events occur in the E3D window.
line
bullet MakeArray2(long blockNum, string arrayName, long dim) Same behavior as the MakeArray function with the exception that it can be called from an outside block and doesn’t have to be called from within the block that contains the array. Note that the ArrayName argument is the name of the array as a string, not the array name itself.
line
bullet Double GetExtendVersion(long which)

Returns a real number in the format 701.2 where 7 is the major version, 1 is the minor version, and 0 is the middle. The value after the point is 1 for an "a", 2 for a "b", and so on. The final value is always zero for a file read version.

Which:
            0 : application version
            1 : file version

line
bullet DynamicDataTable2(long blockNum, String dataTableName, String arrayName) Same behavior as the DynamicDataTable function with the exception that it can be called from an outside block and doesn’t have to be called from within the block that contains the array. Note that the ArrayName argument is the name of the array as a string, not the array name itself.
line
bullet DynamicDataTableVariableColumns2 (long blockNum, string dataTableName, string arrayName, long rows, long columns) Same behavior as the DynamicDataTableVariableColumns function with the exception that it can be called from an outside block and doesn’t have to be called from within the block that contains the array. Note that the ArrayName argument is the name of the array as a string, not the array name itself.
line
bullet Long ListAddString63s(long blockN, long listIndex, long string63Count) If you wish your linked list to contain String63s, call this function right after ListCreate. It has the same effect as specifying, for example, n String15s in the ListCreate function. It defines the number of string63s that will be present in each element of the Linked List.
line
bullet Long ListLocked(long blockN, long listIndex, long locked) If Locked is true, this function call marks the specified Linked List as locked. If ListDisposeAll is called, that List not be disposed of. If the function ListDispose is called explicitly on this list, it will still be disposed. This function only prevents accidental disposal of the list through the ListDisposeAll call. Returns a zero if the call succeeds. Returns a negative error code value if the function fails.
line
bullet Long GetDimensionColumnsByName (long blockNum, string arrayName) Same behavior as the GetDimensionColumns function with the exception that it can be called from an outside block and doesn’t have to be called from within the block that contains the array. Note that the ArrayName argument is the name of the array as a string, not the array name itself. This also means that the function can be called with a string variable as the second argument, and not a hard coded array name.
line
The following functions are convenience functions intended to be called from Equation blocks. They have the effect of querying a Resource Pool block for the number of available resources or requesting that the Resource Pool block allocate a resource. These functions are implemented through the sending of messages and the use of globals. See the code of the Resource Pool block for more information.
bullet Void ResourcePoolAllocate(long ResourcePoolBlockNum, double NumToAllocate) Requests the specified Resource Pool block to allocate the specified number of resources.
line
bullet Double ResourcePoolAvailable(long ResourcePoolBlockNumber) Queries the specified Resource Pool block for the number of resources that are available.
.

.

Functions fixed in 7.0.4
bullet OpenExtendFile OpenExtendFile could return an error code even if it succeeded.
line
bullet Weibull and Logarithmic distributions Weibull and Logarithmic distributions could rarely generate NaNs.
line
bullet UserPrompt

UserPrompt function could crash if given a string that was too long.

line
bullet SetRunParameter SetRunParameter now supports setting the startdate with a value of 10.
line
bullet UserParameter UserParameter responds to a press on the Enter key as if the user had clicked on the OK button.
ExtendSim Database
bullet

New ExtendSim Database functions:

bullet String DBToolTipsGet (long databaseIndex, long tableIndex, long fieldIndex)
Returns the current component’s Comments dependent upon indexes which are non-zero.
bullet DBToolTipsSet (long databaseIndex, long tableIndex, long fieldIndex, Str255 value)
Sets the current component’s Comments dependent upon indexes which are non-zero.
line
The following functions are designed for convenience of use in equation blocks. They combine the retrieving or setting of a date value with the conversion of the date value into a SimTime (model time units) time value.
bullet

Double DBDataGetDateAsSimTime (long dbIndex, long tableIndex, long fieldIndex, long recordIndex, long timeUnits)

Reads a database cell as a date and converts it to a SimTime value.  This allows the user to read a date value directly as a SimTime value, avoiding the conversion process. Uses the 4 database indexes.
bullet Long DBDataSetDateAsSimTime(long dbIndex, long tableIndex, long fieldIndex, long recordIndex, double simTimeVal, long timeUnits) Takes a SimTime value, converts it to a date and sets a database cell with that date value. Uses the 4 database indexes.
bullet Double DBDataGetDateAsSimTimeUsingAddress (double addressValue, long timeUnits) Reads a database cell as a date and converts it to a SimTime value.  This allows the user to read a date value directly as a SimTime value, avoiding the conversion process. Uses a database address instead of the 4 database indexes.
bullet Long DBDataSetDateAsSimTimeUsingAddress (double addressValue, double simTimeVal, long timeUnits) Takes a SimTime value, converts it to a date, and sets a DB cell with that date value. Uses a database address instead of the 4 database indexes.
bullet Optimizations in the performance of string fields greatly increase database speed.
bullet Database initialization occurring before PRECHECKDATA no longer sends messages to any blocks, greatly speeding up data initialization.
bullet New records, either inserted or appended, are now initialized with the field initializer if initialization is enabled. If initialization is not enabled, new records are initialized with blanks for real or string and zero for integer fields.
bullet Empirical distributions recalculate their data tables in all cases of importing and when the model is opened.
bullet DB and Table selector components now sort their entries, making it easier to find the desired entry.
bullet Bugs fixed:
bullet Tables are now being resized correctly when adding fields.
bullet “List of Tables” fields are now updated correctly when a table name is changed.
bullet When changing distributions in database cells, random seeds correctly continue the random sequence.
bullet DB random seeds will now never be the same as model random seeds.
bullet

Right-clicking is now working on Database List window entries.

bullet Field and rectangular selections in DB Viewer panes with a huge number of records is now working properly and correctly scrolling to area of deletion.
bullet Setting a new field to RecordID in a table now correctly removes the old RecordID flag.
bullet Importing a database now correctly closes the file so other operations can be performed on that file.
bullet DBTableCopy() now deals correctly with relations, if present, and will correctly recreate relations that were present in the “From” database and in the “To” database.
bullet Activity
bullet Changed icon animation to show/hide length when animation is turned on and off.
bullet Tool tips on "SD" connector is now conditional.
bullet In the case of a time tie, items will try to be moved out before shutting items down.
line
bullet Catch
bullet Corrected problem that even if ConnectionType came back true, the Catch block might not have been connected.
bullet The name of Dialog item in the Throw block has been updated. CatchByNum DI no longer exists
line
bullet Create
bullet Time units label has been corrected.
bullet Condition added: Prg_GetNextTime(). Fixes potential calendar dates rounding error.
line
bullet Conveyor and Transport blocks
bullet Fixed a problem where the path was not calculated correctly if a sensor connector was used.
line
bullet Equation(I)
bullet In oVarsOut, the method of getting an equation result for a downstream blocker has been changed.
line
bullet Executive
bullet The Executive block now receives a message when the simulation resumes from pause.
bullet Link to the rate calculation, the test for tank level stability has to be counted twice instead of once.
line
bullet Exit
bullet Moved block-to-block animation to after the Taken message is sent. This makes the animation appear in the correct order
line
bullet Gate
bullet Added CONDITIONAL_ROUTE_BLOCKER response in On itemIn for the connector SM_MaxItemsIn.
line
bullet Queue
bullet The Average Wait dialog item is now cleared on ClearStatistics.
bullet Added additional checks for the maximum queue length input connector.
bullet Fixed animation of a hierarchical block when the item quantity > 1.
bullet Changed icon animation to show/hide length when animation is turned on and off.
bullet Fixed problem renege immediate. It was scheduling an event when it wasn't supposed to.
bullet Added immediate reneging of multiple items. The value of the renege input connector is the number of items to renege.
bullet Fixed the problem where a resource would not allocate if an item is pulled from the output and the resource rule is any resource.
line
bullet Queue Equation
bullet Moved the many places where NextItemLocked was getting set into FindNextItem().
bullet Added places where NextItemLocked is set to FALSE.
bullet Altered how the query message is being handled in ItemOut.
line
bullet Read(I)
bullet Added a call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at the beginning of a simulation.
line
bullet Resource Item
bullet ToBeDisposed was not being initialized causing an error.
bullet Added a call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at the beginning of a simulation.
line
bullet Resource Pool
bullet Fixed the problem with reneging from a Resource Pool Queue when the number of runs was > 1.
bullet NumResourcesIn connector no longer ignores novalues and nor reports an error for values < 0.
line
bullet Select Item Out
bullet Added SendMsg wants to the output when a message comes in through the Select connector. This prevents items from moving through the block if there is no downstream space.
bullet Fixed a problem where attribute based select was sometimes reporting an incorrect throughput. This necessitated the adding of the Count Invalid dialog item.
bullet Fixed dynamic priorities.
bullet Enhanced Select by Priority so that a Priority Select can be followed by another Select block.
bullet Check for needs in response to sending wants out input connector.
bullet Fixed a problem that could block items if a query message came in through the output connector and the Select connector was used.
line
bullet Set
bullet Added a call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at the beginning of a simulation.
line
bullet Shutdown
bullet Commented out a redundant correction that was accounting for TBF_ENDS_AT_END_OF_REPAIR.
bullet Updated the value of SD_ValueOut in InitSim so that SD_ValueOut is reporting the correct up value at the start of a simulation.
line
bullet Throw
bullet Must declare the connection type to answer the request.
bullet Type of connection for SysGlobalInt14.
line
bullet Unbatch
bullet Fixed the problem with indexing in a list of unbatched items.
line
bullet Workstation
bullet Added CallAnimationArgument to Length(... to fine tune the animation of the block status.
line
bullet Write(I)
bullet added call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at beginning of sim
bullet Data Import Export
bullet Export does not occur if the simulation is aborted.
line
bullet Data Specs
bullet Added a call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at the beginning of a simulation.
line
bullet Decision
bullet The "B input con" now shows if "A is not a number" is turned off.
line
bullet Display Value
bullet Instead of stretching smaller, it restores to default.
line
bullet Equation
bullet added support for calendar dates
line
bullet Holding Tank
bullet Holding Tank:  Added AnimationStatusChange so that animation will update when it is turned on
line
bullet Math
bullet Math:  And was requiring that all input connectors were == 1 rather than >= 0.5
line
bullet Optimizer
bullet Mods and added function to ensure a unique variable is used for new clones.
line
bullet Random Number
bullet Prevent plotting poly if MaxY is zero (bad data had caused an abort, cancelling HBlock open).
bullet Instead of adding .00001 inside the log, it now checks to make sure x is not zero.
bullet Replaced references to dynamic array with data table so that linking with databases will work correctly.
line
bullet Read
bullet If a model was built on a PC and then opened on a MAC, one would have needed to transfer the chosen worksheet name.
bullet Added a call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at the beginning of a simulation.
bullet Changed the way in which current row was being calculated for a local copy when rowIsRunNumber_chk = TRUE.
line
bullet Simulation Variable
bullet Converted date to simulation time.
line
bullet Write
bullet If a model was built on a PC and then opened on a MAC, one would have needed to transfer the chosen worksheet name.
bullet Added a call to BlockRegister() in CheckData just as a precautionary measure to ensure the block is properly registered at the beginning of a simulation
bullet Changed the way in which current row was being calculated for a local copy when rowIsRunNumber_chk = TRUE.
bullet Corrected problem where certain situations caused an error to be flagged for a row index that was too large even though expandDataSourceRows_chk was checked.
bullet Convey Flow
bullet

A final portion cannot be detected by a sensor as it is still growing. Before, extra events were being generated.

bullet The precision issue determining the number of portions that have disappeared has been adjusted.
bullet In some specific cases, the next event had to be reevaluated more often because there were too many intermediate calculations.
bullet The accumulating point is now positioned in intervals with nearly equal precision.
bullet The limit to pass to a higher level has to use nearly precision comparison.
bullet If an event changes one interval into another, the equality precision must be lowered.
bullet A portion of a sensor calculation used to finish before scheduled, causing the formation of a new LP. This has now been corrected.
bullet

If a sensor is at position 0 (end of the Convey Flow block), the value which is reported is the one from the entering portion.

line
bullet Tank / Interchange
bullet

When the content and capacity are empty, the siExtremLevelTank is considered to be empty.
bullet If TimeNextExtremLevel was too close to CurrentTime (within 15 digits), the TimeNextExtremLevel used to occasionally get stuck at CurrentTime. This problem has been corrected.
line
bullet General
bullet When a Rate block was enclosed within a hierarchical block, either updating or dragging the hierarchical block in the model could deteriorate the mapping of the Rate blocks. The problem has been fixed.
bullet 2D-3D Animation Library
bullet 3D Scenery: Fixed problem where 3D object was not hiding and showing properly.
bullet Stepped empirical distribution no longer causes an "Array exceeded dimensional bounds" error.
ExtendSim Program
bullet 3D Window
bullet Optimizations allow more objects to be present on the 3D window and smoother animation in general.
bullet Pausing and resuming a 3D model is greatly improved.
bullet Aborting the run of a 3D model with the stop button has been corrected.
bullet Occasionally, the changing of skins could fail if the skins were initially set then later changed. This situation has been corrected
bullet The .cs extension for cs files in the extensions folder was case sensitive, so lower case files (cs) wouldn’t be loaded, while upper case files (CS) would be. Now, both are loaded
bullet Logging of 3D events in the Console.log is now optional and is set to off by default. (Part of the 3D optimizations. E3DLogEvents function is used to turn on logging.)

line

bullet

Dialog Items

bullet Datatable DBField column tag no longer retrieves the wrong information from the database.
bulletColumn tag: TAGPOPUPCONDARRAY. See column tag list in the Developers Reference for more information.
line
bullet ED Date Functions
bullet Internal conversion calculations improved for calendar dates with time units set to months. (Still not a recommended setting.)
line
bullet Linked Lists
bullet

Linked lists now support String63s as well as other sizes of strings.

bullet Linked lists can now be ‘locked’ which means that they will not be disposed if ListDisposeAll is called for by a certain block.
bullet Saving linked lists in a model no longer causes issues.
line
bullet Linking
bullet Due to an optimization in the updating of links, models that have linked information should run faster. (For models with few links this will not be significant, but for models with lots of links it should be quite noticeable.)
bullet The link dialog deals better with deleted databases (empty database slots).
line
bullet OLE/COM
bullet Embedded objects will remember if they were inserted as icons.
line
bullet Scripting
bullet MoveBlock and MoveBlockTo no longer crashes if called from a block within a closed hBlock.
bullet DIPositionSet working properly.
bullet Calling ClearBlock in a DeleteBlock message handler no longer prevents the rest of the selected blocks from being deleted. (Calling clearBlock on one of the blocks in the initial selection is still a no-no, however.)
line
bullet Structure window
bullet Large numbers of include files now work correctly in the Include popup menu.
bullet Adding large Icon View names now maintains the menu correctly (limited to 31 characters).
line
bullet General program changes and additions
bullet Bad pictures on a worksheet will not crash the application.
bullet HBlocks now send correct CONNECTIONMAKE and CONNECTIONBREAK messages when changed or added to the model.
bullet Added HBLOCKFROMLIBRARY message. The message is sent to the HBlock when placing an HBlock from a library onto the model.
bullet Fixed some multiple monitor issues including dialog boxes that would open on the wrong screen and a plotter opening to the wrong size when opened on a different monitor.
.

.

FixesFrom 7.0.2 to 7.0.3
Released July 1, 2008

ExtendSim Database
bullet For developers, there is a new worksheet (ES7 DB to Industry DB) listing all of the ExtendSim database functions. Worksheet is in an Excel spreadsheet located at ExtendSim7/Documentation/v6 to v7 equivalents.xls.
bulletFunctions - DBRecordFindMultipleFields() and DBRecordFindMultipleFieldsArray(). Used to find records that have multiple search criteria. Both partial and exact match are allowed.
bulletFor developers who previously programmed using the Industry database API, there is a new worksheet (Industry DB to ES7 DB) listing all the Industry database functions and the equivalent ExtendSim database functions. Worksheet is in an Excel spreadsheet located at ExtendSim7/Documentation/v6 to v7 equivalents.xls.
bullet Bugs fixed:
bullet Finding records functions: partial match fixed.
bullet DBDataGetParent() and DBDataGetParentUsingAddress() were returning -1 error even if all indexes were correct.
bullet The DBFieldSetProperties() function now correctly changes the RecordID status.
bullet PutDataAsParentIndex() now allows a zero parentIndex to set child to <no value yet>.
bullet Empiric distribution plotting problems have been fixed
bullet Some extra refreshes and drawing artifacts have been fixed.
bullet Sorting table artifacts and crashes have been fixed.
bullet Item handling blocks
bullet Added continueSimGetArrays() and Attrib_OnContinueSim()to make the ContinueSim message handler consistent. These ensure that the array information is updated when a model is continued after being saved during the simulation run.
line
bullet Batch
bullet Fixed calculation of max min and sum attributes for matched batches.
line
bullet Convey Item
bullet Fixed messaging problem. Rejects response was not getting returned in some cases.
line
bullet Equation(I)
bullet In Eq_OnInitSim, added updating of oVarsOut.
bullet Moved downstream blocker checking to PostInitSim.
line
bullet Executive
bullet Added PassArray for ItemArrayA to support legacy models GA's.
line
bullet Gate
bullet Big architectural change: receive item, update output value connectors, then send TAKEN, then SendMsgToInputs().
line
bullet Read(I)
bullet Moved downstream blocker checking to PostInitSim.
line
bullet Resource Item
bullet Added condition in 'on numResourcesIn' to filter out msgs that might arrive during PostInitSim.
line
bullet Resource Pool
bullet Change connector now sends the correct message.
line
bullet Select Item In
bullet Added conditional linking to SetupProbTable().
line
bullet Select Item Out
bullet Conditionally dispose of Probability_nda SetupProbTable().
line
bullet Set
bullet SetupTable() now properly updates the value column.
line
bullet Shift
bullet Repeat time units now use correct time units.