// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== // // // Creation Date: 11 February 1998 // // Description: // This implements the replace node based on attribute names. // proc int arrayMatch( string $array[], string $match ) { for ($item in $array) if ($item == $match) return true; return false; } global proc replaceNode( string $originalNode, string $replaceNode ) { // Copy the scalar values string $originalAttrs[] = `listAttr -scalar -multi -read -visible $originalNode`; string $replaceAttrs[] = `listAttr -scalar -multi -write -visible $replaceNode`; for ($attr in $originalAttrs) { if (arrayMatch($replaceAttrs, $attr)) { float $value = `getAttr ($originalNode+"."+$attr)`; catch(`setAttr ($replaceNode+"."+$attr) $value`); } } // Copy the binMembership attribute. // setAttr -type "string" ($replaceNode+".binMembership") `getAttr ($originalNode+".binMembership")`; string $connections[]; // Process the source connections $connections = `listConnections -source true -destination false -connections true -plugs true $originalNode`; for ($i = 0; $i < size($connections); $i += 2) { string $originalPlug = $connections[$i]; string $srcPlug = $connections[$i+1]; string $replacePlug = substitute($originalNode, $originalPlug, $replaceNode); catch(`connectAttr $srcPlug $replacePlug`); } // Process the destination connections $connections = `listConnections -source false -destination true -connections true -plugs true $originalNode`; for ($i = 0; $i < size($connections); $i += 2) { string $originalPlug = $connections[$i]; string $dstPlug = $connections[$i+1]; string $replacePlug = substitute($originalNode, $originalPlug, $replaceNode); // First, break connections between original and dstPlug. catch(`disconnectAttr $originalPlug $dstPlug`); catch(`connectAttr $replacePlug $dstPlug`); } }