import maya.cmds as cmds ##########The User Interface########## def buildingGeneratorUI(): if cmds.window("generator_Win", exists=True): cmds.deleteUI("generator_Win", window=True) if cmds.windowPref("generator_Win", exists=True): cmds.windowPref("generator_Win", remove=True) cmds.window("generator_Win", title="BUILDING GENERATOR 2018 v1.0", sizeable=False, tlc=(30, 1500)) cmds.columnLayout("mainUI_C", parent="generator_Win") cmds.separator(h=10, style="none") cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 400)], p="mainUI_C") cmds.button(label="Generate Building", bgc=(.4, .4, .4), c=lambda args:windowConstruction()) cmds.intSliderGrp("option1", field=True, label='Building Width:', minValue=5, maxValue=12, value=5) cmds.intSliderGrp("option2", field=True, label='Building Depth:', minValue=3, maxValue=5, value=3) cmds.intSliderGrp("option3", field=True, label='Number of Floors:', minValue=2, maxValue=12, value=2) cmds.separator(h=10, style="none") cmds.showWindow("generator_Win") buildingGeneratorUI() def windowConstruction(): #Creating Window Panel# w = 5 h = 8 sx = 5 sy = 6 numWindowsInWidth = cmds.intSliderGrp("option1", query=True, value=True) numWindowsInDepth = cmds.intSliderGrp("option2", query=True, value=True) numFloors = cmds.intSliderGrp("option3", query=True, value=True) #Modeling the Windows# 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) windowWidth = xmax-xmin windowHeight = ymax-ymin #Duplication/Translation of Windows# i = 1 while i <= numWindowsInWidth: cmds.getAttr(bWindow, windowWidth) cmds.duplicate() cmds.move(-windowWidth, 0, 0, relative=True) i += 1 cmds.rotate(0, -90, 0, relative=True) while i <= numWindowsInDepth: cmds.getAttr(bWindow, windowWidth) cmds.duplicate() cmds.move(0, 0, -windowWidth, relative=True) i += 1 cmds.rotate(0, -90, 0, relative=True) while i <= numWindowsInWidth: cmds.getAttr(bWindow, windowWidth) cmds.duplicate() cmds.move(windowWidth, 0, 0, relative=True) i += 1 cmds.rotate(0, -90, 0, relative=True) while i < numWindowsInDepth: cmds.getAttr(bWindow, windowWidth) cmds.duplicate() cmds.move(0, 0, windowWidth, relative=True) i += 1 cmds.select('window*') while i < numFloors: cmds.getAttr(bWindow, windowHeight) cmds.duplicate() cmds.move(0, windowHeight, 0, relative=True) i += 1 #Grouping All Windows# cmds.select('window*') cmds.group('window*', name="Windows")