Advertisement
Guest User

BuildSpeakers.py

a guest
Aug 14th, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.86 KB | None | 0 0
  1. import math, random
  2. import rhinoscriptsyntax as rs
  3.  
  4. def RandomPoints(range, count, tolerance):
  5.   points = []
  6.   while len(points) < count:
  7.     cur = (random.uniform(-range, range), random.uniform(-range, range), 0)
  8.     good = True
  9.     for old in points:
  10.       if rs.PointCompare(cur, old, tolerance):
  11.         good = False
  12.         break
  13.     if good:
  14.       points.append(cur)
  15.   return points
  16.  
  17. def BuildSpeakers():
  18.   random.seed(0)
  19.   speaker = rs.ObjectsByName("Speaker", True, True)
  20.   wires = rs.ObjectsByName("Wires", True, True)
  21.   lights = rs.ObjectsByName("Lights", True, True)
  22.   maxTranslation = 240 #rs.GetReal("max translation")
  23.   minSpeakerOffset = -20 #rs.GetReal("min speaker offset")
  24.   maxSpeakerOffset = +150 #rs.GetReal("max speaker offset")
  25.   speakerTarget = (-100, 0, 0) # rs.GetPoint("speaker target")
  26.   maxSpeakers = 50 # rs.GetInteger("max speakers")
  27.   tolerance = 30 # rs.GetReal("speaker distance tolerance")
  28.   whiteness = 255 # rs.GetInteger("light whiteness")
  29.   allPoints = RandomPoints(maxTranslation, maxSpeakers, tolerance)
  30.   for curTranslation in allPoints:
  31.     curWires = rs.CopyObjects(wires, curTranslation)
  32.     speakerOffset = (0, 0, random.uniform(minSpeakerOffset, maxSpeakerOffset))
  33.     curSpeakerTranslation = rs.VectorAdd(curTranslation, speakerOffset)
  34.     curSpeaker = rs.CopyObjects(speaker, curSpeakerTranslation)
  35.     curSpeakerRotation = rs.Angle(speakerTarget, curSpeakerTranslation)
  36.     rs.RotateObjects(curSpeaker, curSpeakerTranslation, curSpeakerRotation[0], (0, 0, 1))
  37.     curLights = rs.CopyObjects(lights, curSpeakerTranslation)
  38.     for curLight in curLights:
  39.       rs.LightColor(curLight, (
  40.         random.uniform(whiteness, 255),
  41.         random.uniform(whiteness, 255),
  42.         random.uniform(whiteness, 255)))
  43.   rs.DeleteObjects(speaker)
  44.   rs.DeleteObjects(wires)
  45.   rs.DeleteObjects(lights)
  46.  
  47. BuildSpeakers()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement