I found an interesting script at this Japanese blog [link].
import random def p(*args): if len(args)==0: MQSystem.println("") return for arg in args: MQSystem.println(str(arg)) #drawCube_def_metal.py doc = MQSystem.getDocument() out = MQSystem.println def unitcube(L=50,x=0,y=0,z=0): obj = MQSystem.newObject() num=doc.numObject a=num obj.name="cube_%d" % a obj.addVertex(x-L/2.0,y-L/2.0,z+L/2.0) #0 obj.addVertex(x+L/2.0,y-L/2.0,z+L/2.0) #1 obj.addVertex(x+L/2.0,y+L/2.0,z+L/2.0) #2 obj.addVertex(x-L/2.0,y+L/2.0,z+L/2.0) #3 obj.addVertex(x-L/2.0,y-L/2.0,z-L/2.0) #4 obj.addVertex(x-L/2.0,y+L/2.0,z-L/2.0) #5 obj.addVertex(x+L/2.0,y+L/2.0,z-L/2.0) #6 obj.addVertex(x+L/2.0,y-L/2.0,z-L/2.0) #7 obj.addFace([0,3,2,1]) obj.addFace([1,2,6,7]) obj.addFace([4,7,6,5]) obj.addFace([0,4,5,3]) obj.addFace([3,5,6,2]) obj.addFace([0,1,7,4]) doc.addObject( obj ) mat1=MQSystem.newMaterial() doc.addMaterial(mat1) num0 = doc.numMaterial numm=num0-1 doc.material[numm].color.red=num0*0.00346 doc.material[numm].color.green=0.1 doc.material[numm].color.blue=1-num0*0.00346 doc.material[numm].alpha=1.0 doc.material[numm].diffuse=1.0 doc.material[numm].ambient=0.0 doc.material[numm].emissive=0.0 doc.material[numm].specular=1.0 for face in obj.face: face.material=numm import traceback import sys cnt=0 try: for dist in range(0,1400,60): for dist2 in range(0,1400,60): cnt=cnt+1 #out(str(dist)) unitcube(40,dist-700,20+random.gauss(0,8),dist2-700) out(str(cnt)) except: info=sys.exc_info() p(info[0]) p(info[1]) p(*traceback.extract_tb(info[2])) num = doc.numObject out("number of cubes %d" % num)
Make sure you have an empty Scene in Metasequoia by clicking File>New then open the Script Editor and paste the code into the upper input pane of the editor.
Press F5 or Script>Run to execute the script and create the objects.
No comments:
Post a Comment