Created
April 2, 2013 01:35
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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