コード例 #1
0
def SetupNetwork(*args):
    #check for @nyTR node
    if cmds.objExists("nyTR"):
        cmds.select("nyTR")
        sel = cmds.ls(sl=True, type="unknown")
        if sel:
            nyTR = sel[0]
            #lock @nyTR node and its name
            cmds.lockNode(nyTR, l=False)
            #create .psd attr (connect psdFile to .psd in Maya, shortcut to create message attribute)
            #if not cmds.attributeQuery("psd", exists=True, node=nyTR):
            #    cmds.addAttr(nyTR, at="message", ln="psd")
            
            #get @psdNode,@mesh from @nyTR
            global psdNode
            psdNode = cmds.listConnections("%s.psd" % nyTR, d=True)
            if psdNode:
                psdNode = psdNode[0]
                print(cmds.getAttr(psdNode + ".fileTextureName"))
            psdFile = cmds.getAttr(psdNode + ".fileTextureName")
            cmds.setAttr(psdNode + ".fileTextureName", psdFile, type="string")
            #create thumbnails using psdExport
            path = cmds.workspace(q=True, rd=True) + "images/"
            try:
                for layer in layerNames:
                    cmds.psdExport(ifn = psdFile, ofn=(path+layer+"Icon."+imageExt), lsn=layer, format=imageExt, bpc=0)
            except Exception as e:
                cmds.confirmDialog( title='Thumbnail Generation Exception', message='An Exception has been caught. \n %s ' % e.message, button=['OK'], defaultButton='OK', icn="critical" )

            #generate UI based on the textures created 
            GenerateTextureUI()

    else:
        cmds.confirmDialog( title='Node Network Error', message='Node network hasn\'t been setup fot this scene. \n Please open scene with the network setup ', button=['OK'], defaultButton='OK', icn="warning" )
        print("nyTR DOESN'T exists")

    pass
