...
Now it is easy to loop through the individual elements of userSelection. A simple for … in loop will do the job. The process of checking whether rigid body dynamics is already activated or not should not be difficult, as it is simply an if-condition. Reading out the current “@ mass” value is also no mysteryIn case an object is already an active rigid body, the script will change its mass. So the body of the script could look like this:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
userSelection = scene.getSelectedNodes() for node in userSelection: rbdState = node.getParameter("Dynamics") if (rbdState != "Active rigid body"): node.setParameter("Dynamics", "Active rigid body") currentMass = node.getParameter("@ mass") |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
from time import * import random startTime = clock() percentVariation = 10 userSelection = scene.getSelectedNodes() for node in userSelection: rbdState = node.getParameter("Dynamics") if (rbdState != "Active rigid body"): node.setParameter("Dynamics", "Active rigid body") currentMass = node.getParameter("@ mass") range = (currentMass / 100) * (percentVariation / 2) randomValue = random.uniform(-range, range) newMass = currentMass + randomValue node.setParameter("@ mass", newMass) endTime = clock() diffTime = endTime - startTime scene.message("\nProcess finshed...\nElapsed time: "+str(diffTime)+" seconds") |
...