// Mel Script // Purpose: To separate polyfaces in to 2 separate // clean nodes. // Current limitations: polys or poly sets to extract must be adjacent to each other global proc cleanPolyExtract () { ///* //Procedure for determining faces before and after extraction // determine pre-extracted polys's bounding box float $prePolyBoundingBox[] = `polyEvaluate -bc`; // clean Extract selected faces //*/ int $megaFactor = 100; float $adjuster = .0001; string $selection[] = `ls -sl`; string $selected = $selection[0]; print "\n============"; print $selection; polyChipOff -ch 0 -kft 1 -dup 0 -pvx 0 -pvy 0.5 -pvz -0.5 -tx 0 -ty 0 -tz 0 -rx 0 -ry 0 -rz 0 -sx 1 -sy 1 -sz 1 -ran 0 -off 0 -ltz 0 -ws 0 -ltx 0 -lty 0 -lrx 0 -lry 0 -lrz 0 -lsx 1 -lsy 1 -lsz 1 -ldx 1 -ldy 0 -ldz 0 -w 0 -gx 0 -gy -1 -gz 0 -att 0 -mx 0 -my 0 -mz 0 $selection; print $selected; string $buffer[]; int $numTokens = `tokenize $selected "." $buffer`; polySeparate -n postExtractedPoly -ch 0 $buffer[0]; print "\n************************Buffer:"; print $buffer[0]; print "\n-------------------------"; pickWalk -d up; ungroup; // determine post extracted poly objects print "\nbbbbbbbb"; select -r `ls -tr "postExtractedPoly*"`; string $postExtractedObjects[] = `ls -sl`; print "\n$postExtractedObjects[]="; print $postExtractedObjects; string $postExtractionObject; int $numberOfPostExtractedObjects = size ($postExtractedObjects); print "\nSize ($postExtractedObjects)="; print $numberOfPostExtractedObjects; // Cycle through post extracted objects comparing bounding boxes to original. If match occurs, that is your original face selection. float $postPolyBoundingBox[] ; for ($postExtractionObject in $postExtractedObjects) { $postPolyBoundingBox = `polyEvaluate -b $postExtractionObject`; /* print "\n^^^^^^^^^^$postExtractionObject="; print $postExtractionObject; print "\n"; print "\n^^^^^^^^^^$prePolyBoundingBox[0]="; print $prePolyBoundingBox[0]; print "\n"; print "\n^^^^^^^^^^$postPolyBoundingBox[0]="; print $postPolyBoundingBox[0]; print "\n"; */ int $megaPrePoly = ($prePolyBoundingBox[0] * $megaFactor); int $megaPostPoly = ($postPolyBoundingBox[0] * $megaFactor); /* print "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^$megaPrePoly ="; print $megaPrePoly ; print "\n"; print "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^$megaPostPoly"; print $megaPostPoly; print "\n"; //******************************************************************************************************************** print "\n^^^^^^^^^^((trunc(($prePolyBoundingBox[4] - $adjuster) * $megaFactor )))="; print ((trunc(($prePolyBoundingBox[4] - $adjuster) * $megaFactor ))); print "\n"; print "\n^^^^^^^^^^((trunc(($postPolyBoundingBox[4] - $adjuster) * $megaFactor )))="; print ((trunc(($postPolyBoundingBox[4] - $adjuster) * $megaFactor ))); print "\n"; print "\n^^^^^^^^^^(($postPolyBoundingBox[4] - $adjuster) * $megaFactor )="; print (($postPolyBoundingBox[4] - $adjuster) * $megaFactor ); print "\n"; */ /* (trunc($prePolyBoundingBox[0] * $megaFactor )) == (trunc($postPolyBoundingBox[0] * $megaFactor )) && (trunc($prePolyBoundingBox[1] * $megaFactor )) == (trunc($postPolyBoundingBox[1] * $megaFactor )) && (trunc($prePolyBoundingBox[2] * $megaFactor )) == (trunc($postPolyBoundingBox[2] * $megaFactor )) && (trunc($prePolyBoundingBox[3] * $megaFactor )) == (trunc($postPolyBoundingBox[3] * $megaFactor )) && (trunc($prePolyBoundingBox[4] * $megaFactor )) == (trunc($postPolyBoundingBox[4] * $megaFactor )) && (trunc($prePolyBoundingBox[5] * $megaFactor )) == (trunc($postPolyBoundingBox[5] * $megaFactor )) */ //******************************************************************************************************************** if ( (trunc(($prePolyBoundingBox[0] - $adjuster) * $megaFactor )) == (trunc(($postPolyBoundingBox[0]- $adjuster) * $megaFactor ) ) && (trunc(($prePolyBoundingBox[1] - $adjuster) * $megaFactor )) == (trunc(($postPolyBoundingBox[1]- $adjuster) * $megaFactor ) ) && (trunc(($prePolyBoundingBox[2] - $adjuster) * $megaFactor )) == (trunc(($postPolyBoundingBox[2]- $adjuster) * $megaFactor ) ) && (trunc(($prePolyBoundingBox[3] - $adjuster) * $megaFactor )) == (trunc(($postPolyBoundingBox[3]- $adjuster) * $megaFactor ) ) && (trunc(($prePolyBoundingBox[4] - $adjuster) * $megaFactor )) == (trunc(($postPolyBoundingBox[4]- $adjuster) * $megaFactor ) ) && (trunc(($prePolyBoundingBox[5] - $adjuster) * $megaFactor )) == (trunc(($postPolyBoundingBox[5]- $adjuster) * $megaFactor ) ) ) { print "\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"; print $postExtractionObject ; rename $postExtractionObject "cleanExtractedPoly"; } /* print "\n^^^^^^^^^^$prePolyBoundingBox[0]="; print $prePolyBoundingBox[0]; print "\n"; print "\n^^^^^^^^^^$postPolyBoundingBox[0]="; print $postPolyBoundingBox[0]; print "\n"; */ } // combine the original "non extracted" faces together select -r "postExtractedPoly*"; pickWalk -d "up"; pickWalk -d "up"; pickWalk -d "up"; pickWalk -d "up"; polyUnite -ch 0 ; select -r "cleanExtractedPoly"; }