From ff44a00354acfc2644ba9dc4857c5a8c2a0f2da0 Mon Sep 17 00:00:00 2001 From: Milan Kolar Date: Tue, 29 Oct 2019 20:57:41 +0100 Subject: [PATCH] hotfix: ignore shapes when referencing and preserve references when importing --- pype/plugins/maya/load/actions.py | 1 + pype/plugins/maya/load/load_reference.py | 16 +++++++++++----- pype/plugins/maya/load/load_rig.py | 10 ++++++++-- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/pype/plugins/maya/load/actions.py b/pype/plugins/maya/load/actions.py index 60316aaf9b..9f6a5c4d34 100644 --- a/pype/plugins/maya/load/actions.py +++ b/pype/plugins/maya/load/actions.py @@ -116,6 +116,7 @@ class ImportMayaLoader(api.Loader): with maya.maintained_selection(): cmds.file(self.fname, i=True, + preserveReferences=True, namespace=namespace, returnNewNodes=True, groupReference=True, diff --git a/pype/plugins/maya/load/load_reference.py b/pype/plugins/maya/load/load_reference.py index f855cb55f9..a754c3be98 100644 --- a/pype/plugins/maya/load/load_reference.py +++ b/pype/plugins/maya/load/load_reference.py @@ -4,7 +4,8 @@ import os from pypeapp import config import pymel.core as pm reload(config) - +import pype.maya.plugin +reload(pype.maya.plugin) class ReferenceLoader(pype.maya.plugin.ReferenceLoader): """Load the model""" @@ -42,11 +43,17 @@ class ReferenceLoader(pype.maya.plugin.ReferenceLoader): namespace = cmds.referenceQuery(nodes[0], namespace=True) + shapes = cmds.ls(nodes, shapes=True, long=True) + print(shapes) + + newNodes = (list(set(nodes) - set(shapes))) + print(newNodes) + groupNode = pm.PyNode(groupName) roots = set() print(nodes) - for node in nodes: + for node in newNodes: try: roots.add(pm.PyNode(node).getAllParents()[-2]) except: @@ -59,7 +66,6 @@ class ReferenceLoader(pype.maya.plugin.ReferenceLoader): root.setParent(groupNode) cmds.setAttr(groupName + ".displayHandle", 1) - groupNode presets = config.get_presets(project=os.environ['AVALON_PROJECT']) colors = presets['plugins']['maya']['load']['colors'] @@ -68,7 +74,7 @@ class ReferenceLoader(pype.maya.plugin.ReferenceLoader): groupNode.useOutlinerColor.set(1) groupNode.outlinerColor.set(c[0], c[1], c[2]) - self[:] = nodes + self[:] = newNodes cmds.setAttr(groupName + ".displayHandle", 1) # get bounding box @@ -88,7 +94,7 @@ class ReferenceLoader(pype.maya.plugin.ReferenceLoader): cmds.setAttr(groupName + ".selectHandleY", cy) cmds.setAttr(groupName + ".selectHandleZ", cz) - return nodes + return newNodes def switch(self, container, representation): self.update(container, representation) diff --git a/pype/plugins/maya/load/load_rig.py b/pype/plugins/maya/load/load_rig.py index 9358d941db..fc6e666ac6 100644 --- a/pype/plugins/maya/load/load_rig.py +++ b/pype/plugins/maya/load/load_rig.py @@ -47,12 +47,18 @@ class RigLoader(pype.maya.plugin.ReferenceLoader): cmds.setAttr(groupName + ".outlinerColor", c[0], c[1], c[2]) + shapes = cmds.ls(nodes, shapes=True, long=True) + print(shapes) + + newNodes = (list(set(nodes) - set(shapes))) + print(newNodes) + # Store for post-process - self[:] = nodes + self[:] = newNodes if data.get("post_process", True): self._post_process(name, namespace, context, data) - return nodes + return newNodes def _post_process(self, name, namespace, context, data):