Phil BoBo avatar image
Phil BoBo posted Matt Long edited

FlexSim 2017 Available

FlexSim 2017 is available.

If you have bug reports please email [email protected] or post a new question to this answers site. If you have suggestions or new feature requests, create a new idea in the Development space.

Release Notes

  • Improved FlexScript performance by compiling and executing it as machine code instead of interpreted bytecode.
  • Added new syntax to FlexScript for accessing objects' methods and properties, including dynamic label access.
  • Improved OpenGL compatibility by removing many deprecated function calls and adding support for the OpenGL Core Profile.
  • Added a mechanism for loading DWG data into the tree using the Model Background object.
  • Added a new Snap to Background setting on the 3D view for snapping to points loaded from a DWG file.
  • Upgraded the licensing system to Flexnet Publisher 2016 R1 (11.14).
  • Changed the network licensing system so that you can open multiple FlexSim instances using only one license seat.
  • Added a Quick Library popup to Dashboard views.
  • Added Travel to Location pick option to OnResourceAvailable.
  • Added Export Results to CSV pick option to the End of Experiment trigger
  • Fixed some issues with auto-complete not displaying correctly.
  • Fixed a crashing bug with settablesize() on tables with bundle data.

Process Flow

  • Added functionality for snapping activities into the middle of a block.
  • Improved the Activities window, including renaming activities, better filtering options, and locating label references.
  • Added a Billboard setting for Text objects.
  • Added a right-click Edit Activity Visuals option.
  • Added an option to the Create Object activity for positioning an object at another object's location without moving into that object.
  • Added a Preserve Global Position checkbox to the Move Object activity.
  • Updated the Schedule Source table so that it can add labels.
  • Updated the Release Token activity to allow numbers and strings.

Backwards Compatibility Note: the following changes may slightly change the way updated models behave.

  • The new version of Flexnet Publisher requires network license servers to be upgraded. They need to use the latest vendor daemon and update the Flexnet Licensing Service. More information can be found in the license upgrade instructions at
  • Updated the Separator's order of events (executing OnEntry before Setup Time) to be consistent with the Processor.
  • Users of the mesh api should update usage of GL_QUADS to use GL_TRIANGLES instead. GL_QUADS is deprecated and will not work when using the OpenGL Core Profile.
  • Since the new FlexScript parser compiles to machine code, the order in which parameters are evaluated has changed to be aligned with the x86/x64 calling convention. This means models containing code where parameter evaluation order is important may have changed results. For example, the following code will have different results:
    myusercommand(duniform(1, 5), duniform(1, 10))

    In the x86/x64 calling convention, parameters are evaluated from last to first. In this case, the duniform(1, 10) call will be called first. Since this call changes the state of random stream 0, changing the order of parameter evaluation changes the result.

  • The new parser has a stricter grammar for the == and != comparison operators. The types of the operands must be the same or related. For example, the following code will now give compile errors because it is comparing unrelated types:
    double x = 0;
    treenode y = model();
    if (x == y) { }
  • This version introduces a new Array type, which is an array of variants, enabling a more feature rich array usage. In doing this, we are deprecating the old array types of doublearray, intarray, stringarray, and treenodearray. Specifically, the old array types are now just aliases for the standard Array type. This means that you can now, technically, put a string into a doublearray and vice versa, because they are all just Arrays. Hence we encourage you to just use Array in your code instead of the old array types.

    This change has also introduced a problem regarding the Variant type. In previous versions, the Variant could hold each of the four types of arrays, and it had a type value associated with each type, which you could get with the getvartype() command, comparing that value to one of VAR_TYPE_INTARRAY, VAR_TYPE_DOUBLEARRAY, VAR_TYPE_STRINGARRAY, or VAR_TYPE_TREENODEARRAY. Now, however, since we've merged all of those types into one, all of those values would theoretically be the same value, introducing issues if you had code that switches on getvartype(), or in some cases if you had a series of if/else compares on that value. Depending on the specific nature of that code, it would be hard to predict exactly how that code would behave going forward. Thus, we have decided to get rid of those old macros for each array type. Now there is just the macro VAR_TYPE_ARRAY.

    If you have existing code that uses the older macros, you will get compile errors when you open your model in version 17.0. We do this specifically so that you will be notified of code that needs to be updated. There are also several pick list options in the process flow module that use these older macros. Version 17 includes update scripts that will hopefully update all of those pick options in existing models to use the new VAR_TYPE_ARRAY macro instead of the old macros.

  • With the new FlexScript parser, there are now some differences with how the parser compares a null variant to 0. In the old parser, the following expressions applied:
    (nullvar == 0) is false
    (nullvar <= 0) is true
    (nullvar >= 0) is true
    In the new parser, the following expressions apply:
    (nullvar == 0) is false
    (nullvar <= 0) is false
    (nullvar >= 0) is false
    This brings the <= and >= operators inline with the == operator. However, old code will evaluate differently now. The following expressions apply in both the new and old parsers:
    (nullvar < 1) is true
    (nullvar > -1) is true
  • The param() command will now return nullvar if the parameter number is greater than the number of parameters passed to the function (previously it returned 0).
product announcement
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.



matt.long contributed to this article phil.bobo contributed to this article