aboutsummaryrefslogtreecommitdiff
path: root/Documentation/build/_modules/System/ART_RigModule.html
diff options
context:
space:
mode:
authorMobileMachine\jeremy <[email protected]>2017-06-06 22:59:03 -0400
committerMobileMachine\jeremy <[email protected]>2017-06-06 22:59:03 -0400
commit24725fa8681f906ab44d80687c09fecc171a2896 (patch)
tree312a601df29aca7f8db9f44082d96ebc7a679138 /Documentation/build/_modules/System/ART_RigModule.html
parentInitial commit (diff)
downloadartv2-24725fa8681f906ab44d80687c09fecc171a2896.tar.xz
artv2-24725fa8681f906ab44d80687c09fecc171a2896.zip
Initial Submission
First submission of current state of ARTv2. Currently considered to be in Alpha. There are a couple of animation tools not implemented yet, and one module not implemented yet, as well as incomplete documentation.
Diffstat (limited to 'Documentation/build/_modules/System/ART_RigModule.html')
-rw-r--r--Documentation/build/_modules/System/ART_RigModule.html3108
1 files changed, 3108 insertions, 0 deletions
diff --git a/Documentation/build/_modules/System/ART_RigModule.html b/Documentation/build/_modules/System/ART_RigModule.html
new file mode 100644
index 0000000..03a2ceb
--- /dev/null
+++ b/Documentation/build/_modules/System/ART_RigModule.html
@@ -0,0 +1,3108 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>System.ART_RigModule &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for System.ART_RigModule</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+
+<span class="sd"> This is the base class from which all modules are created. When creating a new module,</span>
+<span class="sd"> your module class should inherit from this base class. Example:</span>
+
+<span class="sd">| class ART_Head(ART_RigModule)</span>
+
+<span class="sd"> In the __init__ of your module class, you will want to also run the base class __init__</span>
+<span class="sd"> at the end of your module class __init__:</span>
+
+<span class="sd">| ART_RigModule.__init__(self, &quot;ART_Head_Module&quot;, &quot;ART_Head&quot;, moduleUserName)</span>
+
+<span class="sd"> This module has two file attributes set by default. Your module class will need many more</span>
+<span class="sd"> file attributes set. Please see another module as an example.</span>
+
+<span class="sd">########</span>
+<span class="sd">Contents</span>
+<span class="sd">########</span>
+
+<span class="sd">| **Module Creation Functions:**</span>
+<span class="sd">| :func:`addAttributes &lt;System.ART_RigModule.ART_RigModule.addAttributes&gt;`</span>
+<span class="sd">| :func:`buildNetwork &lt;System.ART_RigModule.ART_RigModule.buildNetwork&gt;`</span>
+<span class="sd">| :func:`createMirrorModule &lt;System.ART_RigModule.ART_RigModule.createMirrorModule&gt;`</span>
+<span class="sd">| :func:`jointMover_Build &lt;System.ART_RigModule.ART_RigModule.jointMover_Build&gt;`</span>
+<span class="sd">| :func:`skeletonSettings_UI &lt;System.ART_RigModule.ART_RigModule.skeletonSettings_UI&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">| **Module Update Functions:**</span>
+<span class="sd">| :func:`applyModuleChanges &lt;System.ART_RigModule.ART_RigModule.applyModuleChanges&gt;`</span>
+<span class="sd">| :func:`checkForDependencies &lt;System.ART_RigModule.ART_RigModule.checkForDependencies&gt;`</span>
+<span class="sd">| :func:`deleteModule &lt;System.ART_RigModule.ART_RigModule.deleteModule&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">| **Module Settings and Interface Functions:**</span>
+<span class="sd">| :func:`changeModuleName &lt;System.ART_RigModule.ART_RigModule.changeModuleName&gt;`</span>
+<span class="sd">| :func:`changeModuleParent &lt;System.ART_RigModule.ART_RigModule.changeModuleParent&gt;`</span>
+<span class="sd">| :func:`copySettings &lt;System.ART_RigModule.ART_RigModule.copySettings&gt;`</span>
+<span class="sd">| :func:`pasteSettings &lt;System.ART_RigModule.ART_RigModule.pasteSettings&gt;`</span>
+<span class="sd">| :func:`resetSettings &lt;System.ART_RigModule.ART_RigModule.resetSettings&gt;`</span>
+<span class="sd">| :func:`createContextMenu &lt;System.ART_RigModule.ART_RigModule.createContextMenu&gt;`</span>
+<span class="sd">| :func:`createMirrorOfModule_UI &lt;System.ART_RigModule.ART_RigModule.createMirrorOfModule_UI&gt;`</span>
+<span class="sd">| :func:`createScriptJob &lt;System.ART_RigModule.ART_RigModule.createScriptJob&gt;`</span>
+<span class="sd">| :func:`mirrorTransformations &lt;System.ART_RigModule.ART_RigModule.mirrorTransformations&gt;`</span>
+<span class="sd">| :func:`mirrorTransformations_Custom &lt;System.ART_RigModule.ART_RigModule.mirrorTransformations_Custom&gt;`</span>
+<span class="sd">| :func:`resetTransforms &lt;System.ART_RigModule.ART_RigModule.resetTransforms&gt;`</span>
+<span class="sd">| :func:`setMirrorModule &lt;System.ART_RigModule.ART_RigModule.setMirrorModule&gt;`</span>
+<span class="sd">| :func:`updateBoneCount &lt;System.ART_RigModule.ART_RigModule.updateBoneCount&gt;`</span>
+<span class="sd">| :func:`updatePreview &lt;System.ART_RigModule.ART_RigModule.updatePreview&gt;`</span>
+<span class="sd">| :func:`updateSettingsUI &lt;System.ART_RigModule.ART_RigModule.updateSettingsUI&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">| **Module Joint Mover Functions:**</span>
+<span class="sd">| :func:`addJointMoverToOutliner &lt;System.ART_RigModule.ART_RigModule.addJointMoverToOutliner&gt;`</span>
+<span class="sd">| :func:`aimMode &lt;System.ART_RigModule.ART_RigModule.aimMode&gt;`</span>
+<span class="sd">| :func:`aimMode_Setup &lt;System.ART_RigModule.ART_RigModule.aimMode_Setup&gt;`</span>
+<span class="sd">| :func:`bakeOffsets &lt;System.ART_RigModule.ART_RigModule.bakeOffsets&gt;`</span>
+<span class="sd">| :func:`createGlobalMoverButton &lt;System.ART_RigModule.ART_RigModule.createGlobalMoverButton&gt;`</span>
+<span class="sd">| :func:`createMeshMoverButton &lt;System.ART_RigModule.ART_RigModule.createMeshMoverButton&gt;`</span>
+<span class="sd">| :func:`createOffsetMoverButton &lt;System.ART_RigModule.ART_RigModule.createOffsetMoverButton&gt;`</span>
+<span class="sd">| :func:`pinModule &lt;System.ART_RigModule.ART_RigModule.pinModule&gt;`</span>
+<span class="sd">| :func:`selectMover &lt;System.ART_RigModule.ART_RigModule.selectMover&gt;`</span>
+<span class="sd">| :func:`selectScriptJob &lt;System.ART_RigModule.ART_RigModule.selectScriptJob&gt;`</span>
+<span class="sd">| :func:`toggleShapeVis &lt;System.ART_RigModule.ART_RigModule.toggleShapeVis&gt;`</span>
+<span class="sd">| :func:`updateOutliner &lt;System.ART_RigModule.ART_RigModule.updateOutliner&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">| **Module Publish Functions:**</span>
+<span class="sd">| :func:`cleanUpRigPose &lt;System.ART_RigModule.ART_RigModule.cleanUpRigPose&gt;`</span>
+<span class="sd">| :func:`createRigPoseSliderForJoint &lt;System.ART_RigModule.ART_RigModule.createRigPoseSliderForJoint&gt;`</span>
+<span class="sd">| :func:`getReferencePose &lt;System.ART_RigModule.ART_RigModule.getReferencePose&gt;`</span>
+<span class="sd">| :func:`matchModelPose &lt;System.ART_RigModule.ART_RigModule.matchModelPose&gt;`</span>
+<span class="sd">| :func:`mirrorTransformations_RigPose &lt;System.ART_RigModule.ART_RigModule.mirrorTransformations_RigPose&gt;`</span>
+<span class="sd">| :func:`resetRigPose &lt;System.ART_RigModule.ART_RigModule.resetRigPose&gt;`</span>
+<span class="sd">| :func:`resetRigPose_Part &lt;System.ART_RigModule.ART_RigModule.resetRigPose_Part&gt;`</span>
+<span class="sd">| :func:`rigPose_UI &lt;System.ART_RigModule.ART_RigModule.rigPose_UI&gt;`</span>
+<span class="sd">| :func:`setPosePercentage &lt;System.ART_RigModule.ART_RigModule.setPosePercentage&gt;`</span>
+<span class="sd">| :func:`setPosePercentage_Part &lt;System.ART_RigModule.ART_RigModule.setPosePercentage_Part&gt;`</span>
+<span class="sd">| :func:`setReferencePose &lt;System.ART_RigModule.ART_RigModule.setReferencePose&gt;`</span>
+<span class="sd">| :func:`setReferencePoseSlider &lt;System.ART_RigModule.ART_RigModule.setReferencePoseSlider&gt;`</span>
+<span class="sd">| :func:`setSkeletonPose &lt;System.ART_RigModule.ART_RigModule.setSkeletonPose&gt;`</span>
+<span class="sd">| :func:`setupForRigPose &lt;System.ART_RigModule.ART_RigModule.setupForRigPose&gt;`</span>
+<span class="sd">| :func:`setupModelPoseForRig &lt;System.ART_RigModule.ART_RigModule.setupModelPoseForRig&gt;`</span>
+<span class="sd">| :func:`skinProxyGeo &lt;System.ART_RigModule.ART_RigModule.skinProxyGeo&gt;`</span>
+<span class="sd">| :func:`updateRigPose &lt;System.ART_RigModule.ART_RigModule.updateRigPose&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">| **Module Rig Functions**</span>
+<span class="sd">| :func:`buildRig &lt;System.ART_RigModule.ART_RigModule.buildRig&gt;`</span>
+<span class="sd">| :func:`buildRigCustom &lt;System.ART_RigModule.ART_RigModule.buildRigCustom&gt;`</span>
+<span class="sd">| :func:`deleteRig &lt;System.ART_RigModule.ART_RigModule.deleteRig&gt;`</span>
+<span class="sd">| :func:`getControls &lt;System.ART_RigModule.ART_RigModule.getControls&gt;`</span>
+<span class="sd">| :func:`importFBX &lt;System.ART_RigModule.ART_RigModule.importFBX&gt;`</span>
+<span class="sd">| :func:`importFBX_pre &lt;System.ART_RigModule.ART_RigModule.importFBX_pre&gt;`</span>
+<span class="sd">| :func:`resetRigControls &lt;System.ART_RigModule.ART_RigModule.resetRigControls&gt;`</span>
+<span class="sd">| :func:`selectRigControls &lt;System.ART_RigModule.ART_RigModule.selectRigControls&gt;`</span>
+<span class="sd">| :func:`selectionScriptJob_animUI &lt;System.ART_RigModule.ART_RigModule.selectionScriptJob_animUI&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">| **Module Utility Functions**</span>
+<span class="sd">| :func:`getAllModules &lt;System.ART_RigModule.ART_RigModule.getAllModules&gt;`</span>
+<span class="sd">| :func:`getModules &lt;System.ART_RigModule.ART_RigModule.getModules&gt;`</span>
+<span class="sd">| :func:`removeSkeletalConstraints &lt;System.ART_RigModule.ART_RigModule.removeSkeletalConstraints&gt;`</span>
+<span class="sd">| :func:`returnCreatedJoints &lt;System.ART_RigModule.ART_RigModule.returnCreatedJoints&gt;`</span>
+<span class="sd">| :func:`returnJointMovers &lt;System.ART_RigModule.ART_RigModule.returnJointMovers&gt;`</span>
+<span class="sd">| :func:`returnMirrorModuleInst &lt;System.ART_RigModule.ART_RigModule.returnMirrorModuleInst&gt;`</span>
+<span class="sd">| :func:`returnNetworkNode &lt;System.ART_RigModule.ART_RigModule.returnNetworkNode&gt;`</span>
+<span class="sd">| :func:`returnPrefixSuffix &lt;System.ART_RigModule.ART_RigModule.returnPrefixSuffix&gt;`</span>
+<span class="sd">| :func:`returnRigNetworkNode &lt;System.ART_RigModule.ART_RigModule.returnRigNetworkNode&gt;`</span>
+<span class="sd">|</span>
+<span class="sd">|</span>
+<span class="sd">#########</span>
+<span class="sd">Class</span>
+<span class="sd">#########</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="c1"># file imports</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">traceback</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.riggingUtils</span> <span class="k">as</span> <span class="nn">riggingUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">System.mathUtils</span> <span class="k">as</span> <span class="nn">mathUtils</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">import</span> <span class="nn">maya.mel</span> <span class="k">as</span> <span class="nn">mel</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+<span class="c1"># file attributes</span>
+<span class="n">fbxImport</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;None&quot;</span><span class="p">,</span> <span class="s2">&quot;FK&quot;</span><span class="p">]</span>
+<span class="n">matchData</span> <span class="o">=</span> <span class="p">[</span><span class="kc">False</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span>
+
+
+<div class="viewcode-block" id="ART_RigModule"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule">[docs]</a><span class="k">class</span> <span class="nc">ART_RigModule</span><span class="p">():</span>
+<div class="viewcode-block" id="ART_RigModule.__init__"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">moduleName</span><span class="p">,</span> <span class="n">moduleType</span><span class="p">,</span> <span class="n">userCreatedName</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Initiate the class, taking in the instance to the interface and the user specified name.</span>
+
+<span class="sd"> :param moduleName: This is the base name of the module, specified in the rig module.</span>
+<span class="sd"> :param moduleType: This is the name of the module to create (the module class).</span>
+<span class="sd"> :param userCreatedName: This is the name specified by the user on module creation.</span>
+
+<span class="sd"> Instantiate the following class variables as well:</span>
+<span class="sd"> * **self.modName:** Take the passed in moduleName and make it a class var</span>
+<span class="sd"> * **self.moduleType:** Take the passed in moduleType and make it a class var</span>
+<span class="sd"> * **self.rootMod:** The network node of the entire character asset</span>
+<span class="sd"> * **self.name:** The user created name (prefix + baseName + suffix) passed in</span>
+<span class="sd"> * **self.originalName:** Also the user created name, but we want to store what the original name</span>
+<span class="sd"> was on creation, as the user can rename the module later. This will allow us to make the link between</span>
+<span class="sd"> what the module&#39;s original name was and what the new name is.</span>
+<span class="sd"> * **self.outlinerControls:** A list of the outliner controls created when adding module joint movers to</span>
+<span class="sd"> the outliner.</span>
+
+<span class="sd"> Also, read the QSettings to find out where needed paths are.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># set class variables</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modName</span> <span class="o">=</span> <span class="n">moduleName</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleType</span> <span class="o">=</span> <span class="n">moduleType</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rootMod</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">userCreatedName</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">=</span> <span class="n">userCreatedName</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerControls</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">controlTypes</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.buildNetwork"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.buildNetwork">[docs]</a> <span class="k">def</span> <span class="nf">buildNetwork</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Build the network node for the module which will store all information needed by the module.</span>
+<span class="sd"> Then, call on addAttributes to add the required module attributes to the network node.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the network node for our module</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">createNode</span><span class="p">(</span><span class="s2">&quot;network&quot;</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">modName</span><span class="p">)</span>
+
+ <span class="c1"># create attributes</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addAttributes</span><span class="p">()</span>
+
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.addAttributes"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.addAttributes">[docs]</a> <span class="k">def</span> <span class="nf">addAttributes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Add attributes to the network node that all modules need.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">moduleType</span> <span class="o">==</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="c1"># add attributes specific to this module</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;rigModules&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># add a rigging message attribute</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;parent&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="c1"># add a module type attribute</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;moduleType&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">moduleType</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># and a module name attribute (used for skeleton settings UI groupbox label)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;moduleName&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># add attr for parent module that user specfies</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;parentModuleBone&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># add attr for mirror module that user specfies</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;mirrorModule&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;pinned&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;bool&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.pinned&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># connect rigModule to root module node</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rootMod</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getModules</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rootMod</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rootMod</span> <span class="o">+</span> <span class="s2">&quot;.rigModules&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parent&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.skeletonSettings_UI"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.skeletonSettings_UI">[docs]</a> <span class="k">def</span> <span class="nf">skeletonSettings_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">checkable</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Build the framework for the skeleton settings that all modules need.</span>
+
+<span class="sd"> :param name: user given name of module (prefix + base_name + suffix)</span>
+<span class="sd"> :param width: width of the skeleton settings groupBox. 335 usually</span>
+<span class="sd"> :param height: height of the skeleton settings groupBox.</span>
+<span class="sd"> :param checkable: Whether or not the groupBox can be collapsed.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># add the groupbox for this module with the module name and module settings</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">checkable</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">checkable</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setFlat</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="n">checkable</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">lockButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">lockButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">lockButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
+
+ <span class="c1"># load style sheet file</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span>
+ <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/skeletonSettings.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># set properties for filtering later</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
+
+ <span class="c1"># set context menu policy on groupbox</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setContextMenuPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">CustomContextMenu</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">customContextMenuRequested</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createContextMenu</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.changeModuleName"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.changeModuleName">[docs]</a> <span class="k">def</span> <span class="nf">changeModuleName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baseName</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Launch the interface that allows users to change the module name.</span>
+
+<span class="sd"> :param baseName: The module base name (head, torso, leg, etc)</span>
+<span class="sd"> :param moduleInst: The specific instance of the module</span>
+<span class="sd"> :param rigUiInst: The instance of the rig creator interface.</span>
+
+<span class="sd"> This will call on a separate class in Core/Interfaces called ART_ChangeModuleNameUI.py</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get prefix/suffix</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">title</span><span class="p">()</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">baseName</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">baseName</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="c1"># when pressing the change name button on the skeleton settings UI (if it exists):</span>
+
+ <span class="c1"># delete the UI if it already exists</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">mayaWindow</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|pyArtChangeModuleNameUi&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|pyArtChangeModuleNameUi&quot;</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI for prefix/suffix/preview again</span>
+ <span class="kn">import</span> <span class="nn">Interfaces.ART_ChangeModuleNameUI</span> <span class="k">as</span> <span class="nn">ART_ChangeModuleNameUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_ChangeModuleNameUI</span><span class="p">)</span>
+ <span class="n">inst</span> <span class="o">=</span> <span class="n">ART_ChangeModuleNameUI</span><span class="o">.</span><span class="n">ART_ChangeModuleName_UI</span><span class="p">(</span><span class="n">baseName</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">,</span>
+ <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">())</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.changeModuleParent"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.changeModuleParent">[docs]</a> <span class="k">def</span> <span class="nf">changeModuleParent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Launch the interface that allows users to change the module&#39;s parent bone.</span>
+
+<span class="sd"> :param moduleInst: The specific instance of the module</span>
+<span class="sd"> :param rigUiInst: The instance of the rig creator interface.</span>
+
+<span class="sd"> This will call on a separate class in Core/Interfaces called ART_ChangeModuleParentUI.py</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get current parent value</span>
+ <span class="n">currentParent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="c1"># when pressing the change parent button on the skeleton settings UI (if it exists):</span>
+
+ <span class="c1"># delete the UI if it already exists</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">mayaWindow</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|pyArtChangeModuleParentUi&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|pyArtChangeModuleParentUi&quot;</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI for prefix/suffix/preview again</span>
+ <span class="kn">import</span> <span class="nn">Interfaces.ART_ChangeModuleParentUI</span> <span class="k">as</span> <span class="nn">ART_ChangeModuleParentUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_ChangeModuleParentUI</span><span class="p">)</span>
+ <span class="n">inst</span> <span class="o">=</span> <span class="n">ART_ChangeModuleParentUI</span><span class="o">.</span><span class="n">ART_ChangeModuleParent_UI</span><span class="p">(</span><span class="n">currentParent</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span>
+ <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">())</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setMirrorModule"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setMirrorModule">[docs]</a> <span class="k">def</span> <span class="nf">setMirrorModule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Launch the interface that allows users to change the module&#39;s mirror module.</span>
+<span class="sd"> Meaning, the module that is linked as a mirror of this module. Only modules of the same</span>
+<span class="sd"> type can be linked as mirrors.</span>
+
+<span class="sd"> :param moduleInst: The specific instance of the module</span>
+<span class="sd"> :param rigUiInst: The instance of the rig creator interface.</span>
+
+<span class="sd"> This will call on a separate class in Core/Interfaces called ART_SetMirrorModuleUI.py</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># delete the UI if it already exists</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">mayaWindow</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|pyArtSetMirrorModuleUi&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|pyArtSetMirrorModuleUi&quot;</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI for prefix/suffix/preview again</span>
+ <span class="kn">import</span> <span class="nn">Interfaces.ART_SetMirrorModuleUI</span> <span class="k">as</span> <span class="nn">ART_SetMirrorModuleUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_SetMirrorModuleUI</span><span class="p">)</span>
+ <span class="n">inst</span> <span class="o">=</span> <span class="n">ART_SetMirrorModuleUI</span><span class="o">.</span><span class="n">ART_SetMirrorModule_UI</span><span class="p">(</span><span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">())</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.jointMover_Build"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.jointMover_Build">[docs]</a> <span class="k">def</span> <span class="nf">jointMover_Build</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Import the joint mover file with the given path.</span>
+
+<span class="sd"> After importing the module&#39;s joint mover file, rename imported nodes to use module name.</span>
+<span class="sd"> Then, assign existing matching materials to joint mover proxy geometry, deleting the imported</span>
+<span class="sd"> materials if they were duplicates. Then parent into the main JointMover group. Lastly, hook up</span>
+<span class="sd"> global scaling on the joint movers.</span>
+
+
+<span class="sd"> :param path: Path of joint mover file to import</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the full path for the joint mover file</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span>
+
+ <span class="c1"># import the file</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fullPath</span><span class="p">):</span>
+ <span class="n">nodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">i</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">iv</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">,</span> <span class="n">rnn</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">validTypes</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;transform&quot;</span><span class="p">,</span> <span class="s2">&quot;joint&quot;</span><span class="p">,</span> <span class="s2">&quot;ikHandle&quot;</span><span class="p">]</span>
+
+ <span class="c1"># loop through returned nodes from import, and find the mover_grp, renaming it and all</span>
+ <span class="c1"># children to have user specified name as prefix</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">nodes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;|mover_grp&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">allDescendents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;transform&quot;</span><span class="p">)</span>
+ <span class="n">moverGrp</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">movers</span> <span class="o">=</span> <span class="p">[</span><span class="n">moverGrp</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="ow">in</span> <span class="n">validTypes</span><span class="p">:</span>
+ <span class="n">movers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">movers</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">mover</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">mover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">mover</span>
+ <span class="nb">print</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
+
+ <span class="c1"># exit loop</span>
+ <span class="k">break</span>
+
+ <span class="c1"># assign materials if they exist, removing duplicate materials</span>
+ <span class="n">materials</span> <span class="o">=</span> <span class="p">[[</span><span class="s2">&quot;*_blue_m&quot;</span><span class="p">,</span> <span class="s2">&quot;blue_m&quot;</span><span class="p">],</span> <span class="p">[</span><span class="s2">&quot;*_green_m&quot;</span><span class="p">,</span> <span class="s2">&quot;green_m&quot;</span><span class="p">],</span> <span class="p">[</span><span class="s2">&quot;*_red_m&quot;</span><span class="p">,</span> <span class="s2">&quot;red_m&quot;</span><span class="p">],</span>
+ <span class="p">[</span><span class="s2">&quot;*_white_m&quot;</span><span class="p">,</span> <span class="s2">&quot;white_m&quot;</span><span class="p">],</span> <span class="p">[</span><span class="s2">&quot;*_proxy_shader_tan&quot;</span><span class="p">,</span> <span class="s2">&quot;proxy_shader_tan&quot;</span><span class="p">],</span>
+ <span class="p">[</span><span class="s2">&quot;*_proxy_shader_black&quot;</span><span class="p">,</span> <span class="s2">&quot;proxy_shader_black&quot;</span><span class="p">]]</span>
+ <span class="n">deleteMaterials</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">material</span> <span class="ow">in</span> <span class="n">materials</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="c1"># select materials for the joint mover</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">material</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">foundMaterials</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># loop through each color material (dupes)</span>
+ <span class="k">for</span> <span class="n">mat</span> <span class="ow">in</span> <span class="n">foundMaterials</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">hyperShade</span><span class="p">(</span><span class="n">objects</span><span class="o">=</span><span class="n">mat</span><span class="p">)</span>
+ <span class="n">assignedGeo</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># select the geo and the original material, and assign</span>
+ <span class="n">originalMaterial</span> <span class="o">=</span> <span class="n">material</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="k">for</span> <span class="n">geo</span> <span class="ow">in</span> <span class="n">assignedGeo</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">([</span><span class="n">geo</span><span class="p">,</span> <span class="n">originalMaterial</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">hyperShade</span><span class="p">(</span><span class="n">assign</span><span class="o">=</span><span class="n">originalMaterial</span><span class="p">)</span>
+
+ <span class="c1"># delete the material no longer needed</span>
+ <span class="n">deleteMaterials</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">mat</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># delete all deleteMaterials</span>
+ <span class="k">for</span> <span class="n">mat</span> <span class="ow">in</span> <span class="n">deleteMaterials</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">mat</span><span class="p">)</span>
+
+ <span class="c1"># add to JointMover grp</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">&quot;JointMover&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="n">empty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;JointMover&quot;</span><span class="p">)</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="s2">&quot;|&quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="s2">&quot;JointMover&quot;</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
+ <span class="n">globalMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findGlobalMoverFromName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">globalMover</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setToolTo</span><span class="p">(</span><span class="s2">&quot;moveSuperContext&quot;</span><span class="p">)</span>
+
+ <span class="c1"># obey visibility toggles</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">setMoverVisibility</span><span class="p">()</span>
+
+ <span class="c1"># 1/13/16 Change # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># hook up global scale on joint movers</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">movers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="p">[</span><span class="n">movers</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">movers</span><span class="p">[</span><span class="mi">1</span><span class="p">]]:</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">each</span><span class="p">:</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.globalScale&quot;</span><span class="p">):</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">aliasAttr</span><span class="p">(</span><span class="s2">&quot;globalScale&quot;</span><span class="p">,</span> <span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.scaleZ&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.globalScale&quot;</span><span class="p">,</span> <span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.scaleX&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.globalScale&quot;</span><span class="p">,</span> <span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.scaleY&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.scaleX&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.scaleY&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="c1"># lock movers</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">movers</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">each</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># 1/13/16 Change # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">confirmDialog</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">&quot;Joint Mover&quot;</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s2">&quot;Could not find associated joint mover file.&quot;</span><span class="p">,</span>
+ <span class="n">icon</span><span class="o">=</span><span class="s2">&quot;critical&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.selectScriptJob"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.selectScriptJob">[docs]</a> <span class="k">def</span> <span class="nf">selectScriptJob</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">info</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Change icon color of the given joint mover&#39;s button in the outliner to show selection status.</span>
+
+<span class="sd"> :param info: This list contains the button object, the joint mover control, and the original color icon.</span>
+
+<span class="sd"> If the control given is selected, the icon is switched to a white icon. If it is not selected, the icon</span>
+<span class="sd"> is set back to the original passed in icon.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+ <span class="n">whiteIcon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="c1"># for each item in the passed in info [outliner button, mover control, unselected stylesheet],check if</span>
+ <span class="c1"># the control is in the selection, and color the button appropriately</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">info</span><span class="p">:</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">control</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">selection</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">control</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">button</span><span class="p">]</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">control</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">button</span><span class="p">]</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">whiteIcon</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createGlobalMoverButton"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createGlobalMoverButton">[docs]</a> <span class="k">def</span> <span class="nf">createGlobalMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">uiInstance</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Create the button in the outliner for the global mover control of a joint mover.</span>
+
+<span class="sd"> :param name: The name of the joint mover control.</span>
+<span class="sd"> :param parent: The outliner widget the created button will be parented to.</span>
+<span class="sd"> :param uiInstance: The Rig Creator interface instance.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">part</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="c1"># create the icon</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="s2">&quot;yellow&quot;</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="c1"># create the button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">))</span>
+ <span class="n">uiInstance</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">setItemWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">])</span>
+
+ <span class="c1"># connect and add to list</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span>
+ <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectMover</span><span class="p">,</span> <span class="n">part</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">]))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerControls</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_globalMoverBtn&quot;</span><span class="p">,</span> <span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span><span class="p">,</span> <span class="n">icon</span><span class="p">])</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createOffsetMoverButton"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createOffsetMoverButton">[docs]</a> <span class="k">def</span> <span class="nf">createOffsetMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">uiInstance</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Create the button in the outliner for the offset mover control of a joint mover.</span>
+
+<span class="sd"> :param name: The name of the joint mover control.</span>
+<span class="sd"> :param parent: The outliner widget the created button will be parented to.</span>
+<span class="sd"> :param uiInstance: The Rig Creator interface instance.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">part</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="c1"># create the icon</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="c1"># create the button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">))</span>
+ <span class="n">uiInstance</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">setItemWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">])</span>
+
+ <span class="c1"># connect and add to list</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span>
+ <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectMover</span><span class="p">,</span> <span class="n">part</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerControls</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">,</span> <span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">,</span> <span class="n">icon</span><span class="p">])</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createMeshMoverButton"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createMeshMoverButton">[docs]</a> <span class="k">def</span> <span class="nf">createMeshMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">uiInstance</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Create the button in the outliner for the geometry mover control of a joint mover.</span>
+
+<span class="sd"> :param name: The name of the joint mover control.</span>
+<span class="sd"> :param parent: The outliner widget the created button will be parented to.</span>
+<span class="sd"> :param uiInstance: The Rig Creator interface instance.</span>
+
+<span class="sd"> Note: The geometry mover is purely for aesthetics and does not affect the rigging.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">part</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="c1"># create the icon</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">176</span><span class="p">,</span> <span class="mi">176</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="c1"># create the button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">15</span><span class="p">))</span>
+ <span class="n">uiInstance</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">setItemWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">])</span>
+
+ <span class="c1"># connect and add to list</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span>
+ <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectMover</span><span class="p">,</span> <span class="n">part</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerControls</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">,</span> <span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_geo&quot;</span><span class="p">,</span> <span class="n">icon</span><span class="p">])</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createScriptJob"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createScriptJob">[docs]</a> <span class="k">def</span> <span class="nf">createScriptJob</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Create the selection script job for the outliner buttons and their associated joint mover controls.</span>
+
+<span class="sd"> This function purely creates the script job. The script job function that is run is called self.selectScriptJob.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">scriptJob</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span>
+ <span class="n">event</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SelectionChanged&quot;</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectScriptJob</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerControls</span><span class="p">)],</span> <span class="n">runOnce</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+ <span class="n">parent</span><span class="o">=</span><span class="s2">&quot;pyArtRigCreatorUi&quot;</span><span class="p">,</span> <span class="n">kws</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">per</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">scriptJobs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.selectMover"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.selectMover">[docs]</a> <span class="k">def</span> <span class="nf">selectMover</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">part</span><span class="p">,</span> <span class="n">globalMover</span><span class="p">,</span> <span class="n">offsetMover</span><span class="p">,</span> <span class="n">geoMover</span><span class="p">,</span> <span class="n">button</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Select the appropriate joint mover control based on the args passed in. Color the associated button white</span>
+<span class="sd"> to show selection status.</span>
+
+<span class="sd"> :param part: The name of the joint mover control.</span>
+<span class="sd"> :param globalMover: Boolean of whether or not given control is a global mover.</span>
+<span class="sd"> :param offsetMover: Boolean of whether or not given control is an offset mover.</span>
+<span class="sd"> :param geoMover: Boolean of whether or not given control is a mesh mover.</span>
+<span class="sd"> :param button: The button in the outliner associated with the given mover.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># select mover and color button</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="n">part</span>
+
+ <span class="c1"># get modifiers</span>
+ <span class="n">toggle</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="n">mods</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getModifiers</span><span class="p">()</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">mods</span> <span class="o">&amp;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">toggle</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="k">if</span> <span class="n">globalMover</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span><span class="p">,</span> <span class="n">tgl</span><span class="o">=</span><span class="n">toggle</span><span class="p">)</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background-color: rgb(255, 255, 255);&#39;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background-color: rgb(255, 255, 0);&#39;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">offsetMover</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">,</span> <span class="n">tgl</span><span class="o">=</span><span class="n">toggle</span><span class="p">)</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background-color: rgb(255, 255, 255);&#39;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_offsetMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background-color: rgb(100, 220, 255);&#39;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">geoMover</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_geo&quot;</span><span class="p">,</span> <span class="n">tgl</span><span class="o">=</span><span class="n">toggle</span><span class="p">)</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_geo&quot;</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background-color: rgb(255, 255, 255);&#39;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_geoMoverBtn&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background-color: rgb(255, 176, 176);&#39;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createContextMenu"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createContextMenu">[docs]</a> <span class="k">def</span> <span class="nf">createContextMenu</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Create the right-click menu for the module.</span>
+
+<span class="sd"> :param point: Point on monitor to spawn the right-click menu.</span>
+
+<span class="sd"> Default menu actions created:</span>
+<span class="sd"> * Copy Settings</span>
+<span class="sd"> * Paste Settings</span>
+<span class="sd"> * Reset Settings</span>
+<span class="sd"> * Delete Module</span>
+<span class="sd"> * Create Mirror of this Module</span>
+<span class="sd"> * Mirror Transformations (only if a mirror is linked)</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">mirror</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+
+ <span class="c1"># icons</span>
+ <span class="n">icon_copy</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/copy.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_paste</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/paste.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_reset</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/reset.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_delete</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/delete.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_mirror</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/mirrorXforms.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_createMirror</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/createMirror.png&quot;</span><span class="p">))</span>
+
+ <span class="c1"># create the context menu</span>
+ <span class="k">if</span> <span class="n">networkNode</span> <span class="o">!=</span> <span class="s2">&quot;ART_Root_Module&quot;</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMenu</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_copy</span><span class="p">,</span> <span class="s2">&quot;Copy Settings&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">copySettings</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_paste</span><span class="p">,</span> <span class="s2">&quot;Paste Settings&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pasteSettings</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_reset</span><span class="p">,</span> <span class="s2">&quot;Reset Settings&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">resetSettings</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addSeparator</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">mirror</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_mirror</span><span class="p">,</span> <span class="s2">&quot;Mirror Transformations to &quot;</span> <span class="o">+</span> <span class="n">mirror</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorTransformations</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_createMirror</span><span class="p">,</span> <span class="s2">&quot;Create Mirror of this Module&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">createMirrorOfModule_UI</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addSeparator</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_delete</span><span class="p">,</span> <span class="s2">&quot;Delete Module&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">deleteModule</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">contextMenu</span><span class="o">.</span><span class="n">exec_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">mapToGlobal</span><span class="p">(</span><span class="n">point</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.copySettings"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.copySettings">[docs]</a> <span class="k">def</span> <span class="nf">copySettings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Copy the values from the network node of the module and store them in a temp file on disk.</span>
+
+<span class="sd"> This function is used in the right-click menu of the module on the skeleton settings interface.</span>
+<span class="sd"> Occasionally, it is called outside of the menu. For example, when creating a mirror of the module,</span>
+<span class="sd"> the settings are copied for the source module to then be later pasted on the mirror.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">ud</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">hd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">attrData</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">)</span>
+ <span class="n">attrData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">])</span>
+
+ <span class="c1"># write out attrData to a temp file</span>
+ <span class="n">tempDir</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">internalVar</span><span class="p">(</span><span class="n">userTmpDir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">clipboardFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">normcase</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tempDir</span><span class="p">,</span> <span class="s2">&quot;ART_clipboard.txt&quot;</span><span class="p">))</span>
+
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">clipboardFile</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span>
+
+ <span class="c1"># dump the data with json</span>
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">attrData</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.pasteSettings"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.pasteSettings">[docs]</a> <span class="k">def</span> <span class="nf">pasteSettings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Paste the settings from the temp file on disk to the module&#39;s network node.</span>
+
+<span class="sd"> This function is used in the right-click menu of the module on the skeleton settings interface.</span>
+<span class="sd"> Occasionally, it is called outside of the menu. For example, when creating a mirror of the module,</span>
+<span class="sd"> the settings are copied for the source module to then be later pasted on the mirror.</span>
+
+<span class="sd"> After settings are pasted, applyModuleChanges is called to update the joint mover in the scene with</span>
+<span class="sd"> the latest values. updateSettingsUI is also called to update the outliner.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># it does this 4 times because for some reason it would not grab everything one time through. Investigate</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
+
+ <span class="n">tempDir</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">internalVar</span><span class="p">(</span><span class="n">userTmpDir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">clipboardFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">normcase</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tempDir</span><span class="p">,</span> <span class="s2">&quot;ART_clipboard.txt&quot;</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">clipboardFile</span><span class="p">):</span>
+ <span class="c1"># load the data</span>
+ <span class="n">json_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">clipboardFile</span><span class="p">)</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">json_file</span><span class="p">)</span>
+ <span class="n">json_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># attempt to paste data if module type is the same</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">moduleType</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">moduleType</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]:</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+ <span class="n">attr</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">attrType</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">attrType</span> <span class="o">!=</span> <span class="s2">&quot;string&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;No data in clipboard&quot;</span><span class="p">)</span>
+
+ <span class="c1"># relaunch the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateSettingsUI</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">applyModuleChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.resetSettings"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.resetSettings">[docs]</a> <span class="k">def</span> <span class="nf">resetSettings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Reset the settings of the module&#39;s network node.</span>
+
+<span class="sd"> This function is used in the right-click menu of the module on the skeleton settings interface.</span>
+<span class="sd"> Occasionally, it is called outside of the menu.</span>
+
+<span class="sd"> After settings are reset, applyModuleChanges is called to update the joint mover in the scene with</span>
+<span class="sd"> the latest values. updateSettingsUI is also called to update the outliner.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># it does this 4 times because for some reason it would not grab everything one time through. Investigate</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
+
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">ud</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">attrType</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">attrType</span> <span class="o">==</span> <span class="s2">&quot;double&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">attrType</span> <span class="o">==</span> <span class="s2">&quot;bool&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">attrType</span> <span class="o">==</span> <span class="s2">&quot;enum&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># relaunch the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateSettingsUI</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">applyModuleChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.resetTransforms"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.resetTransforms">[docs]</a> <span class="k">def</span> <span class="nf">resetTransforms</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">translate</span><span class="p">,</span> <span class="n">rotate</span><span class="p">,</span> <span class="n">scale</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Reset the given attributes of all movers in the module.</span>
+
+<span class="sd"> :param translate: Boolean of whether or not to reset translation values.</span>
+<span class="sd"> :param rotate: Boolean of whether or not to reset the rotation values.</span>
+<span class="sd"> :param scale: Boolean of whether or not to reset the scale values.</span>
+<span class="sd"> :param name: The module name. (prefix + basename + suffix)</span>
+
+<span class="sd"> This function is mainly called from ART_ResetModeUI.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">geoMovers</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selection</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_mover&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_mover&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">globalMovers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_mover_offset&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_mover_offset&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">offsetMovers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_mover_geo&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_mover_geo&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">geoMovers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">moverList</span> <span class="ow">in</span> <span class="p">[</span><span class="n">globalMovers</span><span class="p">,</span> <span class="n">offsetMovers</span><span class="p">,</span> <span class="n">geoMovers</span><span class="p">]:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">moverList</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">translate</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.tx&quot;</span><span class="p">,</span> <span class="s2">&quot;.ty&quot;</span><span class="p">,</span> <span class="s2">&quot;.tz&quot;</span><span class="p">]:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">rotate</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.rx&quot;</span><span class="p">,</span> <span class="s2">&quot;.ry&quot;</span><span class="p">,</span> <span class="s2">&quot;.rz&quot;</span><span class="p">]:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">scale</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.sx&quot;</span><span class="p">,</span> <span class="s2">&quot;.sy&quot;</span><span class="p">,</span> <span class="s2">&quot;.sz&quot;</span><span class="p">]:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_ResetXformsModeWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_ResetXformsModeWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.deleteModule"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.deleteModule">[docs]</a> <span class="k">def</span> <span class="nf">deleteModule</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Delete the module and all associated nodes and interfaces.</span>
+
+<span class="sd"> First, this will delete the joint mover, remove the entry from the outliner and the skeleton settings UI.</span>
+<span class="sd"> Then, it has to deal with any connected modules or mirror modules and resolve any issues there.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># delete the joint mover</span>
+ <span class="n">movers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="k">for</span> <span class="n">moverGrp</span> <span class="ow">in</span> <span class="n">movers</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">moverGrp</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">)</span>
+
+ <span class="c1"># remove the entry from the outliner</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">indexOfTopLevelItem</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_treeModule&quot;</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">takeTopLevelItem</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="c1"># remove the groupbox</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+
+ <span class="c1"># deal with mirror module</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">mirrorModule</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mirrorModule</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">mirrorModule</span> <span class="o">!=</span> <span class="s2">&quot;None&quot;</span><span class="p">:</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">mod</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">modName</span> <span class="o">==</span> <span class="n">mirrorModule</span><span class="p">:</span>
+
+ <span class="c1"># set the mirrored version</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="s2">&quot;None&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get instance of mirror module&#39;s class</span>
+ <span class="n">modType</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">)</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="s2">&quot;RigModules.&quot;</span> <span class="o">+</span> <span class="n">modType</span><span class="p">,</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">[</span><span class="n">modType</span><span class="p">])</span>
+
+ <span class="c1"># get the class name from that module file (returns Modules.ART_Root.ART_Root for example)</span>
+ <span class="n">moduleClass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">module</span><span class="o">.</span><span class="n">className</span><span class="p">)</span>
+
+ <span class="c1"># find the instance of that module and call on the skeletonSettings_UI function</span>
+ <span class="n">moduleInst</span> <span class="o">=</span> <span class="n">moduleClass</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">,</span> <span class="n">modName</span><span class="p">)</span>
+
+ <span class="c1"># find the current groupBox for this module</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">title</span><span class="p">()</span> <span class="o">==</span> <span class="n">modName</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+
+ <span class="c1"># relaunch the skeleton settings UI with new info</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="n">modName</span><span class="p">)</span>
+
+ <span class="c1"># check for any attached modules</span>
+ <span class="n">attachedModules</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">checkForDependencies</span><span class="p">()</span>
+ <span class="n">elementList</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">attachedModules</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">attachedModules</span><span class="p">:</span>
+ <span class="n">elementList</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="s2">&quot; -&gt; parent changed from: &quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">&quot; to: &quot;</span><span class="p">,</span> <span class="s2">&quot;root</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="s2">&quot;root_mover&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="s2">&quot;root&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;root&quot;</span><span class="p">)</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="s2">&quot;root_mover&quot;</span>
+
+ <span class="c1"># create the connection geo between the two</span>
+ <span class="n">childMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findOffsetMoverFromName</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createBoneConnection</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">childMover</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+ <span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">applyModuleChanges</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># remove the network node</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">networkNode</span><span class="p">)</span>
+
+ <span class="c1"># delete scriptJob</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span><span class="n">kill</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBoneCount</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+
+ <span class="c1"># warn user about changes</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">attachedModules</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">winParent</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">win</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">DialogMessage</span><span class="p">(</span><span class="s2">&quot;Attention!&quot;</span><span class="p">,</span>
+ <span class="s2">&quot;The following modules have had their parent changed</span><span class="se">\</span>
+<span class="s2"> due to the change in this module&#39;s structure:&quot;</span><span class="p">,</span>
+ <span class="n">elementList</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">winParent</span><span class="p">)</span>
+ <span class="n">win</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.checkForDependencies"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.checkForDependencies">[docs]</a> <span class="k">def</span> <span class="nf">checkForDependencies</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method will check modules for any attached modules or children modules.</span>
+
+<span class="sd"> This method is generally called when deleting a module or when changing a module name</span>
+<span class="sd"> so that any connected modules are updated accordingly.</span>
+
+<span class="sd"> :return: attached modules</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># This method will check our module for any attached modules</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getAllModules</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="n">attachedMods</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">instances</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">instances</span><span class="p">[</span><span class="n">networkNode</span><span class="p">]</span> <span class="o">=</span> <span class="n">inst</span>
+
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">parentJoint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">)</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">parentJoint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="n">instance</span> <span class="o">=</span> <span class="n">instances</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+ <span class="n">attachedMods</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">module</span><span class="p">,</span> <span class="n">parentJoint</span><span class="p">,</span> <span class="n">moduleName</span><span class="p">,</span> <span class="n">instance</span><span class="p">])</span>
+
+ <span class="k">return</span> <span class="n">attachedMods</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createMirrorOfModule_UI"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createMirrorOfModule_UI">[docs]</a> <span class="k">def</span> <span class="nf">createMirrorOfModule_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method builds the interface for creating a mirror of a module.</span>
+
+<span class="sd"> .. image:: /images/mirrorModule.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># copy the settings of the module</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">copySettings</span><span class="p">()</span>
+
+ <span class="c1"># get basename and classname</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+ <span class="n">className</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI to get the name information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">()</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_createMirrorModuleUI&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Create Mirror Module&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">150</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+
+ <span class="c1"># create the background image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="c1"># create the prefix pair of fields</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Prefix: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefixLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot connection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updatePreview</span><span class="p">,</span> <span class="n">baseName</span><span class="p">))</span>
+
+ <span class="c1"># create the suffix pair of fields</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Suffix: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffixLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot connection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updatePreview</span><span class="p">,</span> <span class="n">baseName</span><span class="p">))</span>
+
+ <span class="c1"># spacer</span>
+ <span class="n">spacerItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem</span><span class="p">)</span>
+
+ <span class="c1"># realtime preview of final module name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Preview: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignHCenter</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">previewLabel</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="p">)</span>
+
+ <span class="c1"># set preview font</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+
+ <span class="n">spacerItem1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem1</span><span class="p">)</span>
+
+ <span class="c1"># create button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;CREATE&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">285</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">285</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot on create button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createMirrorModule</span><span class="p">)</span>
+
+ <span class="c1"># show the window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorWindow</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.updatePreview"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.updatePreview">[docs]</a> <span class="k">def</span> <span class="nf">updatePreview</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baseName</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This simple method updates the module preview field(QLineEdit) with the entered prefix and suffix.</span>
+
+<span class="sd"> :param baseName: base name of the module (example: arm)</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">prefix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span>
+
+ <span class="n">string</span> <span class="o">+=</span> <span class="n">baseName</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">suffix</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createMirrorModule"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createMirrorModule">[docs]</a> <span class="k">def</span> <span class="nf">createMirrorModule</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method creates the mirror of a module and is called from createMirrorOfModule_UI.</span>
+
+<span class="sd"> To create the mirror of a module, after a few checks are done, a module of the same type is created first.</span>
+<span class="sd"> If that module type has a left/right version of a joint mover file, the opposite version is brought in.</span>
+<span class="sd"> All the normal steps of module creation are then gone through and lastly, mirrorTransformations is called.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">userSpecName</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">)</span>
+ <span class="n">className</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">)</span>
+
+ <span class="c1"># check to see if a module already has that name</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">mirrorModule</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="n">userSpecName</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">confirmDialog</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">&quot;Name Exists&quot;</span><span class="p">,</span>
+ <span class="n">message</span><span class="o">=</span><span class="s2">&quot;A module with that name already exists. Please enter a unique name </span><span class="se">\</span>
+<span class="s2"> for the module&quot;</span><span class="p">,</span>
+ <span class="n">icon</span><span class="o">=</span><span class="s2">&quot;critical&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="c1"># now check the modules that contain the parent bone</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">bones</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+ <span class="n">splitJoints</span> <span class="o">=</span> <span class="n">bones</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+ <span class="n">createdJoints</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># create a list of the created bones</span>
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">splitJoints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">createdJoints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+
+ <span class="c1"># see if the parent bone is in that list</span>
+ <span class="k">if</span> <span class="n">parent</span> <span class="ow">in</span> <span class="n">createdJoints</span><span class="p">:</span>
+ <span class="n">mirrorModule</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+
+ <span class="c1"># if our parent bone&#39;s module, has a mirror module, we need to create this new mirror module under that</span>
+ <span class="c1"># parent instead (if parent = l_thigh, mirror parent should be r_thigh)</span>
+ <span class="k">if</span> <span class="n">mirrorModule</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">modName</span> <span class="o">==</span> <span class="n">mirrorModule</span><span class="p">:</span>
+
+ <span class="c1"># find the parent&#39;s mover (if parent is l_thigh, mover would be l_leg_thigh_mover)</span>
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># find mirror mover</span>
+ <span class="n">mirrorMover</span> <span class="o">=</span> <span class="n">mover</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">moduleName</span><span class="p">,</span> <span class="n">mirrorModule</span><span class="p">)</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+ <span class="n">boneList</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+
+ <span class="c1"># now, we need to find the joint from the mirror mover, and once there is a match, the parent\</span>
+ <span class="c1"># var now becomes that joint</span>
+ <span class="k">if</span> <span class="n">mirrorMover</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_mover&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">jointName</span> <span class="o">=</span> <span class="n">mirrorMover</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_mover&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">jointName</span> <span class="ow">in</span> <span class="n">boneList</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">jointName</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># if removing _mover didn&#39;t yield a matching joint name, take out the baseName from\</span>
+ <span class="c1"># the mover name, and then remove the _mover</span>
+ <span class="n">jointName</span> <span class="o">=</span> <span class="n">jointName</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">baseName</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">jointName</span> <span class="ow">in</span> <span class="n">boneList</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">jointName</span>
+
+ <span class="c1"># arms and leg exception</span>
+ <span class="n">mirrorSide</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">specialCaseModules</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;ART_Leg_Standard&quot;</span><span class="p">,</span> <span class="s2">&quot;ART_Arm_Standard&quot;</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">className</span> <span class="ow">in</span> <span class="n">specialCaseModules</span><span class="p">:</span>
+ <span class="n">side</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">side</span> <span class="o">==</span> <span class="s2">&quot;Left&quot;</span><span class="p">:</span>
+ <span class="n">mirrorSide</span> <span class="o">=</span> <span class="s2">&quot;Right&quot;</span>
+ <span class="k">if</span> <span class="n">side</span> <span class="o">==</span> <span class="s2">&quot;Right&quot;</span><span class="p">:</span>
+ <span class="n">mirrorSide</span> <span class="o">=</span> <span class="s2">&quot;Left&quot;</span>
+
+ <span class="c1"># create an instance of the module</span>
+ <span class="n">mod</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="s2">&quot;RigModules.&quot;</span> <span class="o">+</span> <span class="n">className</span><span class="p">,</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">[</span><span class="n">className</span><span class="p">])</span>
+
+ <span class="c1"># get the class name from that module file (returns Modules.ART_Root.ART_Root for example)</span>
+ <span class="n">moduleClass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">mod</span><span class="o">.</span><span class="n">className</span><span class="p">)</span>
+ <span class="n">jmPath</span> <span class="o">=</span> <span class="n">mod</span><span class="o">.</span><span class="n">jointMover</span>
+
+ <span class="c1"># call functions to create network node, skeleton settings UI</span>
+ <span class="n">moduleInst</span> <span class="o">=</span> <span class="n">moduleClass</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">,</span> <span class="n">userSpecName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">moduleInst</span><span class="p">)</span>
+ <span class="n">networkNodeInst</span> <span class="o">=</span> <span class="n">moduleInst</span><span class="o">.</span><span class="n">buildNetwork</span><span class="p">()</span>
+
+ <span class="c1"># if mirrorSide exists</span>
+ <span class="k">if</span> <span class="n">mirrorSide</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">jmPath</span> <span class="o">=</span> <span class="n">jmPath</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;.ma&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">mirrorSide</span> <span class="o">+</span> <span class="s2">&quot;.ma&quot;</span>
+ <span class="k">if</span> <span class="n">mirrorSide</span> <span class="o">==</span> <span class="s2">&quot;Left&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="s2">&quot;Left&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mirrorSide</span> <span class="o">==</span> <span class="s2">&quot;Right&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="s2">&quot;Right&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># build the settings UI/joint mover/add to outliner</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="n">userSpecName</span><span class="p">)</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">jointMover_Build</span><span class="p">(</span><span class="n">jmPath</span><span class="p">)</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">addJointMoverToOutliner</span><span class="p">()</span>
+
+ <span class="c1"># update the created joints attribute on the network node with the new names</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">prefix</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">suffix</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">suffix</span>
+
+ <span class="n">createdBones</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+ <span class="n">createdBones</span> <span class="o">=</span> <span class="n">createdBones</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+
+ <span class="n">attrString</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">createdBones</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">attrString</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">bone</span> <span class="o">+</span> <span class="n">suffix</span> <span class="o">+</span> <span class="s2">&quot;::&quot;</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">,</span> <span class="n">attrString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># update the self.currentParent label and the parentModuleBone attr on the network node</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># find the current parent mover and its scale</span>
+ <span class="k">if</span> <span class="n">parent</span> <span class="o">==</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="s2">&quot;root_mover&quot;</span>
+ <span class="n">offsetMover</span> <span class="o">=</span> <span class="s2">&quot;root_mover&quot;</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># find the parent mover name to parent to</span>
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">offsetMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">parent</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">mover</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">userSpecName</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scaleConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">userSpecName</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the connection geo between the two</span>
+ <span class="n">childMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findOffsetMoverFromName</span><span class="p">(</span><span class="n">userSpecName</span><span class="p">)</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createBoneConnection</span><span class="p">(</span><span class="n">offsetMover</span><span class="p">,</span> <span class="n">childMover</span><span class="p">,</span> <span class="n">userSpecName</span><span class="p">)</span>
+
+ <span class="n">globalMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findGlobalMoverFromName</span><span class="p">(</span><span class="n">userSpecName</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">globalMover</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setToolTo</span><span class="p">(</span><span class="s2">&quot;moveSuperContext&quot;</span><span class="p">)</span>
+
+ <span class="n">utils</span><span class="o">.</span><span class="n">fitViewAndShade</span><span class="p">()</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">pasteSettings</span><span class="p">()</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">aimMode</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># delete UI</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_createMirrorModuleUI&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># update the mirrorModule setting</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorMod</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">userSpecName</span><span class="p">)</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">mirrorMod</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="n">userSpecName</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNodeInst</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># mirror transformations</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorTransformations</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">populateNetworkList</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.mirrorTransformations_RigPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.mirrorTransformations_RigPose">[docs]</a> <span class="k">def</span> <span class="nf">mirrorTransformations_RigPose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is used when creating rig poses for modules. If a module has a mirror, this method will mirror the</span>
+<span class="sd"> rig pose transformations to that mirror module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># reset mirror module&#39;s rig pose</span>
+ <span class="n">mirrorModInst</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnMirrorModuleInst</span>
+
+ <span class="c1"># ensure the mirrorModInst has a UI and is setup for rig pose creation</span>
+ <span class="n">mirrorModInst</span><span class="o">.</span><span class="n">setupForRigPose</span><span class="p">()</span>
+ <span class="c1"># if not cmds.objExists(mirrorModInst.name + &quot;_rigPose&quot;):</span>
+ <span class="c1"># mirrorModInst.getReferencePose(&quot;rigPose&quot;)</span>
+
+ <span class="c1"># call on base mirror transformations method</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorTransformations</span><span class="p">()</span>
+ <span class="n">mirrorModInst</span><span class="o">.</span><span class="n">getReferencePose</span><span class="p">(</span><span class="s2">&quot;rigPose&quot;</span><span class="p">)</span>
+
+ <span class="c1"># update the rig pose of the mirrorModInst</span>
+ <span class="n">mirrorModInst</span><span class="o">.</span><span class="n">updateRigPose</span><span class="p">(</span><span class="n">mirrorModInst</span><span class="o">.</span><span class="n">overallSlider</span><span class="p">)</span>
+ <span class="n">mirrorModInst</span><span class="o">.</span><span class="n">cleanUpRigPose</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.mirrorTransformations"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.mirrorTransformations">[docs]</a> <span class="k">def</span> <span class="nf">mirrorTransformations</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method mirrors transformations for the module&#39;s mirror module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">currentSelection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get the mirror module</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">mirrorModule</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">)</span>
+
+ <span class="c1"># get mirror module instance and information</span>
+ <span class="n">mirrorInst</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnMirrorModuleInst</span>
+
+ <span class="c1"># turn off aim mode</span>
+ <span class="n">mirrorInst</span><span class="o">.</span><span class="n">aimMode_Setup</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># turn off coplanar mode IF it exists on the module</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">state</span> <span class="o">=</span> <span class="n">mirrorInst</span><span class="o">.</span><span class="n">coplanarBtn</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">state</span><span class="p">:</span>
+ <span class="n">mirrorInst</span><span class="o">.</span><span class="n">coplanarBtn</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">mirrorInst</span><span class="o">.</span><span class="n">coplanarMode</span><span class="p">()</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="n">moverTypes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span>
+ <span class="k">for</span> <span class="n">moverType</span> <span class="ow">in</span> <span class="n">moverTypes</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">jointMover</span> <span class="ow">in</span> <span class="n">moverType</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">jointMover</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">jointMover</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">)</span>
+
+ <span class="n">mirrorMover</span> <span class="o">=</span> <span class="n">jointMover</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">moduleName</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">mirrorMover</span> <span class="o">=</span> <span class="n">mirrorModule</span> <span class="o">+</span> <span class="n">mirrorMover</span>
+ <span class="n">mirrorAttrs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;translateX&quot;</span><span class="p">,</span> <span class="s2">&quot;translateY&quot;</span><span class="p">,</span> <span class="s2">&quot;translateZ&quot;</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">mirrorAttrs</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mirrorMover</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="o">*</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mirrorMover</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">currentSelection</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">currentSelection</span><span class="p">)</span>
+
+ <span class="c1"># turn aim mode on</span>
+ <span class="n">mirrorInst</span><span class="o">.</span><span class="n">aimMode_Setup</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># extend functionality</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorTransformations_Custom</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.rigPose_UI"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.rigPose_UI">[docs]</a> <span class="k">def</span> <span class="nf">rigPose_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parentWidget</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method creates the UI widget that gets parented into the publish UI that handles rig pose creation.</span>
+
+<span class="sd"> A slider gets created for the overall module that goes from current pose to ideal rig pose. Then a slider</span>
+<span class="sd"> gets created for each joint in the module to allow for finer control over the rig pose creation.</span>
+
+<span class="sd"> :param parentWidget: the widget the rig pose UI (QFrame) will get parented to</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># Add a QFrame for the widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span><span class="o">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">WA_DeleteOnClose</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">310</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span><span class="o">.</span><span class="n">setMaximumWidth</span><span class="p">(</span><span class="mi">310</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># add the rig pose frame to the stackWidget</span>
+ <span class="n">parentWidget</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span><span class="p">)</span>
+ <span class="n">numWidgetsInStack</span> <span class="o">=</span> <span class="n">parentWidget</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+ <span class="n">parentWidget</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">numWidgetsInStack</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># frame styling</span>
+ <span class="n">backgroundImg</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/field_background.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background-image: url(&quot;</span> <span class="o">+</span> <span class="n">backgroundImg</span> <span class="o">+</span> <span class="s2">&quot;);&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create an overall layout</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPoseFrame</span><span class="p">)</span>
+ <span class="n">label</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+
+ <span class="c1"># create a slider for the overall module rig pose</span>
+ <span class="n">hboxLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">hboxLayout</span><span class="p">)</span>
+
+ <span class="n">image1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">image1</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="n">image1</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="n">modelPoseImg</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/modelPose.png&quot;</span><span class="p">))</span>
+ <span class="n">image1</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background-image: url(&quot;</span> <span class="o">+</span> <span class="n">modelPoseImg</span> <span class="o">+</span> <span class="s2">&quot;);&quot;</span><span class="p">)</span>
+ <span class="n">hboxLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">image1</span><span class="p">)</span>
+ <span class="n">image1</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Model Pose&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSlider</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+ <span class="n">hboxLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setOrientation</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">Horizontal</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setSingleStep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setTracking</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">image2</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">image2</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="n">image2</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="n">rigPoseImg</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/rigPose.png&quot;</span><span class="p">))</span>
+ <span class="n">image2</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background-image: url(&quot;</span> <span class="o">+</span> <span class="n">rigPoseImg</span> <span class="o">+</span> <span class="s2">&quot;);&quot;</span><span class="p">)</span>
+ <span class="n">hboxLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">image2</span><span class="p">)</span>
+ <span class="n">image2</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Rig Pose&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create hboxlayout for resetAll and update Rig Pose buttons</span>
+ <span class="n">buttonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">buttonLayout</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseResetAllBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Reset Rig Pose&quot;</span><span class="p">)</span>
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPoseResetAllBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseResetAllBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetRigPose</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseResetAllBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Reset the module to it&#39;s initial ideal rig pose.&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseResetAllBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseResetAllBtn</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseUpdateAllBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Update Rig Pose&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseUpdateAllBtn</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPoseUpdateAllBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseUpdateAllBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updateRigPose</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseUpdateAllBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span>
+ <span class="s2">&quot;Update the rig pose if you&#39;ve done any custom manipulations to the controls.&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseUpdateAllBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create a frame for the advanced controls</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPose_advancedGroup</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">(</span><span class="s2">&quot;Advanced&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPose_advancedGroup</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPose_advancedLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPose_advancedGroup</span><span class="p">)</span>
+
+ <span class="c1"># create a slider for each created joint</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createRigPoseSliderForJoint</span><span class="p">(</span><span class="n">joint</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">joint</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">baseName</span><span class="p">:</span>
+ <span class="n">nameData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createRigPoseSliderForJoint</span><span class="p">(</span><span class="n">joint</span><span class="p">)</span>
+
+ <span class="c1"># create mirror button if applicable</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">mirrorMod</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mirrorMod</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseMirrorBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Mirror to: &quot;</span> <span class="o">+</span> <span class="n">mirrorMod</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigPoseMirrorBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseMirrorBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mirrorTransformations_RigPose</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseMirrorBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseMirrorBtn</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPoseLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.buildRig"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.buildRig">[docs]</a> <span class="k">def</span> <span class="nf">buildRig</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">textEdit</span><span class="p">,</span> <span class="n">uiInst</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method starts building the rig for a module. It will then call on buildRigCustom, which is implemented</span>
+<span class="sd"> in each derived module class as an override function.</span>
+
+<span class="sd"> :param textEdit: The text edit in the buildProgressUI that we output information to.</span>
+<span class="sd"> :param uiInst: passed in instance of the buildProgressUI</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get current nodes in scene</span>
+ <span class="n">currentNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="s2">&quot;*&quot;</span><span class="p">,</span> <span class="n">long</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">successfulBuild</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="n">errorMessage</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+
+ <span class="c1"># run the instance build function</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildRigCustom</span><span class="p">(</span><span class="n">textEdit</span><span class="p">,</span> <span class="n">uiInst</span><span class="p">)</span>
+
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">successfulBuild</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="n">errorMessage</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
+
+ <span class="c1"># get all nodes in scene and compare to original list</span>
+ <span class="n">allNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="s2">&quot;*&quot;</span><span class="p">,</span> <span class="n">long</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">newNodes</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">allNodes</span><span class="p">)</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">currentNodes</span><span class="p">))</span>
+
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">newNodes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.sourceModule&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;sourceModule&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.sourceModule&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">node</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">successfulBuild</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="s2">&quot;Build Rig Failed: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
+ <span class="nb">print</span> <span class="n">errorMessage</span></div>
+ <span class="c1"># self.deleteRig()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.buildRigCustom"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.buildRigCustom">[docs]</a> <span class="k">def</span> <span class="nf">buildRigCustom</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">textEdit</span><span class="p">,</span> <span class="n">uiInst</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is what truly builds the rig for each module. It is implemented in the derived module class.</span>
+
+<span class="sd"> :param textEdit: The text edit in the buildProgressUI that we output information to.</span>
+<span class="sd"> :param uiInst: passed in instance of the buildProgressUI</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.deleteRig"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.deleteRig">[docs]</a> <span class="k">def</span> <span class="nf">deleteRig</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method deletes all rigging for the module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">allNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="s2">&quot;*&quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">allNodes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.sourceModule&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">source</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.sourceModule&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">source</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.mirrorTransformations_Custom"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.mirrorTransformations_Custom">[docs]</a> <span class="k">def</span> <span class="nf">mirrorTransformations_Custom</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.updateSettingsUI"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.updateSettingsUI">[docs]</a> <span class="k">def</span> <span class="nf">updateSettingsUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.applyModuleChanges"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.applyModuleChanges">[docs]</a> <span class="k">def</span> <span class="nf">applyModuleChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.addJointMoverToOutliner"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.addJointMoverToOutliner">[docs]</a> <span class="k">def</span> <span class="nf">addJointMoverToOutliner</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.updateOutliner"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.updateOutliner">[docs]</a> <span class="k">def</span> <span class="nf">updateOutliner</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.skinProxyGeo"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.skinProxyGeo">[docs]</a> <span class="k">def</span> <span class="nf">skinProxyGeo</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.aimMode"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.aimMode">[docs]</a> <span class="k">def</span> <span class="nf">aimMode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method toggles the aim mode state if the module can have aim mode.</span>
+
+<span class="sd"> It then calls on each derived module&#39;s aimMode_Setup which defines how to setup aim mode for the module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.aimMode&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.aimMode&quot;</span><span class="p">,</span> <span class="n">state</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimMode_Setup</span><span class="p">(</span><span class="n">state</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.aimMode_Setup"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.aimMode_Setup">[docs]</a> <span class="k">def</span> <span class="nf">aimMode_Setup</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setupModelPoseForRig"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setupModelPoseForRig">[docs]</a> <span class="k">def</span> <span class="nf">setupModelPoseForRig</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.matchModelPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.matchModelPose">[docs]</a> <span class="k">def</span> <span class="nf">matchModelPose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.pinModule"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.pinModule">[docs]</a> <span class="k">def</span> <span class="nf">pinModule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.bakeOffsets"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.bakeOffsets">[docs]</a> <span class="k">def</span> <span class="nf">bakeOffsets</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method bakes any transforms on the offset movers up to the global movers, and then zeroes out the offset</span>
+<span class="sd"> movers.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get movers</span>
+ <span class="n">jointMovers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="c1"># separate mover lists</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">locators</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># create locators for the offsetMovers, then zero out offset mover</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">offsetMovers</span><span class="p">:</span>
+ <span class="n">locatorName</span> <span class="o">=</span> <span class="n">mover</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_offset&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_loc&quot;</span>
+ <span class="n">loc</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">spaceLocator</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">locatorName</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="c1"># constrain locator</span>
+ <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">loc</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span>
+
+ <span class="c1"># parent locator under a copy of the locatorName</span>
+ <span class="n">parentLoc</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">duplicate</span><span class="p">(</span><span class="n">loc</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">parentLoc</span><span class="p">)</span>
+ <span class="n">locators</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parentLoc</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">offsetMovers</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.tx&quot;</span><span class="p">,</span> <span class="s2">&quot;.ty&quot;</span><span class="p">,</span> <span class="s2">&quot;.tz&quot;</span><span class="p">,</span> <span class="s2">&quot;.rx&quot;</span><span class="p">,</span> <span class="s2">&quot;.ry&quot;</span><span class="p">,</span> <span class="s2">&quot;.rz&quot;</span><span class="p">]:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># snap global movers to locators</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">globalMovers</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;_loc&quot;</span><span class="p">):</span>
+ <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;_loc&quot;</span><span class="p">,</span> <span class="n">mover</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span>
+
+ <span class="c1"># remove locs</span>
+ <span class="k">for</span> <span class="n">const</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">const</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">loc</span> <span class="ow">in</span> <span class="n">locators</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setupForRigPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setupForRigPose">[docs]</a> <span class="k">def</span> <span class="nf">setupForRigPose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method unhides the movers and constrains the joints to the movers for creating the rig pose.</span>
+
+<span class="sd"> If the user wants to create a custom rig pose (instead of using the sliders), this method sets the module</span>
+<span class="sd"> up for that functionality.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># unlock joint movers</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;JointMover&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">jmNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">jmNodes</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># find the mover shapes and set their visibility</span>
+ <span class="n">movers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">movers</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">shapes</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">movers</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">each</span><span class="p">:</span>
+ <span class="n">child</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">children</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">shapes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">shapes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;|&quot;</span> <span class="o">+</span> <span class="n">child</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">for</span> <span class="n">shape</span> <span class="ow">in</span> <span class="n">shapes</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># show global movers</span>
+ <span class="n">shapes</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">globalMovers</span><span class="p">:</span>
+ <span class="n">child</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">children</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">shapes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">shapes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;|&quot;</span> <span class="o">+</span> <span class="n">child</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">for</span> <span class="n">shape</span> <span class="ow">in</span> <span class="n">shapes</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># unlock mover group for this module and make visible</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp.v&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># hide the proxy geo</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">allNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">allNodes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_proxy_geo&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;mesh&quot;</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">parent</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">parent</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get the joints created by this module</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="c1"># create mover name</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">,</span> <span class="n">joint</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">joint</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">baseName</span><span class="p">:</span>
+ <span class="n">nameData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">,</span> <span class="n">joint</span><span class="p">)</span>
+
+ <span class="c1"># lock joint movers</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;JointMover&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">jmNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">jmNodes</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setSkeletonPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setSkeletonPose">[docs]</a> <span class="k">def</span> <span class="nf">setSkeletonPose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">poseType</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method constrains the joints to the movers and then stores that pose data for those joints.</span>
+
+<span class="sd"> This could be the model pose or the rig pose.</span>
+
+<span class="sd"> :param poseType: whether to set the model pose or rig pose for the joints.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="c1"># get the joints created by this module</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="c1"># create mover name</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">,</span> <span class="n">joint</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">joint</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">baseName</span><span class="p">:</span>
+ <span class="n">nameData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">,</span> <span class="n">joint</span><span class="p">)</span>
+
+ <span class="c1"># set pose</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setReferencePose</span><span class="p">(</span><span class="n">poseType</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.removeSkeletalConstraints"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.removeSkeletalConstraints">[docs]</a> <span class="k">def</span> <span class="nf">removeSkeletalConstraints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method removes any constraints on the joints. This tends to get called by removing rigging.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the joints created by this module and remove the constraints</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="c1"># create mover name</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">joint</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">joint</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">baseName</span><span class="p">:</span>
+ <span class="n">nameData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">joint</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.cleanUpRigPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.cleanUpRigPose">[docs]</a> <span class="k">def</span> <span class="nf">cleanUpRigPose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method hides the joint movers and unconstrains the joints from the movers after setting a rig pose.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># show the proxy geo</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">allNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">allNodes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_proxy_geo&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;mesh&quot;</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">parent</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">parent</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># unlock mover group for this module and make invisible</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp.v&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get the joints created by this module and remove the constraints</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="c1"># create mover name</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">joint</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">joint</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">baseName</span><span class="p">:</span>
+ <span class="n">nameData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointBaseName</span> <span class="o">+</span> <span class="s2">&quot;_mover_offset&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">joint</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.updateRigPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.updateRigPose">[docs]</a> <span class="k">def</span> <span class="nf">updateRigPose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">slider</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method updates what the stored rig pose is for a module. The default rig pose tends to be zeroed out</span>
+<span class="sd"> rotations, but this function can essentially update what the max value on the rig pose slider sets the pose to.</span>
+
+<span class="sd"> :param slider: The rig pose slider where the min is the current model pose and the max is the rig pose.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get network node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+
+ <span class="c1"># get pose data off networkNode</span>
+ <span class="n">originalData</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.rigPose&quot;</span><span class="p">))</span>
+ <span class="n">newPose</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">originalData</span><span class="p">:</span>
+ <span class="n">moverData</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;mover&quot;</span><span class="p">)</span>
+ <span class="n">moverData</span><span class="p">[</span><span class="s2">&quot;mover&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mover</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mover</span><span class="p">):</span>
+ <span class="n">translate</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translate&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">rotate</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotate&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="n">moverData</span><span class="p">[</span><span class="s2">&quot;translate&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">translate</span>
+ <span class="n">moverData</span><span class="p">[</span><span class="s2">&quot;rotate&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rotate</span>
+ <span class="n">newPose</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">moverData</span><span class="p">)</span>
+
+ <span class="n">jsonString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">newPose</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.rigPose&quot;</span><span class="p">,</span> <span class="n">jsonString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.resetRigPose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.resetRigPose">[docs]</a> <span class="k">def</span> <span class="nf">resetRigPose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method resets the module rig pose to be the default (zeroed rotations).</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the network node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+
+ <span class="c1"># remove the rigPose attribute on the networkNode</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;rigPose&quot;</span><span class="p">)</span>
+
+ <span class="c1"># recreate rig pose node with defaults</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">getReferencePose</span><span class="p">(</span><span class="s2">&quot;rigPose&quot;</span><span class="p">)</span>
+
+ <span class="c1"># set slider</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.resetRigPose_Part"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.resetRigPose_Part">[docs]</a> <span class="k">def</span> <span class="nf">resetRigPose_Part</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">part</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method resets the given joint (part) rig pose to be zeroed rotations. This is for the part slider on</span>
+<span class="sd"> the rig pose UI in the advanced section.</span>
+
+<span class="sd"> :param part: The given joint name slider.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the networkNode</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+
+ <span class="c1"># get the poseData</span>
+ <span class="n">poseData</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.rigPose&quot;</span><span class="p">))</span>
+
+ <span class="c1"># find our part in the pose data</span>
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">poseData</span><span class="p">:</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;mover&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mover</span> <span class="o">==</span> <span class="n">part</span><span class="p">:</span>
+ <span class="n">rotate</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;rotate&quot;</span><span class="p">)</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotate&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;double3&quot;</span><span class="p">)</span>
+ <span class="n">data</span><span class="p">[</span><span class="s2">&quot;rotate&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.getReferencePose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.getReferencePose">[docs]</a> <span class="k">def</span> <span class="nf">getReferencePose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">poseType</span><span class="p">,</span> <span class="n">zeroPose</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method gets the model pose or the rig pose (depending on poseType) and stores that data for the movers.</span>
+
+<span class="sd"> :param poseType: Whether or not to get the model pose or rig pose.</span>
+<span class="sd"> :param zeroPose: Whether or not the default rig pose should be set to zeroed rotations.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get movers</span>
+ <span class="n">jointMovers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="c1"># separate mover lists</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="c1"># get the network node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+
+ <span class="c1"># if rigPose already exists, then do not set values</span>
+ <span class="k">if</span> <span class="n">poseType</span> <span class="o">==</span> <span class="s2">&quot;rigPose&quot;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">poseType</span><span class="p">):</span>
+ <span class="k">return</span>
+
+ <span class="c1"># create the pose data attr if needed</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">poseType</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="n">poseType</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create reference pose data dict</span>
+ <span class="n">poseData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># loop through each mover, getting the translate and rotate values, creating an attribute on the network node</span>
+ <span class="c1"># to store those values</span>
+ <span class="k">for</span> <span class="n">moverList</span> <span class="ow">in</span> <span class="p">[</span><span class="n">globalMovers</span><span class="p">,</span> <span class="n">offsetMovers</span><span class="p">]:</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">moverList</span><span class="p">:</span>
+ <span class="n">moverData</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="n">moverData</span><span class="p">[</span><span class="s2">&quot;mover&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mover</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;translate&quot;</span><span class="p">,</span> <span class="s2">&quot;rotate&quot;</span><span class="p">]:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">zeroPose</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">poseType</span> <span class="o">==</span> <span class="s2">&quot;rigPose&quot;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="o">==</span> <span class="s2">&quot;rotate&quot;</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">)</span>
+
+ <span class="c1"># add the data to the list</span>
+ <span class="n">moverData</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
+
+ <span class="c1"># add mover data to the pose data list</span>
+ <span class="n">poseData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">moverData</span><span class="p">)</span>
+
+ <span class="c1"># dump the pose data list onto the poseType attribute</span>
+ <span class="n">jsonString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">poseData</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">poseType</span><span class="p">,</span> <span class="n">jsonString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setReferencePose"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setReferencePose">[docs]</a> <span class="k">def</span> <span class="nf">setReferencePose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">poseType</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method gets the data for the given pose type (rig or model) and sets the movers with those values.</span>
+
+<span class="sd"> :param poseType: Whether to set the model pose or the rig pose on the movers.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the network node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+
+ <span class="c1"># get the pose data from the attribute</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">poseType</span><span class="p">):</span>
+ <span class="n">poseData</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">poseType</span><span class="p">))</span>
+
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">poseData</span><span class="p">:</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;mover&quot;</span><span class="p">)</span>
+ <span class="n">translate</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;translate&quot;</span><span class="p">)</span>
+ <span class="n">rotate</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;rotate&quot;</span><span class="p">)</span>
+
+ <span class="c1"># if the mover exists, set the values</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mover</span><span class="p">):</span>
+
+ <span class="c1"># set translations</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">translate</span><span class="p">)):</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translateX&quot;</span><span class="p">,</span> <span class="n">translate</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translateY&quot;</span><span class="p">,</span> <span class="n">translate</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translateZ&quot;</span><span class="p">,</span> <span class="n">translate</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># set rotations</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rotate</span><span class="p">)):</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotateX&quot;</span><span class="p">,</span> <span class="n">rotate</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotateY&quot;</span><span class="p">,</span> <span class="n">rotate</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotateZ&quot;</span><span class="p">,</span> <span class="n">rotate</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setReferencePoseSlider"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setReferencePoseSlider">[docs]</a> <span class="k">def</span> <span class="nf">setReferencePoseSlider</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">part</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method takes the slider value of a given part and then calls on setPosePercentage, which will then find</span>
+<span class="sd"> the values of the model pose and the rig pose and figure out based on the slider percentage what values to</span>
+<span class="sd"> set on the mover.</span>
+
+<span class="sd"> :param part: the joint mover which the slider is controlling.</span>
+<span class="sd"> :param args: the values from the slider</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">percent</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">*</span> <span class="o">.</span><span class="mi">01</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setPosePercentage</span><span class="p">(</span><span class="n">percent</span><span class="p">,</span> <span class="n">part</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setPosePercentage"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setPosePercentage">[docs]</a> <span class="k">def</span> <span class="nf">setPosePercentage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">percent</span><span class="p">,</span> <span class="n">part</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method takes the percent from setReferencePoseSlider, gets the values of the model pose and rig pose</span>
+<span class="sd"> for the given part, then calls on setPosePercentage_Part to find and set the values on the mover that is</span>
+<span class="sd"> the percentage between model and rig pose.</span>
+
+<span class="sd"> Example: If the model pose is a value of 10 and the rig pose is a value of 0, and the slider is at .5, then</span>
+<span class="sd"> the value to set is 5. (But this is done and found per attribute)</span>
+
+<span class="sd"> :param percent: What percent of model and rig pose to set.</span>
+<span class="sd"> :param part: What joint mover to set the values on.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get network node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+
+ <span class="c1"># get reference pose attributes</span>
+ <span class="n">modelPoseData</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.modelPose&quot;</span><span class="p">))</span>
+ <span class="n">rigPoseData</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.rigPose&quot;</span><span class="p">))</span>
+
+ <span class="c1"># get the data for each mover</span>
+ <span class="k">for</span> <span class="n">poseData</span> <span class="ow">in</span> <span class="n">modelPoseData</span><span class="p">:</span>
+
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">poseData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;mover&quot;</span><span class="p">)</span>
+ <span class="n">translate</span> <span class="o">=</span> <span class="n">poseData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;translate&quot;</span><span class="p">)</span>
+ <span class="n">rotate</span> <span class="o">=</span> <span class="n">poseData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;rotate&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">part</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">part</span> <span class="o">==</span> <span class="n">mover</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setPosePercentage_Part</span><span class="p">(</span><span class="n">percent</span><span class="p">,</span> <span class="n">mover</span><span class="p">,</span> <span class="n">modelPoseData</span><span class="p">,</span> <span class="n">rigPoseData</span><span class="p">,</span> <span class="n">poseData</span><span class="p">,</span> <span class="n">translate</span><span class="p">,</span> <span class="n">rotate</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setPosePercentage_Part</span><span class="p">(</span><span class="n">percent</span><span class="p">,</span> <span class="n">mover</span><span class="p">,</span> <span class="n">modelPoseData</span><span class="p">,</span> <span class="n">rigPoseData</span><span class="p">,</span> <span class="n">poseData</span><span class="p">,</span> <span class="n">translate</span><span class="p">,</span> <span class="n">rotate</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.setPosePercentage_Part"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.setPosePercentage_Part">[docs]</a> <span class="k">def</span> <span class="nf">setPosePercentage_Part</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">percent</span><span class="p">,</span> <span class="n">mover</span><span class="p">,</span> <span class="n">modelPoseData</span><span class="p">,</span> <span class="n">rigPoseData</span><span class="p">,</span> <span class="n">poseData</span><span class="p">,</span> <span class="n">translate</span><span class="p">,</span> <span class="n">rotate</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method takes the data from setPosePercentage and figures out what values to set on the given part (mover).</span>
+
+<span class="sd"> Example: If the model pose is a value of 10 and the rig pose is a value of 0, and the slider is at .5, then</span>
+<span class="sd"> the value to set is 5. (But this is done and found per attribute)</span>
+
+<span class="sd"> :param percent: the percent value of the slider. What percentage of the model and rig pose to use.</span>
+<span class="sd"> :param mover: the mover to set the values on.</span>
+<span class="sd"> :param modelPoseData: all of the data for the model pose for this mover.</span>
+<span class="sd"> :param rigPoseData: all of the data for the rig pose for this mover.</span>
+<span class="sd"> :param poseData: a list which includes the mover and its translate and rotate values.</span>
+<span class="sd"> :param translate: the translate values for the model pose</span>
+<span class="sd"> :param rotate: the rotate values for the model pose</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the index of this entry in the rigPoseData list</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">modelPoseData</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">poseData</span><span class="p">)</span>
+
+ <span class="c1"># get the corresponding rig pose data</span>
+ <span class="n">rigData</span> <span class="o">=</span> <span class="n">rigPoseData</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
+ <span class="n">rigTranslate</span> <span class="o">=</span> <span class="n">rigData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;translate&quot;</span><span class="p">)</span>
+ <span class="n">rigRotate</span> <span class="o">=</span> <span class="n">rigData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;rotate&quot;</span><span class="p">)</span>
+
+ <span class="c1"># find percentile between model and rig pose to set on each attribute</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">translate</span><span class="p">)):</span>
+ <span class="n">valueToSet</span> <span class="o">=</span> <span class="n">mathUtils</span><span class="o">.</span><span class="n">returnPercentile</span><span class="p">([</span><span class="n">translate</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">rigTranslate</span><span class="p">[</span><span class="n">i</span><span class="p">]],</span> <span class="n">percent</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translateX&quot;</span><span class="p">,</span> <span class="n">valueToSet</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translateY&quot;</span><span class="p">,</span> <span class="n">valueToSet</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.translateZ&quot;</span><span class="p">,</span> <span class="n">valueToSet</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rotate</span><span class="p">)):</span>
+ <span class="n">valueToSet</span> <span class="o">=</span> <span class="n">mathUtils</span><span class="o">.</span><span class="n">returnPercentile</span><span class="p">([</span><span class="n">rotate</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">rigRotate</span><span class="p">[</span><span class="n">i</span><span class="p">]],</span> <span class="n">percent</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotateX&quot;</span><span class="p">,</span> <span class="n">valueToSet</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotateY&quot;</span><span class="p">,</span> <span class="n">valueToSet</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;.rotateZ&quot;</span><span class="p">,</span> <span class="n">valueToSet</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.createRigPoseSliderForJoint"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.createRigPoseSliderForJoint">[docs]</a> <span class="k">def</span> <span class="nf">createRigPoseSliderForJoint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">joint</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method creates the rig pose slider widget for the given joint. (This shows up in the advanced section of</span>
+<span class="sd"> the rig pose UI)</span>
+
+<span class="sd"> :param joint: The joint that the slider will control.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># create mover name</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+
+ <span class="n">jointName</span> <span class="o">=</span> <span class="n">joint</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span><span class="p">):</span>
+ <span class="n">jointName</span> <span class="o">=</span> <span class="n">joint</span>
+
+ <span class="k">else</span><span class="p">:</span>
+
+ <span class="n">jointBaseName</span> <span class="o">=</span> <span class="n">joint</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">baseName</span><span class="p">:</span>
+ <span class="n">nameData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointName</span> <span class="o">=</span> <span class="n">jointBaseName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">jointName</span> <span class="o">=</span> <span class="n">jointName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">nameData</span><span class="p">[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="n">jointName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointName</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">jointName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">jointName</span>
+
+ <span class="c1"># create a master vertical layout</span>
+ <span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigPose_advancedLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">mainLayout</span><span class="p">)</span>
+
+ <span class="c1"># create a label for the joint</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">jointLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span><span class="p">)</span>
+ <span class="n">jointLabel</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">jointLabel</span><span class="p">)</span>
+
+ <span class="c1"># create layout for slider/button</span>
+ <span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">layout</span><span class="p">)</span>
+
+ <span class="c1"># create slider for joint</span>
+ <span class="n">slider</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSlider</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">slider</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">,</span> <span class="n">joint</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setOrientation</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">Horizontal</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setSingleStep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">valueChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">setReferencePoseSlider</span><span class="p">,</span> <span class="n">jointName</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span><span class="p">))</span>
+ <span class="n">slider</span><span class="o">.</span><span class="n">setTracking</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">overallSlider</span><span class="o">.</span><span class="n">valueChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">slider</span><span class="o">.</span><span class="n">setValue</span><span class="p">)</span>
+
+ <span class="c1"># create reset button</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Reset&quot;</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">70</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setMaximumWidth</span><span class="p">(</span><span class="mi">70</span><span class="p">)</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">button</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="n">button</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetRigPose_Part</span><span class="p">,</span> <span class="n">jointName</span> <span class="o">+</span> <span class="s2">&quot;_mover&quot;</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.updateBoneCount"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.updateBoneCount">[docs]</a> <span class="k">def</span> <span class="nf">updateBoneCount</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method looks at the create bones attribute of the module and gets the number of bones in that list</span>
+<span class="sd"> and appends it onto the total bone count for the bone counter interface.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_BoneCounterWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">boneCounterInst</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">boneCounterInst</span><span class="o">.</span><span class="n">updateBoneCount</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.toggleShapeVis"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.toggleShapeVis">[docs]</a> <span class="k">def</span> <span class="nf">toggleShapeVis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transform</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method finds the shapes for the passed in transform and toggles the visibility based on the value.</span>
+
+<span class="sd"> :param transform: the transform to get the shape nodes from.</span>
+<span class="sd"> :param value: whether to show or hide the shape nodes.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span>
+ <span class="n">shape</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">transform</span><span class="p">,</span> <span class="n">shapes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">shape</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.selectionScriptJob_animUI"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.selectionScriptJob_animUI">[docs]</a> <span class="k">def</span> <span class="nf">selectionScriptJob_animUI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buttonData</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is called from a scriptjob anytime a selection is changed. It&#39;s sole purpose it to update the button</span>
+<span class="sd"> color on the anim picker to show if a control is selected or not.</span>
+
+<span class="sd"> :param buttonData: pairings of button/control/brush. brush is the original color of the button.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">mel</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="s2">&quot;ls -sl;&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">selection</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buttonData</span><span class="p">:</span>
+ <span class="n">control</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">brushColor</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">control</span> <span class="ow">in</span> <span class="n">selection</span><span class="p">:</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">brush</span><span class="o">.</span><span class="n">setColor</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">white</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">brush</span><span class="o">.</span><span class="n">setColor</span><span class="p">(</span><span class="n">brushColor</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">update</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.importFBX_pre"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.importFBX_pre">[docs]</a> <span class="k">def</span> <span class="nf">importFBX_pre</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">importMethod</span><span class="p">,</span> <span class="n">character</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method runs before an fbx is imported onto the control rig. It cuts any keys on the controls and zeroes</span>
+<span class="sd"> the controls out before importing the fbx (which is called in the derived module class)</span>
+
+<span class="sd"> :param importMethod: Whether or not the FBX is getting imported as FK, IK, Both, or None</span>
+<span class="sd"> :param character: The namespace of the rig.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">importMethod</span> <span class="o">!=</span> <span class="s2">&quot;None&quot;</span><span class="p">:</span>
+ <span class="n">controls</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getControls</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">control</span> <span class="ow">in</span> <span class="n">controls</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">cutKey</span><span class="p">(</span><span class="n">character</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="n">control</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetRigControls</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.importFBX"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.importFBX">[docs]</a> <span class="k">def</span> <span class="nf">importFBX</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">importMethod</span><span class="p">,</span> <span class="n">character</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method is implemented in the derived module class and defines how mocap is imported onto the rig controls.</span>
+
+<span class="sd"> :param importMethod: Whether or not the FBX is getting imported as FK, IK, Both, or None</span>
+<span class="sd"> :param character: The namespace of the rig.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">pass</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.resetRigControls"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.resetRigControls">[docs]</a> <span class="k">def</span> <span class="nf">resetRigControls</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resetAll</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method zeroes out control attributes. If resetAll is true, then it will zero out all rig controls for</span>
+<span class="sd"> the module. Otherwise, it will only zero out the selected controls of the module.</span>
+
+<span class="sd"> :param resetAll: Whether or not to reset only the selected controls or all controls of the module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get namespace</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnRigNetworkNode</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parent&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">resetAll</span><span class="p">:</span>
+
+ <span class="c1"># list any attributes on the network node that contain &quot;controls&quot;</span>
+ <span class="n">controls</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">st</span><span class="o">=</span><span class="s2">&quot;*Controls&quot;</span><span class="p">)</span>
+ <span class="c1"># get that data on that attr</span>
+ <span class="k">for</span> <span class="n">control</span> <span class="ow">in</span> <span class="n">controls</span><span class="p">:</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">control</span><span class="p">))</span>
+
+ <span class="c1"># reset the attr on each control</span>
+ <span class="n">nonZeroAttrs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;scale&quot;</span><span class="p">,</span> <span class="s2">&quot;globalScale&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleX&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleY&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleZ&quot;</span><span class="p">]</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">namespace</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">nonZeroAttrs</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">namespace</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">namespace</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;skipped &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">control</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;. No valid controls found to reset.&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">resetAll</span><span class="p">:</span>
+ <span class="n">nonZeroAttrs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;scale&quot;</span><span class="p">,</span> <span class="s2">&quot;globalScale&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleX&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleY&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleZ&quot;</span><span class="p">]</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selection</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">each</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">nonZeroAttrs</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.getControls"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.getControls">[docs]</a> <span class="k">def</span> <span class="nf">getControls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method returns a list of all the rig controls of the module.</span>
+
+<span class="sd"> :return: List of all rig controls in the module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get namespace</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnRigNetworkNode</span>
+ <span class="k">if</span> <span class="n">networkNode</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">winParent</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">win</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">DialogMessage</span><span class="p">(</span><span class="s2">&quot;Error&quot;</span><span class="p">,</span> <span class="s2">&quot;This function does not work without a namespace.&quot;</span><span class="p">,</span> <span class="p">[],</span> <span class="mi">0</span><span class="p">,</span>
+ <span class="n">winParent</span><span class="p">)</span>
+ <span class="n">win</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+ <span class="c1"># list any attributes on the network node that contain &quot;controls&quot;</span>
+ <span class="n">controls</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">st</span><span class="o">=</span><span class="s2">&quot;*Controls&quot;</span><span class="p">)</span>
+
+ <span class="n">returnControls</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get that data on that attr</span>
+ <span class="k">for</span> <span class="n">control</span> <span class="ow">in</span> <span class="n">controls</span><span class="p">:</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">control</span><span class="p">))</span>
+
+ <span class="c1"># reset the attr on each control</span>
+ <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+ <span class="n">returnControls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">returnControls</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_RigModule.selectRigControls"><a class="viewcode-back" href="../../baseclass.html#System.ART_RigModule.ART_RigModule.selectRigControls">[docs]</a> <span class="k">def</span> <span class="nf">selectRigControls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method calls on getControls to return a list of the controls and the selects them.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">controls</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getControls</span><span class="p">()</span>
+
+ <span class="c1"># get namespace</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnRigNetworkNode</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parent&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">control</span> <span class="ow">in</span> <span class="n">controls</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">namespace</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="n">control</span><span class="p">,</span> <span class="n">add</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># PROPERTIES</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">getModules</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method finds the main &quot;character&quot; module that has connections to all of the rig modules</span>
+
+<span class="sd"> :return: returns the character node.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;network&quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;rigModules&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">module</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">getAllModules</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method finds all connected rig modules to the main character network node.</span>
+
+<span class="sd"> :return: returns a list of the rig modules</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;network&quot;</span><span class="p">)</span>
+ <span class="n">returnMods</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;parent&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">returnMods</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">returnMods</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnNetworkNode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method returns the module&#39;s own network node.</span>
+
+<span class="sd"> :return: the modules network node</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;network&quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">networkNodes</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;moduleName&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">node</span>
+
+ <span class="k">return</span> <span class="n">networkNode</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnRigNetworkNode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method returns the module&#39;s own network node using the namespace on the main character</span>
+<span class="sd"> network node. This is so that if there are multiple characters in a scene, we know which</span>
+<span class="sd"> network node for which character we are trying to return.</span>
+
+<span class="sd"> :return: returns this module&#39;s network node in a scene with references.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;network&quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">networkNodes</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;moduleName&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.parent&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">namespace</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">node</span>
+ <span class="k">return</span> <span class="n">networkNode</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnClassObject</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnCreatedJoints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method loops through the Created Bones attribute on its network node and returns a list of the</span>
+<span class="sd"> joints it will create given the current module settings.</span>
+
+<span class="sd"> :return: A list of the created bones of the module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+
+ <span class="n">splitJoints</span> <span class="o">=</span> <span class="n">joints</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+ <span class="n">createdJoints</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">splitJoints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">createdJoints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">createdJoints</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnJointMovers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method finds and returns all joint movers for the module.</span>
+
+<span class="sd"> :return: a list of all global movers, offset movers, and geo movers for the module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">title</span><span class="p">()</span>
+
+ <span class="c1"># select global movers</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;*_mover&quot;</span><span class="p">)</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># select offset movers</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;*_mover_offset&quot;</span><span class="p">)</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># mesh movers</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;*_mover_geo&quot;</span><span class="p">)</span>
+ <span class="n">geoMovers</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="p">[</span><span class="n">globalMovers</span><span class="p">,</span> <span class="n">offsetMovers</span><span class="p">,</span> <span class="n">geoMovers</span><span class="p">]</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnMirrorModuleInst</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method finds and returns the instance of a module&#39;s mirror module.</span>
+
+<span class="sd"> :return: a pointer in memory to the instance of the mirror module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get network node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">mirrorModule</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+
+ <span class="c1"># find instance through rig UI inst</span>
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">moduleName</span> <span class="o">==</span> <span class="n">mirrorModule</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">inst</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">returnPrefixSuffix</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This method splits our module name by the base name and returns the prefix and suffix.</span>
+
+<span class="sd"> :return: the user-defined prefix and suffix found by splitting the module name by the base name.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">prefix</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.baseName&quot;</span><span class="p">)</span>
+ <span class="n">splitName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseName</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">splitName</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="n">splitName</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">splitName</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="n">splitName</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="k">return</span> <span class="p">[</span><span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">]</span></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file