示例#1
0
    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
示例#2
0
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()