// =========================================================================== // 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. // =========================================================================== // Procedure Name: // getPolyVertsCenter // // Description: // Gets the center point of specified verts // // Input Arguments: // string $vertices[]: vertices to find center for // // Return Value: // float $center: center of verts. // global proc float[] getPolyVertsCenter(string $vertices[]) { //Return the center of selected verts //Get center based on average // float $center[]; float $tmpLocation[]; float $xtotal = 0; float $ytotal = 0; float $ztotal = 0; $size = `size $vertices`; //print $size; for ($vert in $vertices) { $tmpLocation = `xform -q -ws -t $vert`; $xtotal += $tmpLocation[0]; $ytotal += $tmpLocation[1]; $ztotal += $tmpLocation[2]; } $center[0] = ($xtotal / ($size)); $center[1] = ($ytotal / ($size)); $center[2] = ($ztotal / ($size)); return $center; } // Procedure Name: // polyMergeVerticesToCenter // // Description: // Merge/collapse all selected verts/faces/edges to center. // // Input Arguments: // None. // // Return Value: // None. // global proc polyMergeToCenter() { ConvertSelectionToVertices; string $selected[] = `filterExpand -sm 31 -ex 1`; if (`size $selected` > 0) { int $symEnabled = `symmetricModelling -q -symmetry`; if ($symEnabled) { string $seam[], $pos[], $neg[]; $seam = `filterExpand -ex 1 -sm 31 -symSeam`; $pos = `filterExpand -ex 1 -sm 31 -symPositive`; $neg = `filterExpand -ex 1 -sm 31 -symNegative`; if (size($seam) == 0 && size($pos) != 0 && size($neg) != 0) { // Merge left/right verts separately float $posCenter[] = `getPolyVertsCenter $pos`; move -a $posCenter[0] $posCenter[1] $posCenter[2] $pos; float $negCenter[] = `getPolyVertsCenter $neg`; move -a $negCenter[0] $negCenter[1] $negCenter[2] $neg; } else { // Merge everything float $center[] = `getPolyVertsCenter $selected`; move -a $center[0] $center[1] $center[2] $selected; } } else { float $center[] = `getPolyVertsCenter $selected`; move -a $center[0] $center[1] $center[2] $selected; } polyMergeVertex -d 0.000001 -ch (`constructionHistory -q -tgl`) $selected; } }