Phil BoBo avatar image
Phil BoBo posted David Chan commented

FlexSim 2017 Beta Available

FlexSim 2017 Beta is available. (updated 30 Nov 2016)

To get the beta, log in to your account at, then go to the Downloads section, and click on More Versions. It will be at the top of the list.

If you have bug reports or other feedback on the software, please email [email protected] or 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 announcementbeta
· 26
5 |100000

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

Mischa Spelt avatar image Mischa Spelt commented ·

Great, thanks guys! Was very much looking forward to these features. @anthony.johnson could we also get the updated SDK please?

0 Likes 0 ·
anthony.johnson avatar image anthony.johnson ♦♦ Mischa Spelt commented ·

I've pushed the latest to the SDK repository.

0 Likes 0 ·
Cameron Pluim avatar image Cameron Pluim commented ·

This looks great! Is there going to be documentation on how to use the new syntax within FlexScript?

0 Likes 0 ·
Matt Long avatar image Matt Long Cameron Pluim commented ·

You can refer to the FlexSim Coding section of the User Manual for information on using dot syntax. There is also a FlexScript Class Reference contained in that section as well.

2 Likes 2 ·
David Chan avatar image David Chan commented ·

I am a problem in grasping the network license with the new version 2017 but not 2016. Not too sure if there is setting I missed out.


0 Likes 0 ·
Phil BoBo avatar image Phil BoBo ♦♦ David Chan commented ·

In order for server licensing to work correctly with 17.0, existing license servers will need to be updated with the latest vendor daemon (flexsim.exe and flexsim_libFNP.dll) from

The flexsim.exe and flexsim_libFNP.dll are in:\License Manager\licenses\flexsim

Also, the Flexnet Licensing Service will need to be updated on the server by running FlexSim ServerActUtil as an Administrator and then executing the menu option Tools > Licensing Service > Install anchor service.

This is explained in detailed step-by-step instructions in

If you try to check out a license with the 17.0 software from a license server with an older version of the vendor daemon, the vendor daemon log shows the license features being checked out and then immediately checked in one at a time.

Also, if a license server that is using a dongle shows the error message “Can’t get hostid of type 15,” then they need to install the new dongle dlls on the license server. See\License Manager\advanced\dongleFiles\FLEXID9_README.txt

1 Like 1 ·
Ben Wilson avatar image Ben Wilson ♦♦ Phil BoBo ♦♦ commented ·

@phil.bobo, should there be a backwards compatibility note regarding upgrading license servers? It might make it more visible to those affected by the change.

1 Like 1 ·
Show more comments
Show more comments
Alessio Merlo avatar image Alessio Merlo commented ·

Great! The feature to snap to background is very interesting. I discovered that now the background stored many information extrapolated from autocad file. Where do I find some details on the organization of the variables "snapPoints" of FlexSimModelBackground? For example I believe that each entry of the node "Lines" contains a reference to two points stored in the node "Vertex Locations". Do you confirm it? Moreover is it possible to import only the information related to a specific layer? For example executing the command applicationcommand("storedwginfo",si,db,"FlexSim_Conveyor") where "FlexSim_Conveyor" is the name of a layer defined by the user directly in autocad.

0 Likes 0 ·
Phil BoBo avatar image Phil BoBo ♦♦ Alessio Merlo commented ·

There is no detailed documentation on the contents of snapPoints. You are correct that each entry in the Lines bundle contains references to indexes in the Vertex Locations bundle.

The import will only import information related to the layers that are marked as visible. There is not a flexible API to get specific layers; what you see is what is available.

0 Likes 0 ·
Alessio Merlo avatar image Alessio Merlo Phil BoBo ♦♦ commented ·

Thanks @phil.bobo! These information are very useful to autobuild model or layout directly from autocad, any documentation will be very appreciated.

Unfortunately without the reference on layer everything is more complex. I am not familar with API to export info from dwg and I'm sorry for the stupid question, but: how do you obtain the list of all layers? Is it impossible to create another bundle which stores the link between points, circles, ... and the layer? My request to change the applicationcommand is only an idea, but I don't know the complexity. For the moment a bundle with the relation between layer and geometrical entity can be sufficient.

0 Likes 0 ·
Show more comments
jing.c avatar image jing.c commented ·

Look forward the new version! I suggest Version 2017 can update the Chinese Font Library which show in 3D view, In China, a lot of computer will show digital gibberish with Chinese in 2016, and some Chinese character can not show at all which bring some trouble to show it for local client.

0 Likes 0 ·
Frenk Gao avatar image Frenk Gao jing.c commented ·

Yeah! Long to support for utf-8!

0 Likes 0 ·
Matt Long avatar image Matt Long Frenk Gao commented ·

*cough* UTF-8 in FlexSim 2017 Update 1

1 Like 1 ·



ben.wilson contributed to this article phil.bobo contributed to this article