Jump to content
Simio Forum

jdoran

Members
  • Content Count

    670
  • Joined

  • Last visited

Community Reputation

0 Neutral

About jdoran

Converted

  • LOCATION
    Brisbane, QLD

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. This fixed the outstanding bug where writing in an experiment would dump all csv files in the simulation root directory, ignoring the relative directories you specify in the file path in the file element. The fix was trivial, and I am sure I have raised it several times both on this forum. I made the fix a few months ago, and have kept meaning to post it here (if indeed I have not already). The problem with unofficial fixes is that it is another moving part to update, keep track of, and adds to installation complexity. I have lost previous fixes twice (due to fresh re-installs). Essentially "fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName);" was the culprit. I changed the "_writerFileName" directive from using the above variable to: _writerFileName = "fileName + "_" + simioScenarioName + "_Rep" + simioReplicationNumber + fileExtension;" I could do something neater (as the current output will have a ".csv" in the middle of the name), but did not spend any time on this. It would be appreciated if this was fixed and applied to the official write block (even if as a toggleable option), as due to the over-zealous licensing terms, the DLL will not load on an unlicensed client... meaning I have to choose between having the bug fixed and not dumping hundreds of thousands of CSV files in my simulation root... or causing clients considerable inconvenience by writing hundreds of thousands of CSV files into their simulation root. Here is the relevant code extract in the file element: if (String.IsNullOrEmpty(fileName) == false) { string fileRoot = null; string fileDirectoryName = null; string fileNameWithoutExtension = null; string fileExtension = null; try { fileRoot = System.IO.Path.GetPathRoot(fileName); fileDirectoryName = System.IO.Path.GetDirectoryName(fileName); fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName); fileExtension = System.IO.Path.GetExtension(fileName); } catch (ArgumentException e) { data.ExecutionContext.ExecutionInformation.ReportError(String.Format("Failed to create runtime file element. Message: {0}", e.Message)); } string simioProjectFolder = _data.ExecutionContext.ExecutionInformation.ProjectFolder; string simioExperimentName = _data.ExecutionContext.ExecutionInformation.ExperimentName; string simioScenarioName = _data.ExecutionContext.ExecutionInformation.ScenarioName; string simioReplicationNumber = _data.ExecutionContext.ExecutionInformation.ReplicationNumber.ToString(); if (String.IsNullOrEmpty(fileDirectoryName) || String.IsNullOrEmpty(fileRoot)) { fileDirectoryName = simioProjectFolder; fileName = fileDirectoryName + "\\" + fileName; } _readerFileName = fileName; if (String.IsNullOrEmpty(simioExperimentName)) _writerFileName = fileName; else _writerFileName = fileName + "_" + simioScenarioName + "_Rep" + simioReplicationNumber + fileExtension; } Using relative file paths worked at one stage, and was later broken. Below are two threads with work around un-offical dlls that probably implement the fix nicer. 10/07/2012 - http://www.simio.com/forums/viewtopic.php?f=19&t=829 07/12/2012 - http://www.simio.com/forums/viewtopic.php?f=20&t=987 TextFileReadWrite_compiled.zip TextFileReadWrite_source.zip
  2. At the most basic level, in your add-on process that gets executed during "Processing", add a "Delay" step for the time required. As Dave mentioned, you can use: a state, property or expression to dictate how long the delay is for.
  3. Ah shucks Dave. Thanks for the call out. I enjoy using Simio, as it is one of the premier simulation tools, and I would like to see it become the standard "go-to" tool for general simulation purposes. I have a vested interest in steering development towards mining purposes, so at times I am sure that what I was requesting might have been a polar opposite to the direction you intended to take development for general purposes. That being said, out of the massive list of suggestions I have made over the last year, a good portion have been added. I trust Simio will continue to grow and mature, and I hope to play a small part in this happening... even if it is only to throw peanuts from the gallery.
  4. Have a look at making your own copy of the vehicle type (copy not sub-class). And then you can play with the ResourceState state value. Changing some of those default values can vastly improve the utilisation calculations, and make them more useful. The next part is daunting, but you can add extra states to your vehicle in the list, and then add extra assigns in the vehicle logic to set the ResourceState to this new value at appropriate times. Best of luck!
  5. Dave recommends going back to the source, which is definitely going to be the easier option. However, if you really want to get at the embedded models, open the Simio project file (my_awesome_model.spfx) like a zip using 7-zip or some other archive managing tool. In the Simio Project file, there is a "\Data\Geometry\" folder. You will find all of the custom (user added) symbols here. They are in S3D format. As I have never had to use these directly, I never felt a need to find what tool can open those. As for the Simio ones, they are all ssfx files (another format I haven't had to play with yet). They can be found in the Simio folder in your documents. Something like: "C:\Users\Public\Documents\Simio\Symbols"
  6. Thanks Glen. I hope this thread is visible enough for someone who encounters this issue. It might also be worth packing it with future Simio releases and calling it something like ManualReturnRoamedLicense.exe ... or something.
  7. You could make two vehicle groups (in lists), and in your seize block reference a property that points to one of the lists. You could then run an experiment with multiple scenarios where you toggle between the two lists.
  8. You could use a monitor element to monitor the "crossingstatechange" of "Server1.Processing.Contents", and trigger a process when it is set off. That process could use a Notify step. http://www.mediafire.com/?3nsu79xgz899ag9
  9. If you are working with moving things like entities or worker, you would need to: Suspend the associated entity's movement, Delay the process, and then Resume the associated entity's movement. You could substitute the Delay step with a Wait step if you wanted to.
  10. I often see that the recommended place to install UserExtensions (dlls) is in the the user's documents (i.e. C:\Users\\Documents\SimioUserExtensions), but I would just like to point out for network admins that installing it to the Simio installation directory works too, and can save having to copy files on login to user directories. Example path: C:\Program Files (x86)\Simio\UserExtensions
  11. I finally got around to testing this, and the immediate restriction I see is that you can only use states and not functions. I.e. TimeNow, or custom math statements.
  12. Great addition! If only this were here a few weeks ago, to save us creating our own... then again ours also auto generates a graph of the data.
  13. I call it cheating because you can't scale it properly. Attached is how I would rectify that (Check out the Parent_Model). Using an entity instead of a server is valid, as it posses functionality we can't get out of the server (heading etc.). While I agree with you about the technicality of the term sub-model, I disagree in your interpretation of its function. Any model that contains a logical flow and is made up of custom logic, that I use within another model, I just call sub-model (for better or worse). The rest I just consider to be part of the provided toolkit. "Sub-models" are incredibly useful, until you need to start to modify things inside them from the Parent model, or need to change their height within the sub-model (sub-models do not scale dimension wise at all, while retaining usefulness). 3DRotatingServer.spfx
  14. You cheated! It has to be a sub-model lol. I remember spending ages making an excavator sub-model, and now we have a travel step to make lives easier.
×
×
  • Create New...