Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
themeEclipse
languagepython
linenumberstrue
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
themeEclipse
languagepython
linenumberstrue
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")

...