def sm_import_importToApp(self, origin, doImport, update, impFileName): fileName = os.path.splitext(os.path.basename(impFileName)) if fileName[1] == ".max": validNodes = [ x for x in origin.nodes if self.isNodeValid(origin, x) ] if not update or len(validNodes) == 0: msg = QMessageBox(QMessageBox.Question, "Create Reference", "Do you want to create a reference?", QMessageBox.No) msg.addButton("Yes", QMessageBox.YesRole) msg.setParent(self.core.messageParent, Qt.Window) action = msg.exec_() else: action = 1 - int( self.executeScript( origin, """ ( item = objXRefMgr.IsNodeXRefed (maxOps.getNodeByHandle %s) item != undefined )""" % validNodes[0])) if action == 0: createNewXref = True if len(validNodes) > 0: isXref = self.executeScript( origin, """ ( item = objXRefMgr.IsNodeXRefed (maxOps.getNodeByHandle %s) item != undefined )""" % validNodes[0]) if isXref: createNewXref = False result = self.executeScript( origin, """ ( item = objXRefMgr.IsNodeXRefed (maxOps.getNodeByHandle %s) item.xrefRecord.srcFileName =\"%s\" if item.xrefRecord == undefined then( False ) else ( items = #() item.xrefRecord.GetItems #XRefObjectType &items nodes = #() for i in items do ( childs = #() i.GetNodes &childs join nodes childs ) select nodes True ) )""" % (validNodes[0], impFileName.replace("\\", "\\\\"))) else: origin.preDelete( baseText= "Do you want to delete the currently connected objects?\n\n" ) if createNewXref: result = self.executeScript( origin, "(\n\ clearselection()\n\ record = objXRefMgr.AddXRefItemsFromFile \"%s\" xrefOptions:#(#mergeModifiers,#selectNodes,#localControllers)\n\ record != undefined\n\ )" % impFileName.replace("\\", "\\\\")) else: origin.preDelete( baseText= "Do you want to delete the currently connected objects?\n\n" ) result = MaxPlus.FileManager.Merge(impFileName, True, True) else: if not (fileName[1] == ".abc" and origin.chb_abcPath.isChecked()): origin.preDelete( baseText= "Do you want to delete the currently connected objects?\n\n" ) if fileName[1] == ".abc": if origin.chb_abcPath.isChecked(): for i in origin.nodes: if not self.isNodeValid(origin, i): continue MaxPlus.INode.GetINodeByHandle( i ).BaseObject.ParameterBlock.source.Value = impFileName result = True doImport = False self.executeScript(origin, "AlembicImport.ImportToRoot = True") elif fileName[1] == ".fbx": self.executeScript(origin, "FBXImporterSetParam \"Mode\" #create") self.executeScript(origin, "FBXImporterSetParam \"ConvertUnit\" #cm") prevLayers = [] for i in range(MaxPlus.LayerManager.GetNumLayers()): prevLayers.append(MaxPlus.LayerManager.GetLayer(i)) if doImport: showProps = True modifiers = QApplication.keyboardModifiers() if modifiers == Qt.ControlModifier: showProps = False result = MaxPlus.FileManager.Import(impFileName, showProps) if fileName[1] == ".fbx": delLayers = [] for i in range(MaxPlus.LayerManager.GetNumLayers()): curLayer = MaxPlus.LayerManager.GetLayer(i) if not curLayer in prevLayers and not curLayer.Used(): delLayers.append(curLayer.GetName()) for i in delLayers: MaxPlus.LayerManager.DeleteLayer(i) if doImport: importedNodes = [ x.GetHandle() for x in MaxPlus.SelectionManager_GetNodes() ] if origin.chb_trackObjects.isChecked(): origin.nodes = importedNodes if origin.taskName == "ShotCam": self.executeScript(origin, "setTransformLockFlags selection #all") camLayer = MaxPlus.LayerManager_GetLayer("00_Cams") if camLayer.GetUnwrappedPtr() is not None: for i in origin.nodes: camLayer.AddToLayer(MaxPlus.INode.GetINodeByHandle(i)) return result, doImport
def reinstance_all_layers(): for i in range(0, MaxPlus.LayerManager.GetNumLayers()): _layer = MaxPlus.LayerManager_GetLayer(i) MaxPlus.LayerManager_SetCurrentLayer(_layer.GetName()) reinstance_current_layer()