Maya Python:未定义某些内容(建筑生成器)
我不熟悉这个网站,也不熟悉一般的编程。我在2018年5月一直在使用Python作为我的语言(Pycharm作为我的脚本编辑器)开发一个过程性构建生成器Maya Python:未定义某些内容(建筑生成器),python,undefined,globals,Python,Undefined,Globals,我不熟悉这个网站,也不熟悉一般的编程。我在2018年5月一直在使用Python作为我的语言(Pycharm作为我的脚本编辑器)开发一个过程性构建生成器 我得到一个错误,这样说:“错误:全局名称'WidthSections'未定义。” 我在获取“窗口”模型的宽度和高度时遇到问题。我可能走错了方向,但我试着用xmin减去xmax得到宽度,用ymin减去ymax得到高度。也许我写的地方不对。任何建议都会非常有用 代码: 将maya.cmds作为cmds导入 def窗口构造(numindowsinwid
将maya.cmds作为cmds导入
def窗口构造(numindowsinwidth=5,numindowsindepth=3,numFloors=5):
#创建窗口面板#
w=5
h=8
sx=5
sy=6
bWindow=cmds.polyCube(w=w,h=h,sx=sx,sy=sy,n=“窗口”)
cmds.polyExtrudeFacet(“window.f[21],“window.f[22],“window.f[23],“window.f[16],“window.f[17],“window.f[18],“window.f[11],“window.f[12],“window.f[13],“window.f[6],“window.f[7],“window.f[8],“window.f[8],”厚度=-0.2,偏移量=0.1)
cmds.polyExtrudeFacet(“window.f[75],“window.f[74],“window.f[73],“window.f[72],“window.f[71],“window.f[70],“window.f[76],“window.f[77],“window.f[78],“window.f[79],“window.f[80],“window.f[81],“window.f[81],”厚度=1.5)
cmds.polyExtrudeFacet(“window.f[111],“window.f[113],“window.f[115],“window.f[117],“window.f[119],“window.f[121],“window.f[109],“window.f[106],“window.f[104],“window.f[102],“window.f[100],“window.f[98],“window.f[98],”厚度=0.3)
cmds.polyExtrudeFacet(“window.f[0],“window.f[1],“window.f[2],“window.f[3],“window.f[4]”,偏移量=0.2,厚度=0.4)
cmds.polyExtrudeFacet(“window.f[6],“window.f[7],“window.f[8],“window.f[11],“window.f[12],“window.f[13],“window.f[16],“window.f[17],“window.f[18],“window.f[21],“window.f[22],“window.f[23],“window.f[23],”偏移量=0.1)
cmds.polyExtrudeFacet(“window.f[6],“window.f[7],“window.f[8],“window.f[11],“window.f[12],“window.f[13],“window.f[16],“window.f[17],“window.f[18],“window.f[21],“window.f[22],“window.f[23],“window.f[23],”偏移量=0.1,厚度=-0.3)
cmds.select(“window.e[279],“window.e[274],“window.e[269],“window.e[264],“window.e[259],“window.e[252],“window.e[246],“window.e[241],“window.e[236],“window.e[231],“window.e[226],“window.e[219]”
cmds.polysevent(“window.e[279],“window.e[274],“window.e[269],“window.e[264],“window.e[259],“window.e[252],“window.e[246],“window.e[241],“window.e[236],“window.e[231],“window.e[226],“window.e[219]”)
cmds.polyExtrudeFacet(“window.f[110],“window.f[126],“window.f[30],“window.f[31],“window.f[32],“window.f[33],“window.f[34],“window.f[103],“window.f[119],“window.f[121],“window.f[104],“window.f[65],“window.f[66],“window.f[67],“window.f[68],“window.f[69],“window.f[112],“window.f[1]厚度]
cmds.select(“window.f[110],“window.f[126],“window.f[30],“window.f[31],“window.f[32],“window.f[33],“window.f[34],“window.f[103],“window.f[119],“window.f[121],“window.f[104],“window.f[65],“window.f[66],“window.f[67],“window.f[68],“window.f[69],“window.f[96],“window.f[112],”window.f=True])
cmds.move(h/2.0+1.49,bWindows,moveY=True)
cmds.move(w/2.0+1.49,bWindow,moveX=True)
cmds.move(8,0,0,bWindow[0]+“.scalePivot”,bWindow[0]+“.rotatePivot”,绝对值=True)
makeIdentity(bWindow,apply=True,translate=True,t=1,r=1,s=1,n=0)
#窗口边框#
xmin,ymin,zmin,xmax,ymax,zmax=cmds.xform(bWindow,query=True,bb=True)
#Windows的复制/翻译#
numindowsinwidth=5
numindowsindepth=3
numFloors=5
i=1
正如错误消息所说,i时,您有一个变量widthSection
,它在i Hi Tom时的行上使用。谢谢你的帖子!我现在就试试看。
import maya.cmds as cmds
def windowConstruction(numWindowsInwidth = 5, numWindowsInDepth = 3,numFloors = 5):
#Creating Window Panel#
w = 5
h = 8
sx = 5
sy = 6
bWindow = cmds.polyCube(w=w, h=h, sx=sx, sy=sy, n="window")
cmds.polyExtrudeFacet("window.f[21]","window.f[22]","window.f[23]","window.f[16]","window.f[17]","window.f[18]","window.f[11]","window.f[12]","window.f[13]","window.f[6]","window.f[7]","window.f[8]", thickness=-0.2, offset=0.1)
cmds.polyExtrudeFacet("window.f[75]", "window.f[74]","window.f[73]", "window.f[72]", "window.f[71]", "window.f[70]", "window.f[76]", "window.f[77]", "window.f[78]", "window.f[79]", "window.f[80]", "window.f[81]", thickness=1.5)
cmds.polyExtrudeFacet("window.f[111]", "window.f[113]","window.f[115]", "window.f[117]", "window.f[119]", "window.f[121]", "window.f[109]", "window.f[106]", "window.f[104]", "window.f[102]", "window.f[100]", "window.f[98]", thickness=0.3)
cmds.polyExtrudeFacet("window.f[0]","window.f[1]","window.f[2]","window.f[3]","window.f[4]", offset=0.2, thickness=0.4)
cmds.polyExtrudeFacet("window.f[6]","window.f[7]","window.f[8]","window.f[11]","window.f[12]","window.f[13]","window.f[16]","window.f[17]","window.f[18]","window.f[21]","window.f[22]","window.f[23]", offset=0.1)
cmds.polyExtrudeFacet("window.f[6]","window.f[7]","window.f[8]","window.f[11]","window.f[12]","window.f[13]","window.f[16]","window.f[17]","window.f[18]","window.f[21]","window.f[22]","window.f[23]", offset=0.1, thickness=-0.3)
cmds.select("window.e[279]","window.e[274]","window.e[269]","window.e[264]","window.e[259]", "window.e[252]","window.e[246]","window.e[241]","window.e[236]","window.e[231]","window.e[226]", "window.e[219]")
cmds.polyBevel("window.e[279]","window.e[274]","window.e[269]","window.e[264]","window.e[259]", "window.e[252]","window.e[246]","window.e[241]","window.e[236]","window.e[231]","window.e[226]", "window.e[219]")
cmds.polyExtrudeFacet("window.f[110]", "window.f[126]", "window.f[30]", "window.f[31]", "window.f[32]", "window.f[33]","window.f[34]", "window.f[103]", "window.f[119]", "window.f[121]", "window.f[104]","window.f[65]", "window.f[66]", "window.f[67]", "window.f[68]", "window.f[69]", "window.f[96]", "window.f[112]", thickness=1.5)
cmds.select("window.f[110]", "window.f[126]", "window.f[30]", "window.f[31]", "window.f[32]", "window.f[33]","window.f[34]", "window.f[103]", "window.f[119]", "window.f[121]", "window.f[104]","window.f[65]", "window.f[66]", "window.f[67]", "window.f[68]", "window.f[69]", "window.f[96]", "window.f[112]", d=True)
cmds.move(h / 2.0 + 1.49, bWindow, moveY=True)
cmds.move(w / 2.0 + 1.49, bWindow, moveX=True)
cmds.move(8, 0, 0, bWindow[0]+".scalePivot", bWindow[0]+".rotatePivot", absolute=True)
cmds.makeIdentity(bWindow, apply=True, translate=True, t=1, r=1, s=1, n=0)
#Bounding Box of Windows#
xmin, ymin, zmin, xmax, ymax, zmax = cmds.xform(bWindow, query=True, bb=True)
#Duplication/Translation of Windows#
numWindowsInwidth = 5
numWindowsInDepth = 3
numFloors = 5
i = 1
while i <= widthSections:
sectionWidth = cmds.getAttr(bWindow, xmax-xmin)
cmds.duplicate()
cmds.move(-sectionWidth, 0, 0, relative=True)
i += 1
cmds.rotate(0, -90, 0, relative=True)
while i <= depthSections:
sectionWidth = cmds.getAttr(bWindow, xmax-xmin)
cmds.duplicate()
cmds.move(0, 0, -sectionWidth, relative=True)
i += 1
cmds.rotate(0, -90, 0, relative=True)
while i <= widthSections:
sectionWidth = cmds.getAttr(bWindow, xmax-xmin)
cmds.duplicate()
cmds.move(sectionWidth, 0, 0, relative=True)
i += 1
cmds.rotate(0, -90, 0, relative=True)
while i < depthSections:
sectionWidth = cmds.getAttr(bWindow, xmax-xmin)
cmds.duplicate()
cmds.move(0, 0, sectionWidth, relative=True)
i += 1
cmds.select('window*')
while i < heightSections:
sectionHeight = cmds.getAttr(bWindow, xmax-xmin)
cmds.duplicate()
cmds.move(0, sectionHeight, 0, relative=True)
i += 1
#Grouping All Windows#
cmds.select('window*')
cmds.group('window*', name="Windows")
windowConstruction()
while i <= numWindowsInwidth:
sectionWidth = cmds.getAttr(bWindow, xmax-xmin)
cmds.duplicate()
cmds.move(-sectionWidth, 0, 0, relative=True)
i += 1