Difference between revisions of "GetClosestCVOnCurveToVectorWithinZPlane MEL"
From scripting
(Created page with " global proc int GetClosestCVOnCurveToVectorWithinZPlane(vector $V1, string $Crv1, float $ZDev) { //vector $V1 = <<25666.759821, 10518.81918, 1000>>;...") |
(No difference)
|
Latest revision as of 05:40, 22 April 2017
global proc int GetClosestCVOnCurveToVectorWithinZPlane(vector $V1, string $Crv1, float $ZDev) { //vector $V1 = <<25666.759821, 10518.81918, 1000>>; //NP int $JJJ = GetClosestCVOnCurveToVectorWithinZPlane($V1, "d129", 4000); //string $Crv1 = "d129"; //float $ZDev = 4000; string $CurCrvShapeArr[] = `listRelatives($Crv1)`; string $CurCrvShape = $CurCrvShapeArr[0]; int $CurCrvSpansNum = `getAttr($CurCrvShape+".spans")`; int $WinningPtIndex = -1; float $WinningDist = 100000000; int $w = 0; //for ($w=0;$w<=$CurCrvSpansNum;$w++) { do { float $CCArr[] = `pointPosition($Crv1+".cv["+ $w +"]")`; vector $CCVec = <<$CCArr[0],$CCArr[1],$CCArr[2]>>; vector $Diff1 = $CCVec - $V1; float $DMag = mag($Diff1); float $ZDiff = abs(($CCVec.z) - ($V1.z)); if ($ZDiff < $ZDev) { if ($DMag < $WinningDist) { $WinningDist = $DMag; $WinningPtIndex = $w; } } $w++; } while ($w<=$CurCrvSpansNum); //} //note: -1 means nothing was in the plane or close enough. return $WinningPtIndex; }
More information on vectors and vector mathematics, read pages 14-16, 20-21 in YSYT.