FlexSim 2016 is available. You can download it from the account section of the website.
If you have feature requests, bug reports, or other feedback on the software, please email
[email protected] or use the support page at
www.flexsim.com/support
==================================================
Release Notes
--------------------------------------------------------------------------------
--- FlexSim 16.0.1 (April 1, 2016) --------------------------------------------
- Fixed a performance bug with stats_staytime() that was causing models to run slowly.
- Fixed a bug with Excel export not working for certain columns.
- Fixed some memory leaks in drawcylinder(), drawcolumn(), drawdisk(), and drawsphere().
- Fixed an issue with dll nodes sometimes not binding properly.
- Fixed bugs with excelcreatesheet() and excelsaveas().
- Fixed a bug with old-structure stateprofiles not resetting properly.
- Fixed a bug with group objects sometimes being added to charts twice.
- Fixed a bug with 3D stats not displaying correctly on some objects.
- Fixed dashboard buttons not saving their text color.
--- Conveyor ---
- Fixed a bug with decision points' current content stats.
- Fixed a bug where items were sometimes not routed to the correct location.
- Fixed a bug where exit transfers sometimes sent items to the wrong port when multiple items were released.
--- Process Flow ---
- Fixed some statistics bugs in the Zone.
- Fixed some crashing issues when "Assign To" is given invalid data.
- Fixed a bug with Batch Label Aggregation to keep strings/arrays/etc. with the Last Value and First Value options.
- Fixed issues with the Run Animation not allowing you to pass in an array of objects.
- Fixed an issue with using the wrong instance when pushing/pulling from a List in another Process Flow.
- Improved 3D mouse performance in the ProcessFlow view.
--- AGV ---
- Made the addMember method a dll function so Process Flow can connect travelers to any control point using the Create Object activity.
- You can now correctly get an AGV's current control point when it finishes OnPreArrival.
- Fixed an issue with AGV start speeds incorrectly being set to 0 in certain circumstances.
--------------------------------------------------------------------------------
--- FlexSim 16.0.0 (March 14, 2016) --------------------------------------------
- Added the ability to assign unique random streams to objects in the model using the command getstream().
- Added a Network Navigator Properties window. (Right-click a NetworkNode to access.)
- Added a Track Number Field Totals option to the List for stats collection.
- Added a 'Values Only' data distinction option to the Excel Importer. This data distinction reads number data and string data from excel cells without regard to the cell's formatting (i.e. dates and times are imported as Excel time values).
- Implemented the excelrangeread() command to import a range of cells using the 'Values Only' data distinction.
- Added the command convert() for converting model/Excel dates and times.
- You can now use keyboard shortcuts for debugging. Next Line -> F10, Step Into -> F11, Continue -> F5, Stop Simulation Clock -> Shift+F5
- Updated object statistics to use Tracked Variables for collecting Content, Input, Output, and Staytime statistics. NOTE: These new statistics are only available for new objects. See the Object Statistics backwards compatbility note below for more information.
- Made the sql IN clause work if you compare it against a value that is an array.
- Added trackedvariable() and inittrackedvariable() commands. This allows tracked variables to be created on objects as labels, etc.
- Tracked Variables can now be accessed using the commands get(), set(), inc(), setnodenum(), getnodenum(), getlabel(), setlabel().
- Tracked Variables now have a Type which can be Level, Cumulative, Time Series, or Categorical (see inittrackedvariable() documentation).
- Tracked Variables can now store profiles (similar to state profiles, the profile stores data on the amount of time the tracked variable was at each given value).
- Improved OpenGL compatibility with older graphics cards and Nvidia Optimus cards.
- Fixed an issue with copy and paste in the 3D view not maintaining the z position of the copied object.
- Fixed the Load From File button in the Edit Selected Objects window to call the firecreateevent on loaded objects.
- Fixed an issue with the dashboard Send To Back not always working.
- Fixed an issue with the Experimenter Default Reset Scenario combobox.
- Fixed dashboard snapping.
- Fixed issues with pasting a node onto another node of a different data type.
- Fixed an issue with FlexSim sometimes crashing when a dashboard widget was deleted.
- Fixed a memory leak in the query() command.
*** Backwards Compatibility Note ***********************************************
*** the following changes may slightly change the way updated models behave ****
- Updated the Combiner so that items can properly exit through port 0 (such as using a Process Flow Load activity).
- Fixed a bug in the Separator state management that was causing it to be idle when it should be blocked.
- Changed the max bones per mesh for bone-animated shapes from 60 to 42.
- Object Statistics: We have changed the default statistics structure for objects in the library. This will not change the structure of existing models, but will now be different for new objects that are created. Specifically, we have made the standard object statistics--namely input, output, content, staytime, and state--use tracked variables instead of the many different object attributes they used previously. This enables us to add new capabilities, such as a content-vs-time graph that exactly reflects the object content changes instead of an interval-based time graph (use the Tracked Variable vs Time chart or the pin button in the Quick Properties Statistics panel), and the ability for Process Flow Wait For Event activites to listen to object content, input, output changes, etc.
Current FlexSim features will work for both the old and new statistics structures. If you have model or module code that is accessing statistical data directly (such as using commands like get(stats_contentavg(object)) or get(rank(state_profile(object), STATE_IDLE))), this code will continue to work on objects that have the older structure, but it will not work for new objects added to the model. If you want this access to work with objects having the new structure, you should use the getstat() command to get the desired data. The getstat() command will work on both the old structure and the new structure. Below is a list of examples of old statistical access commands vs new getstat() based access.
OLD: get(stats_contentavg(object))
NEW: getstat(object, "Content", STAT_AVERAGE)
(Note here that the getstat() command will return the weighted average that includes the time that the object has been at its current content, whereas with the old method, you had to add that on manually).
OLD: get(stats_staytimemax(object))
NEW: getstat(object, "Staytime", STAT_MAX)
OLD: get(rank(state_profile(object), STATE_IDLE))
NEW: getstat(object, "State", STAT_TIME_AT_VALUE, 0, STATE_IDLE)
(Note here that the getstat() command will actually give you the total time in the idle state. This includes the time in its current state if the object is currently idle. With the old method you always had to manually add that in, i.e. get(rank(...)) + (getstatenum(object) == STATE_IDLE ? time() - get(state_since(object)) : 0);
OLD: getstatenum(object)
NEW: getstatenum(object)
The getstatenum() command works on both structures, so you don't need to change it. Alternatively, you can use getstat(object, "State", STAT_CURRENT, 0) (0 is the state profile)
OLD: getinput(object)
NEW: getinput(object)
The getinput() and getoutput() commands work on both structures, so you don't need to change them. Alternatively, you can use getstat(object, "Input", STAT_CURRENT)
--- Conveyor --------------------------------------------
- Added Pull and Send To functionality to conveyors. This is done by connecting multiple objects to a single entry/exit transfer.
- Added reset position functionality to conveyors.
- Added additional events to conveyor objects that can be used in connection with the Wait for Event and Event-Triggered Source activites in Process Flow.
- You can now explicitly remove connections from an entry/exit transfer without it being deleted (using the right-click menu). This is useful when sending flowitems to a list where connections are not required.
- Straight and curved conveyors now have an optional Virtual Length.
- Added Priority and Preempt fields to the Exit Transfer.
- Added a Station object. The Station works much like a Decision Point but also allows you to specify a processing time and optionally call operators.
- Added States to conveyor objects.
- Added a CONV_INFO_GET_ACTIVE_ITEM option to the conveyorinfo() command to get a decision point or photo eye's covering item.
- Fixed decision points and photo eyes not saving to user libraries when adding a conveyor.
- Fixed conveyor widths not updating when changing conveyor types.
- Fixed issues not being able to snap decision points to the beginning or end of conveyors.
- Fixed the conveyor type so new conveyors use the default conveyor type rather than Custom.
- Fixed the name numbering of decision points and photo eyes.
- Fixed the Release Area pick option in decision points.
- Various other bug fixes and improvements to conveyors.
--- ProcessFlow --------------------------------------------
- Added a label filter option for tokens in Quick Properties.
- Process Flow View now supports a 3D mouse.
- Updated activity snapping to allow activities to be snapped to the top of other activities.
- Updated the Release Resource activity to allow a reference to a Resource Shared Asset to be passed into the Resources to Release property.
- Blocks of activities and display objects can now be saved in User Libraries.
- Added aligning functionality to the Process Flow view.
- Added snap-to-grid functionality to the Process Flow view.
- Speed improvements to drawing.
- Assign To properties on the Create Object, Push To List, Pull From List and Create Task Sequence can now either overwrite the assigned label's data or insert the data at the front (creating an array).
- When tying the Resource shared asset to a Group, Dispatcher or Array, the Count property now allows you to utilize any number of those objects. This allows you or the experimenter to easily change the number of available resources without objects being added/removed from the model.
- Added a 'Do not remove entries from List' option to the Pull From List activity allowing you to utilize the Request and Require fields without removing entries.
- Tracked Variables can now be added as labels on objects. This allows you to track the history of its values as well as tie it to a Wait for Event activity as a value change listener.
- Fixed issues with the Finish/Sink activity not properly deallocating shared assets if they still had children in the model.
- Additional bug fixes and overall improvements.
*** Backwards Compatibility Note ***********************************************
*** the following changes may slightly change the way updated models behave ****
- The Assign Labels activity used to allow you to pass in a treenodearray or a Group so that it assigned labels to multiple objects at once. Now the Assign Labels only accepts one treenode at a time. Passing in a treenodearray will cause only the first entry in the array to have labels assigned to it. To update any old model utilizing this functionality, loop through each object in the array using the Object from Label Array pick option.
--- AGV --------------------------------------------
- Updates to AGV travel tasks and preempting.
- Some minor bug fixes.
*** Backwards Compatibility Note ***********************************************
*** the following changes may slightly change the way updated models behave ****
- We changed the AGV preemption mechanism so that:
- When you preempt an AGV, if you do not immediately give it a new travel task, it will decelerate to stop after the preemption occurs. In previous versions the preemption mechanism stopped the AGV immediately.
- If you preempt an AGV and then immediately give it a new travel task, it will start the new task at the speed it was at before it was preempted. In older versions, a preemption would cause the AGV to immediately stop and then start from speed 0.