ATTENTIONThis FlexSim Community Forum is read-only. Please post any new questions, ideas, or discussions to our new community (we call it Answers) at https://answers.flexsim.com/. Our new Question & Answer site brings a modern, mobile-friendly interface and more focus on getting answers quickly. There are a few differences between how our new Q&A community works vs. a classic, threaded-conversation-style forum like the one below, so be sure to read our Answers Best Practices. |
flexsim.com |
#1
|
||||
|
||||
Version 5 Pre-Notifications
We're working hard on the next big release of Flexsim, version 5. We expect to have it ready by Q1 2010. As we're working on it, there have come up several items that I want to make distributors/developers aware of, because you may need to do some of your own development to get your stuff working with the new version. I'm starting this thread as a notification/discussion of these new features and what needs to be done to prepare for the version 5 release. This applies to you if you are a DLL or user library developer/maintainer. I will update this thread with more information as we finish and document the new features.
1. DLL Re-Compile In the new version, we are moving to a software-based licensing system through Flexnet. Users will no longer use HASP keys to enable Flexsim. Distributors can contact Roger regarding business strategies for updating our users to the new system. In implementing this new licensing scheme, we had to change Flexsim's compiling mechanism, and unfortunately as a side effect, this changed the way that DLL's connect to Flexsim commands. DLL's compiled against Flexsim version 4 and previous will no longer work in version 5. In order to properly connect to version 5, DLL's must be re-compiled with some updated header/source files. I've updated the google code svn repository at http://code.google.com/p/flexsim-dll-project/ as well as the DLLMaker.zip download in the wiki article to use these updated header/source files. The updated files are backwards-compatible with version 4, so if you are actively developing or maintaining a DLL, you can add the updated files to your project now and they will work with both version 4 and version 5. Please do this now so that the update will be as seamless as possible. If you need to manually merge the changes into your project because you've modified the files yourself, you can view the svn log for detailed information on changes that were made. The updates were committed in revision 77 of the repository. Here's a short synopsis of the changes: - DLLMain.cpp - this is where most of the changes were made. The dll connects to an exported function that gets the commands, instead of using GetProcAddress directly. It also uses a more friendly method for binding commands. It only prints errors if you try to call a command that it can't bind to. - binding.h - This redefines the macros for binding to use the exported function instead of GetProcAddress. - FlexsimFuncs.h - This adds an EXalias command. This is mostly just to get DLLMain.cpp to compile. The command isn't available in version 4 (although you should leave it in even when you compile for version 4), but will be in version 5. 2. DLL Licensing Some of our distributors use DLL-accessible commands for retrieving licensing information. Since we are moving to a new licensing scheme, the dll mechanism for retrieving license information will likely change. We are still working on this, so we will update you on this as the licensing implementation matures. 3. Undo In version 5 we are adding a new undo capability. All operations done in ortho/perspective/tree windows, any operations done through a modeling utility window, and any edit operations in a Global Table view, will be undo-able (note that changes made through a Properties window will not be undo-able). If you are a user library developer who has added advanced features to your user library, you may need to add some scripting that properly records changes to the undo history. As we get nearer to releasing the beta version, I will update this thread with documentation on the commands used to manipulate the undo history. Items you may need to customize are as follows: - Dropscripts - If your library uses dropscripts, you may need to add some code to the script to properly record information to the undo history. I believe that 99% of dropscripts will work as-is, but you'll want to test them once the beta is available. - OnCreate/OnDestroy events - If your library uses OnCreate or OnDestroy events, you will want to test that these work properly with undo/redo. Again, 99% of the time it should work as-is, but you'll want to test it. - Custom drag-connect logic - If you implement customized drag-connect logic, you'll want to make sure that it works with the undo functionality. Again, the 99% rule applies here, but you'll want to test it. - Custom ortho/perspective/tree views - if your library customizes Flexsim's ortho/perspective/tree views, or if you implement your own, you will need to add scripting into the right-click menu options/triggers of the view so that they properly record changes to the undo history. - Custom utility windows - If you implement your own utility window(s) (like the Edit Selected Objects window) you'll need to add scripting to the buttons/options of that window to properly record undo information to the undo history. - Custom table views - If your library has customized table views that you'd like to be undo-able, you'll need to add an attribute to the table view. Anyway, I'll post new information to this thread as it becomes available. |
The Following 15 Users Say Thank You to Anthony Johnson For This Useful Post: | ||
Tom David (09-30-2009) |
#2
|
||||
|
||||
Anthony,
Thank you for warning us. I'll test it and see what comes up. In the mean time will you not forget to make the last functions visible from Flexsim side that are still invisible? Accoording the todo.txt that only implies to 16 functions or so. I tested it but it gives error messages with me on the flexsimfuncs.h: line in file: typedef intarray & (*_getglobalvariableasintarray)(int index); error: 1>c:\program files\flexsim 4.5\libraries\sms siemag\dll files\FlexsimFuncs.h(885) : error C2143: syntax error : missing ';' before '&' There are quite a few more like that. Do I have to change a setting or something like that Last edited by Steven Hamoen; 10-01-2009 at 03:28 AM. Reason: Test result included |
The Following User Says Thank You to Steven Hamoen For This Useful Post: | ||
Anthony Johnson (10-01-2009) |
#3
|
||||
|
||||
DLL execution speed?
Anthony, do you expect any changes in execution speed with the new way of linking with a DLL? Any testing done?
|
#4
|
|||
|
|||
Hi Steven,
I tested to compile the latest version of the files and it works for me. I did the compiling both in Visual Studio 2005 and 2008 (not express). Try to update the files again from Google code and if that is not working, then it is something in your code that cause the problem. Lars-Olof |
#5
|
||||
|
||||
Hi Lars-Olof,
I took the latest versions of the 3 files that Anthony mentioned (from the Google project) and I use visual studion 2008 express. So maybe there lies the problem. From the error reports it says the there is no default int in c++ so that it expects somethink like : typedef int intarray & (*_getglobalvariableasintarray)(int index); But if it works for you I'll take another look. Maybe it takes files from a different project because it finds them there first. I'll try again tomorrow |
#6
|
||||
|
||||
I haven't tested it, but as far as I know, it should work just as fast. The only difference would be in the binding phase, and even then it shouldn't affect it much at all.
|
#7
|
||||
|
||||
Quote:
|
#8
|
||||
|
||||
Anthony, you were right. But it was even more complex because it looked for the .h files in a directory of another library that still had the old stuff
So after fixing that, the transfer of 1 library was without any problems (I could even remove some functions that I had created myself because they are now overloaded) |
#10
|
||||
|
||||
Right now we're aiming for January for the beta release, and then March as the full release. The one big task remaining is to get several requested debugging features in, although there's also a lot of "tying up loose ends" that needs to be done as well. I'll admit we've suffered from a little "feature creep". We've added an animation creator and support for the sketchup .skp file format, which wasn't in the initial goals for version 5, but which we believe is worth the extra effort/time that it took. That has put us a little behind, and we might not make our January/March goal. If it comes to that point and we're still not done, I think I'd rather get the debugging features in and get it out late rather than make the January/March goal with fewer debugging features. Although I definitely don't want to push it past a February/April timeline, and I'm pretty sure that won't be necessary.
|
The Following 14 Users Say Thank You to Anthony Johnson For This Useful Post: | ||
Tom David (12-03-2009) |
Thread | Thread Starter | Forum | Replies | Last Post |
Full Version v.s. Free Trial Version v.s. Runtime Version | Cliff King | Installation | 5 | 02-14-2010 01:01 PM |
How to get the Global Code Functionality from Version 3 into version 4. | Regan Blackett | Tips and Tricks | 1 | 09-03-2007 06:12 AM |