// =========================================================================== // 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: Dec 3, 1998 // // Procedure Name: // performPolySetNormal // // Description: // Perform a normal setting on selected vertex normals // // proc setOptionVars (int $forceFactorySettings) { if ($forceFactorySettings || !`optionVar -exists polySetNormalX`) optionVar -floatValue polySetNormalX 1.0; if ($forceFactorySettings || !`optionVar -exists polySetNormalY`) optionVar -floatValue polySetNormalY 0.0; if ($forceFactorySettings || !`optionVar -exists polySetNormalZ`) optionVar -floatValue polySetNormalZ 0.0; } global proc performPolySetNormalSetup (string $parent, int $forceFactorySettings) { setOptionVars($forceFactorySettings); setParent $parent; float $fval; int $ival, $ival2; $fval = `optionVar -query polySetNormalX`; floatSliderGrp -edit -value $fval polySetNormalX; $fval = `optionVar -query polySetNormalY`; floatSliderGrp -edit -value $fval polySetNormalY; $fval = `optionVar -query polySetNormalZ`; floatSliderGrp -edit -value $fval polySetNormalZ; } global proc performPolySetNormalCallback (string $parent, int $doIt) { setParent $parent; optionVar -floatValue polySetNormalX `floatSliderGrp -query -value polySetNormalX`; optionVar -floatValue polySetNormalY `floatSliderGrp -query -value polySetNormalY`; optionVar -floatValue polySetNormalZ `floatSliderGrp -query -value polySetNormalZ`; if ($doIt) { performPolySetNormal 0; addToRecentCommandQueue "performPolySetNormal 0" "PolySetNormal"; } } global proc normalizeNormalValues() { float $x = `floatSliderGrp -query -value polySetNormalX`; float $y = `floatSliderGrp -query -value polySetNormalY`; float $z = `floatSliderGrp -query -value polySetNormalZ`; float $lenSq = $x*$x + $y*$y + $z*$z; $lenSq = `sqrt $lenSq`; if ($lenSq == 0.0) $lenSq = 1.0; $x = $x / $lenSq; $y = $y / $lenSq; $z = $z / $lenSq; floatSliderGrp -edit -value $x polySetNormalX; floatSliderGrp -edit -value $y polySetNormalY; floatSliderGrp -edit -value $z polySetNormalZ; } proc polySetNormalOptions() { // Global template variables for form spacing global int $gOptionBoxTemplateFrameSpacing; string $commandName = "performPolySetNormal"; string $callback = ($commandName + "Callback"); string $setup = ($commandName + "Setup"); string $layout = getOptionBox(); setParent $layout; setUITemplate -pushTemplate OptionBoxTemplate; waitCursor -state 1; // Form layout string $parent = `formLayout polyMoveOptions`; // Settings frame string $settingsFrame = `frameLayout -label (uiRes("m_performPolySetNormal.kSettingsFrame"))`; columnLayout; // X floatSliderGrp -label (uiRes("m_performPolySetNormal.kXValue")) -minValue -1. -maxValue 1. -fieldMinValue -1. -fieldMaxValue 1.0 polySetNormalX; // Y floatSliderGrp -label (uiRes("m_performPolySetNormal.kYValue")) -minValue -1. -maxValue 1. -fieldMinValue -1. -fieldMaxValue 1.0 polySetNormalY; // Z floatSliderGrp -label (uiRes("m_performPolySetNormal.kZValue")) -minValue -1. -maxValue 1. -fieldMinValue -1. -fieldMaxValue 1.0 polySetNormalZ; rowLayout -numberOfColumns 2 -columnAlign 2 "center" alignButtonLayout; text -label ""; button -label (uiRes("m_performPolySetNormal.kNormalizeNormal")) -command "normalizeNormalValues"; setParent $parent; // frameLayout setParent ..; // formLayout // Attach Settings frame to form layout formLayout -edit -attachForm $settingsFrame "top" $gOptionBoxTemplateFrameSpacing -attachForm $settingsFrame "left" $gOptionBoxTemplateFrameSpacing -attachForm $settingsFrame "right" $gOptionBoxTemplateFrameSpacing -attachNone $settingsFrame "bottom" $parent; // Force proper setup normalizeNormalValues; waitCursor -state 0; setUITemplate -popTemplate; string $applyBtn = getOptionBoxApplyBtn(); button -edit -label (uiRes("m_performPolySetNormal.kSetNormal")) -command ($callback + " " + $parent + " " + 1) $applyBtn; string $saveBtn = getOptionBoxSaveBtn(); button -edit -command ($callback + " " + $parent + " " + 0 + "; hideOptionBox") $saveBtn; string $resetBtn = getOptionBoxResetBtn(); button -edit -command ($setup + " " + $parent + " " + 1) $resetBtn; setOptionBoxTitle( (uiRes("m_performPolySetNormal.kSetVertexNormalOptions")) ); setOptionBoxHelpTag( "SetVertexNormal" ); eval (($setup + " " + $parent + " " + 0)); showOptionBox(); } global proc string performPolySetNormal (int $option) { string $cmd=""; string $sel[]; switch ($option) { case 1: polySetNormalOptions; // Just the option box break; default: setOptionVars(false); float $x = `optionVar -query polySetNormalX`; float $y = `optionVar -query polySetNormalY`; float $z = `optionVar -query polySetNormalZ`; $cmd = ("polyNormalPerVertex -xyz " + $x + " " + $y + " " + $z); if ($option == 0) evalEcho $cmd; break; } return $cmd; }