2 Demonstrates how to interoperate corresponding MAXScript types from Python and vice versa
5 from pymxs
import runtime
as rt
8 def _ShowPyObject(obj):
12 def _ShowMXSObject(obj):
16 def _RunMXS(code_buff):
18 for line
in textwrap.dedent(code_buff).split(
'\n'):
24 arr = rt.Array(*range(3))
31 def IterateArray(arr):
39 _ShowMXSObject(first_elem)
41 _ShowMXSObject(last_elem)
45 def ManipulateArray(arr):
48 rt.deleteItem(arr, arr.count)
53 arr_as_list = list(arr)
54 _ShowPyObject(arr_as_list)
60 def ArrayToTuple(arr):
61 arr_as_tuple = tuple(arr)
62 _ShowPyObject(arr_as_tuple)
68 def ListToArray(list_obj):
69 arr = rt.Array(*list_obj)
76 def TupleToArray(tuple_obj):
77 arr = rt.Array(*tuple_obj)
85 print "#Create Array:"
88 print "#Iterate Array:"
94 print "#Manipulate Array"
97 print "#Array to Lit:"
98 arr_as_list = ArrayToList(arr)
100 print "#Array to Tuple:"
101 arr_as_tuple = ArrayToTuple(arr)
103 print "#List to Array:"
104 list_as_arr = ListToArray(arr_as_list)
106 print "#Tuple To Array:"
107 tuple_as_arr = TupleToArray(arr_as_tuple)
110 def CreateBitArray():
111 barr = rt.BitArray(1, 3, rt.Name(
"range"), 5, 7)
118 def IterateBitArray(barr):
124 def IndexBitArray(barr):
126 _ShowMXSObject(first_elem)
128 _ShowMXSObject(last_elem)
132 def ManipulateBitArray(barr):
141 def BitArrayInterop():
142 print "#Create BitArray"
143 barr = CreateBitArray()
145 print "#Iterate BitArray"
146 IterateBitArray(barr)
148 print "#Index BitArray"
151 print "#Manipulate BitArray"
152 ManipulateBitArray(barr)
155 def ImportPythonInMXS():
157 bi = python.import "__builtin__"
161 def CreateListInMXS():
163 my_list = bi.list #(1, 2, 3)
164 format "% %\n" (bi.type my_list) my_list
168 def CreateTupleInMXS():
170 my_tuple = bi.tuple #(4, 5, 6)
171 format "% %\n" (bi.type my_tuple) my_tuple
175 def IndexListInMXS():
177 format "% %\n" my_list[1] my_list[bi.len(my_list)]
181 def IndexTupleInMXS():
183 format "% %\n" my_Tuple[1] my_Tuple[bi.len(my_tuple)]
187 def ManipulateListInMXS():
189 my_list.append(my_tuple)
190 format "%\n" (my_list as string)
195 def ListToArrayInMXS():
197 list_as_arr = my_list as array
198 format "% %\n" (classof list_as_arr) list_as_arr
202 def TupleToArrayInMXS():
204 tuple_as_arr = my_tuple as array
205 format "% %\n" (classof tuple_as_arr) tuple_as_arr
209 def ListInteropInMXS():
210 print "#Create List:"
211 _RunMXS(CreateListInMXS())
214 _RunMXS(IndexListInMXS())
216 print "#Manipulate List:"
217 _RunMXS(ManipulateListInMXS())
219 print "#List to Array:"
220 _RunMXS(ListToArrayInMXS())
223 def TupleInteropInMXS():
224 print "#Create Tuple:"
225 _RunMXS(CreateTupleInMXS())
227 print "#Index Tuple:"
228 _RunMXS(IndexTupleInMXS())
230 print "#Tuple to Array:"
231 _RunMXS(TupleToArrayInMXS())
234 def CreateDictInMXS():
237 my_dict = bi.dict a:1 b:2 c:3
238 format "% %\n" (bi.type my_dict) my_dict
242 def ManipulateDictInMXS():
245 format "%\n" (my_dict as string)
246 my_dict.__delitem__("d")
249 def CreateMXSDictInPy():
253 mxsdict = rt.Dictionary(rt.name(
'string'))
259 def MXSDictToPyDict(mxsdict):
261 pydict = {str(key):mxsdict[key]
for key
in mxsdict.keys}
264 def DictInteropInMXS():
265 print "#Create Dict:"
266 _RunMXS(CreateDictInMXS())
268 print "#Manipulate Dict:"
269 _RunMXS(ManipulateDictInMXS())
271 print "Create MXS Dict:"
272 mxsdict = CreateMXSDictInPy()
275 print "Convert MXS Dict to Py Dict:"
276 pydict = MXSDictToPyDict(mxsdict)
281 _RunMXS(ImportPythonInMXS())
289 if __name__ ==
'__main__':