Maya Python:未定义某些内容(建筑生成器)

Maya Python:未定义某些内容(建筑生成器),python,undefined,globals,Python,Undefined,Globals,我不熟悉这个网站,也不熟悉一般的编程。我在2018年5月一直在使用Python作为我的语言(Pycharm作为我的脚本编辑器)开发一个过程性构建生成器 我得到一个错误,这样说:“错误:全局名称'WidthSections'未定义。” 我在获取“窗口”模型的宽度和高度时遇到问题。我可能走错了方向,但我试着用xmin减去xmax得到宽度,用ymin减去ymax得到高度。也许我写的地方不对。任何建议都会非常有用 代码: 将maya.cmds作为cmds导入 def窗口构造(numindowsinwid

我不熟悉这个网站,也不熟悉一般的编程。我在2018年5月一直在使用Python作为我的语言(Pycharm作为我的脚本编辑器)开发一个过程性构建生成器

  • 我得到一个错误,这样说:“错误:全局名称'WidthSections'未定义。”

  • 我在获取“窗口”模型的宽度和高度时遇到问题。我可能走错了方向,但我试着用xmin减去xmax得到宽度,用ymin减去ymax得到高度。也许我写的地方不对。任何建议都会非常有用

  • 代码:

    将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