Converting Maya script to 3ds max script.
Hello,
I was wondering if anyone might want to try and port this script from blender to max
----------------------------------------------------------------------------------
Simple script which lets a user select a couple of edges and it will continue the selection pattern around an edge ring or edge loop. To use: select two edges on either an edge ring or an edge loop and call selectEveryNEdge. This script should work on Maya 7 and up. I wouldn't call it "bullet proof" at the moment...ie. it's not perfect but should definitely be usefull. Copy/Paste the following into a file named selectEveryNEdge.mel in you scripts folder. proc int getEdgeIdIndex(int $edgeId, int $edgeIds[]) { int $i; int $len = `size($edgeIds)`; for ($i=0; $i<$len; $i++) { if ($edgeId == $edgeIds[$i]) return $i; } return -1; } proc int getEdgeIdFromSelectionString(string $sel) { string $buffer[]; int $numTokens; $numTokens = `tokenize $sel "[]" $buffer`; if ($numTokens != 2) return -1; else return $buffer[1]; } global proc selectEveryNEdge() { string $selectedObject[] = `ls -sl -o`; string $initialEdgeSelection[] = `getEdges`; int $numEdges = `size $initialEdgeSelection`; if (0 == $numEdges || 2 < $numEdges) return; string $firstEdge = $initialEdgeSelection[0]; int $firstEdgeId = getEdgeIdFromSelectionString($firstEdge); if (1 == $numEdges) { polySelect -edgeLoop $firstEdgeId $selectedObject[0]; return; } string $secondEdge = $initialEdgeSelection[1]; int $ clear $edgeLoopIds; $edgeLoopIds = `polySelect -noSelection -edgeRing $firstEdgeId $selectedObject[0]`; $firstEdgeIndex = getEdgeIdIndex($firstEdgeId, $edgeLoopIds); if ($firstEdgeIndex == -1) return; $secondEdgeIndex = getEdgeIdIndex($secondEdgeId, $edgeLoopIds); if ($secondEdgeIndex == -1) { return; } } int $numEdgesInLoop = `size($edgeLoopIds)`; int $isFullLoop = ($edgeLoopIds[0] == $edgeLoopIds[$numEdgesInLoop-1]); int $edgesToSkip = `abs ($secondEdgeIndex - $firstEdgeIndex)`; if ($isFullLoop && $edgesToSkip > ($numEdgesInLoop - $edgesToSkip - 1)) { $edgesToSkip = $numEdgesInLoop - $edgesToSkip - 1; } int $i; string $selectionString = "select "; for ($i=$firstEdgeIndex; $i<$numEdgesInLoop; $i += $edgesToSkip) { $selectionString += $selectedObject[0] + ".e[" + $edgeLoopIds[$i] + "] "; } for ($i=$firstEdgeIndex-$edgesToSkip; $i>=0; $i -= $edgesToSkip) { $selectionString += $selectedObject[0] + ".e[" + $edgeLoopIds[$i] + "] "; } eval($selectionString); }
------------------------------------------------------------------------------