As of version 3.0, OpenSim comes with a built in scripting shell that allows user access to the OpenSim API for loading, editing, and building models, running tools, plotting results, and more. The syntax for the scripting shell in the GUI is Python.
Tips and Tricks
- You can change the location of the Scripts directory by going to Edit > Preferences... and changing the directory under the "Path: Scripts Path" option (see User Preferences for more information).
- Note that you have to restart OpenSim for the change to take place.
- The default value is <ResourcesDir>/Code/GUI, and the value is reset if you run installResources() in the ScriptingShell.
- In the ScriptingShell, you can access the value of this preference using getScriptsPath().
- After loading a script, variables defined in the script are available for future reference.
- A panel to echo commands and files executed in the scripting shell is available (the "Command History"). You can clear the command history by right clicking in the window and selecting "Clear".
- If there are errors in running a script from file, you can view the corresponding error messages by clicking on the red error icon in the bottom right of the OpenSim screen, and then selecting "Show Details"
- In the GUI scripting shell, code executed as part of for loops or if statements is controlled by indentation, rather than braces as in C++ or the for/end convention in Matlab. Otherwise, at the ScriptingShell command prompt, you must enter one line at a time.
Interacting with the GUI (including the Plotter)
In the GUI scripting shell, we've provided a set of commands that allow you to easily perform some basic plotting functionality. This includes adding a plot window, adding curves, changing the legend, plotting from file, exporting the plot, etc.
These commands are exercised in the examples "plotMuscleFiberLengthAgainstFile.py" and "plotMuscleMomentArmAgainstMotion.py".
There are additional advanced commands that you can call (the ones used by the GUI itself), though these commands have not been fully documented and tested with the scripting functionality, so please use with caution.
Available Example Scripts
|runTutorialOne.py||This example script performs the steps performed in Tutorial 1 - Intro to Musculoskeletal Modeling.|
|runTutorialTwo.py||This example script performs the steps performed in Tutorial 2 - Simulation and Analysis of a Tendon Transfer Surgery.|
|runTutorialThree.py||This example script performs the steps performed in Tutorial 3 - Scaling, Inverse Kinematics, and Inverse Dynamics.|
|testShowModelSummary.py||Displays information about the current model in a standalone dialog.|
Shows how to create and display a plot window. The script loads the BothLegs OpenSim model and adds curves of fiber length for the model. Then, it loads and plots data from a storage file, which contains fiber lengths for the model Subject01_simbody that is included with the OpenSim distribution.
|plotMuscleMomentArmAgainstMotion.py||Shows how to plot muscle moment arms as a function of a motion.|
|makeUlnaHeavy.py||Shows how to create a modified version of a model that is loaded in the GUI. The script increases the mass of the ulna. The modified model is then loaded in the GUI.|
|alterTendonSlackLength.py||Shows how to change the attributes of the muscles for the current model.|
|runScaling.py||Runs the scale tool for the Gait2354 model, and loads the generic and scaled models in the GUI.|
|Runs multiple inverse kinematics trials. To see the results, load the model and IK output in the GUI.|
Increases the max. isometric force of all the muscles in the currently loaded model. A pop-up dialog displays a confirmation with the name of the new model.
|editProperties.py||Script to demonstrate how to edit model component properties.|
|ModelBuilder.py||Helper functions for adding specific types of components (Bodies, Frames, Joints, Geometry) to a model.|
|createControlsFromStorage.py||Helper function to create a controls.xml file from a .sto file.|