Skip to content

Instantly share code, notes, and snippets.

@chadcooper
Created April 2, 2013 01:35
Show Gist options
  • Save chadcooper/5289280 to your computer and use it in GitHub Desktop.
Save chadcooper/5289280 to your computer and use it in GitHub Desktop.
Places a cartesian array of cylinders on a planetary sphere in Vue. End result here: http://i.imgur.com/cwi6M5O.jpg
# Create the Cartesian array with Python:
>>> import itertools
>>> d = {}
>>> count = 1
>>> for i in itertools.product([0,100,200,300,400,500,600,700,800,900,1000],[0,-
100,-200,-300,-400,-500,-600,-700,-800,-900,-1000]):
... d[count] = list(i)
... count += 1
...
>>> d
{1: [0, 0], 2: [0, -100], 3: [0, -200], 4: [0, -300], 5: [0, -400], 6: [0, -500]
, 7: [0, -600], 8: [0, -700], 9: [0, -800], 10: [0, -900], 11: [0, -1000], 12: [
100, 0], 13: [100, -100], 14: [100, -200], 15: [100, -300], 16: [100, -400], 17:
[100, -500], 18: [100, -600], 19: [100, -700], 20: [100, -800], 21: [100, -900]
, 22: [100, -1000], 23: [200, 0], 24: [200, -100], 25: [200, -200], 26: [200, -3
00], 27: [200, -400], 28: [200, -500], 29: [200, -600], 30: [200, -700], 31: [20
0, -800], 32: [200, -900], 33: [200, -1000], 34: [300, 0], 35: [300, -100], 36:
[300, -200], 37: [300, -300], 38: [300, -400], 39: [300, -500], 40: [300, -600],
41: [300, -700], 42: [300, -800], 43: [300, -900], 44: [300, -1000], 45: [400,
0], 46: [400, -100], 47: [400, -200], 48: [400, -300], 49: [400, -400], 50: [400
, -500], 51: [400, -600], 52: [400, -700], 53: [400, -800], 54: [400, -900], 55:
[400, -1000], 56: [500, 0], 57: [500, -100], 58: [500, -200], 59: [500, -300],
60: [500, -400], 61: [500, -500], 62: [500, -600], 63: [500, -700], 64: [500, -8
00], 65: [500, -900], 66: [500, -1000], 67: [600, 0], 68: [600, -100], 69: [600,
-200], 70: [600, -300], 71: [600, -400], 72: [600, -500], 73: [600, -600], 74:
[600, -700], 75: [600, -800], 76: [600, -900], 77: [600, -1000], 78: [700, 0], 7
9: [700, -100], 80: [700, -200], 81: [700, -300], 82: [700, -400], 83: [700, -50
0], 84: [700, -600], 85: [700, -700], 86: [700, -800], 87: [700, -900], 88: [700
, -1000], 89: [800, 0], 90: [800, -100], 91: [800, -200], 92: [800, -300], 93: [
800, -400], 94: [800, -500], 95: [800, -600], 96: [800, -700], 97: [800, -800],
98: [800, -900], 99: [800, -1000], 100: [900, 0], 101: [900, -100], 102: [900, -
200], 103: [900, -300], 104: [900, -400], 105: [900, -500], 106: [900, -600], 10
7: [900, -700], 108: [900, -800], 109: [900, -900], 110: [900, -1000], 111: [100
0, 0], 112: [1000, -100], 113: [1000, -200], 114: [1000, -300], 115: [1000, -400
], 116: [1000, -500], 117: [1000, -600], 118: [1000, -700], 119: [1000, -800], 1
20: [1000, -900], 121: [1000, -1000]}
>>>
# now add z values to the lists:
>>> d2=d
>>> for k, v in d2.iteritems():
... v.append(500)
...
>>> d2
{1: [0, 0, 500], 2: [0, -100, 500], 3: [0, -200, 500], 4: [0, -300, 500], 5: [0,
-400, 500], 6: [0, -500, 500], 7: [0, -600, 500], 8: [0, -700, 500], 9: [0, -80
0, 500], 10: [0, -900, 500], 11: [0, -1000, 500], 12: [100, 0, 500], 13: [100, -
100, 500], 14: [100, -200, 500], 15: [100, -300, 500], 16: [100, -400, 500], 17:
[100, -500, 500], 18: [100, -600, 500], 19: [100, -700, 500], 20: [100, -800, 5
00], 21: [100, -900, 500], 22: [100, -1000, 500], 23: [200, 0, 500], 24: [200, -
100, 500], 25: [200, -200, 500], 26: [200, -300, 500], 27: [200, -400, 500], 28:
[200, -500, 500], 29: [200, -600, 500], 30: [200, -700, 500], 31: [200, -800, 5
00], 32: [200, -900, 500], 33: [200, -1000, 500], 34: [300, 0, 500], 35: [300, -
100, 500], 36: [300, -200, 500], 37: [300, -300, 500], 38: [300, -400, 500], 39:
[300, -500, 500], 40: [300, -600, 500], 41: [300, -700, 500], 42: [300, -800, 5
00], 43: [300, -900, 500], 44: [300, -1000, 500], 45: [400, 0, 500], 46: [400, -
100, 500], 47: [400, -200, 500], 48: [400, -300, 500], 49: [400, -400, 500], 50:
[400, -500, 500], 51: [400, -600, 500], 52: [400, -700, 500], 53: [400, -800, 5
00], 54: [400, -900, 500], 55: [400, -1000, 500], 56: [500, 0, 500], 57: [500, -
100, 500], 58: [500, -200, 500], 59: [500, -300, 500], 60: [500, -400, 500], 61:
[500, -500, 500], 62: [500, -600, 500], 63: [500, -700, 500], 64: [500, -800, 5
00], 65: [500, -900, 500], 66: [500, -1000, 500], 67: [600, 0, 500], 68: [600, -
100, 500], 69: [600, -200, 500], 70: [600, -300, 500], 71: [600, -400, 500], 72:
[600, -500, 500], 73: [600, -600, 500], 74: [600, -700, 500], 75: [600, -800, 5
00], 76: [600, -900, 500], 77: [600, -1000, 500], 78: [700, 0, 500], 79: [700, -
100, 500], 80: [700, -200, 500], 81: [700, -300, 500], 82: [700, -400, 500], 83:
[700, -500, 500], 84: [700, -600, 500], 85: [700, -700, 500], 86: [700, -800, 5
00], 87: [700, -900, 500], 88: [700, -1000, 500], 89: [800, 0, 500], 90: [800, -
100, 500], 91: [800, -200, 500], 92: [800, -300, 500], 93: [800, -400, 500], 94:
[800, -500, 500], 95: [800, -600, 500], 96: [800, -700, 500], 97: [800, -800, 5
00], 98: [800, -900, 500], 99: [800, -1000, 500], 100: [900, 0, 500], 101: [900,
-100, 500], 102: [900, -200, 500], 103: [900, -300, 500], 104: [900, -400, 500]
, 105: [900, -500, 500], 106: [900, -600, 500], 107: [900, -700, 500], 108: [900
, -800, 500], 109: [900, -900, 500], 110: [900, -1000, 500], 111: [1000, 0, 500]
, 112: [1000, -100, 500], 113: [1000, -200, 500], 114: [1000, -300, 500], 115: [
1000, -400, 500], 116: [1000, -500, 500], 117: [1000, -600, 500], 118: [1000, -7
00, 500], 119: [1000, -800, 500], 120: [1000, -900, 500], 121: [1000, -1000, 500
]}
>>>
# Now print it out to copy into script below:
>>> for k, v in d2.iteritems():
... print k,":", v,","
...
1 : [0, 0, 500] ,
2 : [0, -100, 500] ,
3 : [0, -200, 500] ,
4 : [0, -300, 500] ,
5 : [0, -400, 500] ,
6 : [0, -500, 500] ,
7 : [0, -600, 500] ,
8 : [0, -700, 500] ,
9 : [0, -800, 500] ,
10 : [0, -900, 500] ,
11 : [0, -1000, 500] ,
12 : [100, 0, 500] ,
13 : [100, -100, 500] ,
14 : [100, -200, 500] ,
15 : [100, -300, 500] ,
16 : [100, -400, 500] ,
17 : [100, -500, 500] ,
18 : [100, -600, 500] ,
19 : [100, -700, 500] ,
20 : [100, -800, 500] ,
21 : [100, -900, 500] ,
22 : [100, -1000, 500] ,
23 : [200, 0, 500] ,
24 : [200, -100, 500] ,
25 : [200, -200, 500] ,
26 : [200, -300, 500] ,
27 : [200, -400, 500] ,
28 : [200, -500, 500] ,
29 : [200, -600, 500] ,
30 : [200, -700, 500] ,
31 : [200, -800, 500] ,
32 : [200, -900, 500] ,
33 : [200, -1000, 500] ,
34 : [300, 0, 500] ,
35 : [300, -100, 500] ,
36 : [300, -200, 500] ,
37 : [300, -300, 500] ,
38 : [300, -400, 500] ,
39 : [300, -500, 500] ,
40 : [300, -600, 500] ,
41 : [300, -700, 500] ,
42 : [300, -800, 500] ,
43 : [300, -900, 500] ,
44 : [300, -1000, 500] ,
45 : [400, 0, 500] ,
46 : [400, -100, 500] ,
47 : [400, -200, 500] ,
48 : [400, -300, 500] ,
49 : [400, -400, 500] ,
50 : [400, -500, 500] ,
51 : [400, -600, 500] ,
52 : [400, -700, 500] ,
53 : [400, -800, 500] ,
54 : [400, -900, 500] ,
55 : [400, -1000, 500] ,
56 : [500, 0, 500] ,
57 : [500, -100, 500] ,
58 : [500, -200, 500] ,
59 : [500, -300, 500] ,
60 : [500, -400, 500] ,
61 : [500, -500, 500] ,
62 : [500, -600, 500] ,
63 : [500, -700, 500] ,
64 : [500, -800, 500] ,
65 : [500, -900, 500] ,
66 : [500, -1000, 500] ,
67 : [600, 0, 500] ,
68 : [600, -100, 500] ,
69 : [600, -200, 500] ,
70 : [600, -300, 500] ,
71 : [600, -400, 500] ,
72 : [600, -500, 500] ,
73 : [600, -600, 500] ,
74 : [600, -700, 500] ,
75 : [600, -800, 500] ,
76 : [600, -900, 500] ,
77 : [600, -1000, 500] ,
78 : [700, 0, 500] ,
79 : [700, -100, 500] ,
80 : [700, -200, 500] ,
81 : [700, -300, 500] ,
82 : [700, -400, 500] ,
83 : [700, -500, 500] ,
84 : [700, -600, 500] ,
85 : [700, -700, 500] ,
86 : [700, -800, 500] ,
87 : [700, -900, 500] ,
88 : [700, -1000, 500] ,
89 : [800, 0, 500] ,
90 : [800, -100, 500] ,
91 : [800, -200, 500] ,
92 : [800, -300, 500] ,
93 : [800, -400, 500] ,
94 : [800, -500, 500] ,
95 : [800, -600, 500] ,
96 : [800, -700, 500] ,
97 : [800, -800, 500] ,
98 : [800, -900, 500] ,
99 : [800, -1000, 500] ,
100 : [900, 0, 500] ,
101 : [900, -100, 500] ,
102 : [900, -200, 500] ,
103 : [900, -300, 500] ,
104 : [900, -400, 500] ,
105 : [900, -500, 500] ,
106 : [900, -600, 500] ,
107 : [900, -700, 500] ,
108 : [900, -800, 500] ,
109 : [900, -900, 500] ,
110 : [900, -1000, 500] ,
111 : [1000, 0, 500] ,
112 : [1000, -100, 500] ,
113 : [1000, -200, 500] ,
114 : [1000, -300, 500] ,
115 : [1000, -400, 500] ,
116 : [1000, -500, 500] ,
117 : [1000, -600, 500] ,
118 : [1000, -700, 500] ,
119 : [1000, -800, 500] ,
120 : [1000, -900, 500] ,
121 : [1000, -1000, 500] ,
>>>
# Using the following code on a 1km scene radius planetary terrain:
d_100s = {1 : [0, 0, 500] ,
2 : [0, -100, 500] ,
3 : [0, -200, 500] ,
4 : [0, -300, 500] ,
5 : [0, -400, 500] ,
6 : [0, -500, 500] ,
7 : [0, -600, 500] ,
8 : [0, -700, 500] ,
9 : [0, -800, 500] ,
10 : [0, -900, 500] ,
11 : [0, -1000, 500] ,
12 : [100, 0, 500] ,
13 : [100, -100, 500] ,
14 : [100, -200, 500] ,
15 : [100, -300, 500] ,
16 : [100, -400, 500] ,
17 : [100, -500, 500] ,
18 : [100, -600, 500] ,
19 : [100, -700, 500] ,
20 : [100, -800, 500] ,
21 : [100, -900, 500] ,
22 : [100, -1000, 500] ,
23 : [200, 0, 500] ,
24 : [200, -100, 500] ,
25 : [200, -200, 500] ,
26 : [200, -300, 500] ,
27 : [200, -400, 500] ,
28 : [200, -500, 500] ,
29 : [200, -600, 500] ,
30 : [200, -700, 500] ,
31 : [200, -800, 500] ,
32 : [200, -900, 500] ,
33 : [200, -1000, 500] ,
34 : [300, 0, 500] ,
35 : [300, -100, 500] ,
36 : [300, -200, 500] ,
37 : [300, -300, 500] ,
38 : [300, -400, 500] ,
39 : [300, -500, 500] ,
40 : [300, -600, 500] ,
41 : [300, -700, 500] ,
42 : [300, -800, 500] ,
43 : [300, -900, 500] ,
44 : [300, -1000, 500] ,
45 : [400, 0, 500] ,
46 : [400, -100, 500] ,
47 : [400, -200, 500] ,
48 : [400, -300, 500] ,
49 : [400, -400, 500] ,
50 : [400, -500, 500] ,
51 : [400, -600, 500] ,
52 : [400, -700, 500] ,
53 : [400, -800, 500] ,
54 : [400, -900, 500] ,
55 : [400, -1000, 500] ,
56 : [500, 0, 500] ,
57 : [500, -100, 500] ,
58 : [500, -200, 500] ,
59 : [500, -300, 500] ,
60 : [500, -400, 500] ,
61 : [500, -500, 500] ,
62 : [500, -600, 500] ,
63 : [500, -700, 500] ,
64 : [500, -800, 500] ,
65 : [500, -900, 500] ,
66 : [500, -1000, 500] ,
67 : [600, 0, 500] ,
68 : [600, -100, 500] ,
69 : [600, -200, 500] ,
70 : [600, -300, 500] ,
71 : [600, -400, 500] ,
72 : [600, -500, 500] ,
73 : [600, -600, 500] ,
74 : [600, -700, 500] ,
75 : [600, -800, 500] ,
76 : [600, -900, 500] ,
77 : [600, -1000, 500] ,
78 : [700, 0, 500] ,
79 : [700, -100, 500] ,
80 : [700, -200, 500] ,
81 : [700, -300, 500] ,
82 : [700, -400, 500] ,
83 : [700, -500, 500] ,
84 : [700, -600, 500] ,
85 : [700, -700, 500] ,
86 : [700, -800, 500] ,
87 : [700, -900, 500] ,
88 : [700, -1000, 500] ,
89 : [800, 0, 500] ,
90 : [800, -100, 500] ,
91 : [800, -200, 500] ,
92 : [800, -300, 500] ,
93 : [800, -400, 500] ,
94 : [800, -500, 500] ,
95 : [800, -600, 500] ,
96 : [800, -700, 500] ,
97 : [800, -800, 500] ,
98 : [800, -900, 500] ,
99 : [800, -1000, 500] ,
100 : [900, 0, 500] ,
101 : [900, -100, 500] ,
102 : [900, -200, 500] ,
103 : [900, -300, 500] ,
104 : [900, -400, 500] ,
105 : [900, -500, 500] ,
106 : [900, -600, 500] ,
107 : [900, -700, 500] ,
108 : [900, -800, 500] ,
109 : [900, -900, 500] ,
110 : [900, -1000, 500] ,
111 : [1000, 0, 500] ,
112 : [1000, -100, 500] ,
113 : [1000, -200, 500] ,
114 : [1000, -300, 500] ,
115 : [1000, -400, 500] ,
116 : [1000, -500, 500] ,
117 : [1000, -600, 500] ,
118 : [1000, -700, 500] ,
119 : [1000, -800, 500] ,
120 : [1000, -900, 500] ,
121 : [1000, -1000, 500]}
def get_object_size(vue_object):
""" Takes a input Vue object, gets it's bounding box, then does the
math to get the XYZ size of the object. Returns a X,Y,Z tuple of
the object size.
"""
bounding_box = vue_object.GetBoundingBox()
bb_min = bounding_box.GetMin()
bb_max = bounding_box.GetMax()
# Build our tuple of object XYZ size
object_size = (bb_max[0] - bb_min[0], bb_max[1] - bb_min[1],
bb_max[2] - bb_min[2])
return object_size
i = 1
for k, v in d_100s.iteritems():
AddCylinder()
cyl = GetSelectedObjectByIndex(0)
cyl.SetPosition((v[0]), (v[1]), v[2]/2)
Refresh()
# Get Z size of object
orig_z = get_object_size(cyl)[2]
print orig_z
cyl.ResizeAxis(10, 10, (v[2])/orig_z)
Refresh()
DeselectAll()
i += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment