Metasequoia Python 立方体を複数つくる その5
- Metasequoia > Metasequoia Python
 - by yuichirou yokomakura
 - 2010.08.30 Monday 17:02
 
for文を使うとエラーが出ていましたが、マテリアルを関数の中に記述したら、エラーが出なくなりました。
for face in obj.face:
face.material=0 #マテリアル0番を面に割り当てる
を追加することでエラーが消えています。
しかもネスト入れ子構造にしてもOK。メタセコイアPython、とりあえず動いています。
まだマテリアルのところの処理は良くないです。材質パネルにたくさんできてしまいます。サンプルスクリプトはこちらです。

for face in obj.face:
face.material=0 #マテリアル0番を面に割り当てる
を追加することでエラーが消えています。
しかもネスト入れ子構造にしてもOK。メタセコイアPython、とりあえず動いています。
まだマテリアルのところの処理は良くないです。材質パネルにたくさんできてしまいます。サンプルスクリプトはこちらです。
def p(*args):
  """
  プリント関数
  複数の引数を渡せる。
  """
  if len(args)==0:
    # 改行させる
    MQSystem.println("")
    return
  for arg in args:
    MQSystem.println(str(arg))
# 基本図形、新規オブジェクトで立方体複数つくる その2
#error4.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)
	
	doc.material[0].color.red=0.99
	doc.material[0].color.green=0.12
	doc.material[0].color.blue=0.11
	for face in obj.face:
		face.material=0 #マテリアル0番を面に割り当てる
import traceback
import sys
#dist=0
try:
	for dist in range(0,340,110):
		for dist2 in range(0,340,110):
			#out(str(i))
			out(str(dist))
			unitcube(100,50+dist,50,dist2)
			
		
		
except:
	info=sys.exc_info()
	p(info[0])
	p(info[1])
	p(*traceback.extract_tb(info[2]))
num = doc.numObject #オブジェクトの数
out("オブジェクトの数 %d" % num) #オブジェクトの数を表示

- -
 - -
 