コード例 #2
0
 def CreateDescription(self,*args):
     #Get the model name and the project directory
     self.ModelName = cmds.getAttr("CMSettings.ModelName")
     self.ProjectDir = cmds.getAttr("CMSettings.ProjectPath")
     
     #Get the documents directory and the process
     if os.path.exists(os.path.expanduser('~/maya/Turbosquid/CheckMate Tools For Maya/CM_Tools/') + "/Imaging/GetImageSize.exe"):
         ImageSizeProcess = os.path.expanduser('~/maya/Turbosquid/CheckMate Tools For Maya/CM_Tools/') + "/Imaging/GetImageSize.exe"
     elif os.path.exists(os.path.expanduser('~/maya/Turbosquid/CheckMate Tools For Maya/CM_Tools/') + "/Imaging/GetImageSize"):
         ImageSizeProcess = os.path.expanduser('~/maya/Turbosquid/CheckMate Tools For Maya/CM_Tools/') + "/Imaging/GetImageSize"
     
     import ntpath
     
     if cmds.window("DescriptionWindow", query = True, exists = True):
         cmds.deleteUI("DescriptionWindow")
     
     #Create the base UI for the description tool
     cmds.window("DescriptionWindow", title = "Model Description", w = 500, h = 600)    
     cmds.formLayout("CMDescriptionLayout", p = "DescriptionWindow")
     cmds.rowLayout("DesRowLayout", p = "CMDescriptionLayout", nc = 3, h = 40)
     
     #Get the model elements
     cmds.select(self.ModelName, hierarchy = True)
     PolyCount = cmds.polyEvaluate(cmds.ls(selection = True, g = True), f = True)
     TriCount = cmds.polyEvaluate(cmds.ls(selection = True, g = True), t = True)
     VertexCount = cmds.polyEvaluate(cmds.ls(selection = True, g = True), v = True)
     
     #Get Maya version
     version = cmds.about(version = True)
     
     #Get Current renderer
     CurRenderer = cmds.getAttr("defaultRenderGlobals.currentRenderer") 
     
     ##### Get textures ####
     def GetTextures():
         Textures = []
         
         for i in cmds.ls(textures = True):
             try:
                 if i != "CheckerMap":
                     Textures.append(cmds.getAttr(i + ".fileTextureName"))
             except:
                 pass
         #Remove duplicates    
         return list(set(Textures))
     
     Textures = GetTextures()
     
     #Get the texture sizes
     Output = "*************************** Textures *****************************\r\n"
     if Textures == []:
         Output = ""
     for i in range(0,len(Textures)):
         try:
             src = Textures[i]
             ext = os.path.splitext(src)[1]
             if ext == ".psd":
                 cmds.psdExport( psdFileName = src, outFileName = self.ProjectDir + "/Temp/" + self.ModelName + "_PSD.jpg", format = "jpg" )
                 w, h = subprocess.Popen([ImageSizeProcess, src],creationflags=subprocess.SW_HIDE, shell=True, stdout=subprocess.PIPE).communicate()[0].split(" ")
                 Output = Output + " Texture:" + ntpath.basename(src) + ", Size:" + str(w) + "x" + str(h) + "\r\n"
             else:
                 w, h = subprocess.Popen([ImageSizeProcess, src],creationflags=subprocess.SW_HIDE, shell=True, stdout=subprocess.PIPE).communicate()[0].split(" ")
                 Output = Output + " Texture:" + ntpath.basename(src) + ", Size:" + str(w) + "x" + str(h) + "\r\n"
         except:
             pass
     
     #Get the bounding box of the model
     bbx = cmds.xform(self.ModelName, bb = True, q = True)
     
     #Create the static Description field
     cmds.scrollField("ScrollFieldStats", p = "CMDescriptionLayout", h = 127, editable = False, text = 
                                                                         "*************************** Model Data ***************************\r\n"+
                                                                         " Model Name    :" + self.ModelName + "\r\n"+
                                                                         " Poly Count    :" + str(PolyCount) + "\r\n"+
                                                                         " Tri Count     :" + str(TriCount)  + "\r\n"+
                                                                         " Vertex Count  :" + str(VertexCount)  + "\r\n"+
                                                                         " Renderer      :" + CurRenderer    + "\r\n"+
                                                                         " Maya Version  :" + version        + "\r\n"+
                                                                         Output+
                                                                         "***************************    Units    **************************\r\n"+
                                                                         " Units Used:" + cmds.currentUnit( query=True, linear=True )        + "\r\n"+
                                                                         " Model Size:" + "Length: "+ str(round((bbx[3] - bbx[0]),2)) + ", Width:" + str(round((bbx[5] - bbx [2]),2)) + ", Height:" +  str(round((bbx[4]-bbx[1]),2)) + "\r\n"+
                                                                         "*************************** Description **************************"
                                                                         )
     
     
     DesText = ""
     if os.path.exists(self.ProjectDir+ "/" + self.ModelName + "_Description.txt"):
         File = open(self.ProjectDir+ "/" + self.ModelName + "_Description.txt","r")
         
         l = 0 
         for line in File:
             if l > 11 + len(Textures):
                 DesText = DesText + line
             l += 1
             
         File.close()
     
     
     def OnKeyPress(*args):
         cmds.text("DesSaved", edit = True, label = "")
         
     #Create the custom description field
     cmds.scrollField("ScrollFieldDes", p = "CMDescriptionLayout", text = DesText, keyPressCommand = OnKeyPress)
     if DesText == "":
         cmds.scrollField("ScrollFieldDes", edit = True, text = "Write the model description here")
     
     
     cmds.formLayout( "CMDescriptionLayout", edit=True,
                      attachForm=[("ScrollFieldStats", 'top', 5), ("ScrollFieldStats", 'left', 5), ("ScrollFieldStats", 'right', 5), 
                      ("ScrollFieldDes", 'left', 5), ("ScrollFieldDes", 'right', 5),
                      ("DesRowLayout", 'left', 5), ("DesRowLayout", 'right', 5), ("DesRowLayout", 'bottom', 5)],
                      attachNone= [("ScrollFieldStats", 'bottom'),("DesRowLayout", 'top')],
                      attachControl = [("ScrollFieldDes", 'bottom', 5, "DesRowLayout"),("ScrollFieldDes", 'top', 5, "ScrollFieldStats")] 
                      )
     
     def SaveButton(*args):
         File = open(self.ProjectDir+ "/" + self.ModelName + "_Description.txt", "w")
         File.write( cmds.scrollField("ScrollFieldStats", query = True, text = True) + "\r\n" + cmds.scrollField("ScrollFieldDes", query = True, text = True))
         File.close()
         cmds.text("DesSaved", edit = True, label = "    File saved")
     
     #Create the save button
     cmds.button(p="DesRowLayout", label = "Save", w = 100, c = SaveButton)
     cmds.text("DesSaved", p = "DesRowLayout", label = "")
     #Show the window
     cmds.showWindow("DescriptionWindow")