// =========================================================================== // 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: 4 April 1997 // // Procedure Name: // performPolyTransfer // // Description: // // // Input Arguments: // $option : Whether to set the options to default values. // Return Value: // command string iff $option==2 // // // Initialize optionVars for polyTransfer: // Color, Texture, Vertex // proc setIntOptionVars ( string $prefix, int $forceFactorySettings, string $vars[] ) { string $varName; // Must match $vars int $values[]={ 0, 1, 0}; for ( $i = size($vars) ; $i-- ; ) { $varName = ($prefix + $vars[$i]); if ($forceFactorySettings || !`optionVar -exists $varName`) optionVar -intValue $varName $values[$i]; } } global proc performPolyTransferSetup (string $parent, int $forceFactSettings) { string $prefix = "polyTransfer"; string $intVars[] = {"uv", "vc", "v"}; int $ival[3]; setIntOptionVars($prefix, $forceFactSettings, $intVars); setParent $parent; for ( $i = size($intVars) ; $i-- ; ) { string $varName = ($prefix + $intVars[$i]); $ival[$i] = `optionVar -query $varName`; } checkBoxGrp -edit -value1 $ival[0] importCheckBoxGrp0; checkBoxGrp -edit -value1 $ival[1] importCheckBoxGrp1; checkBoxGrp -edit -value1 $ival[2] importCheckBoxGrp2; } global proc performPolyTransferCallback (string $parent, int $doIt) { string $prefix = "polyTransfer"; string $intVars[] = {"uv", "vc", "v"}; int $ival[3]; setParent $parent; $ival[0] = `checkBoxGrp -q -value1 importCheckBoxGrp0`; $ival[1] = `checkBoxGrp -q -value1 importCheckBoxGrp1`; $ival[2] = `checkBoxGrp -q -value1 importCheckBoxGrp2`; for ( $i = size($intVars) ; $i-- ; ) { string $varName = ($prefix + $intVars[$i]); optionVar -intValue $varName $ival[$i]; } if ($doIt) { performPolyTransfer 0; addToRecentCommandQueue "performPolyTransfer 0" "PolyTransfer"; } } proc polyTransferOptions (string $prefix, string $intVars[]) { // Global template variables for form spacing global int $gOptionBoxTemplateDescriptionMarginWidth; global int $gOptionBoxTemplateFrameSpacing; string $commandName = "performPolyTransfer"; string $callback = ($commandName + "Callback"); string $setup = ($commandName + "Setup"); string $layout = getOptionBox(); setParent $layout; setUITemplate -pushTemplate OptionBoxTemplate; waitCursor -state 1; // Form layout string $parent = `formLayout polyTransferOptions`; // Description frame string $descriptionFrame = `frameLayout -label (uiRes("m_performPolyTransfer.kDescriptionFrame")) -mw $gOptionBoxTemplateDescriptionMarginWidth`; text -label (uiRes("m_performPolyTransfer.kDescription")); setParent $parent; // Settings frame string $settingsFrame = `frameLayout -label (uiRes("m_performPolyTransfer.kSettingsFrame"))`; columnLayout; checkBoxGrp -label (uiRes("m_performPolyTransfer.kCopy")) -label1 (uiRes("m_performPolyTransfer.kCopy1")) importCheckBoxGrp0; checkBoxGrp -label1 (uiRes("m_performPolyTransfer.kTransfer2")) importCheckBoxGrp1; checkBoxGrp -label1 (uiRes("m_performPolyTransfer.kTransfer3")) importCheckBoxGrp2; setParent $parent; setParent ..; // Attach Description/Settings frames to form layout formLayout -e -af $descriptionFrame "top" $gOptionBoxTemplateFrameSpacing -af $descriptionFrame "left" $gOptionBoxTemplateFrameSpacing -af $descriptionFrame "right" $gOptionBoxTemplateFrameSpacing -an $descriptionFrame "bottom" -ac $settingsFrame "top" $gOptionBoxTemplateFrameSpacing $descriptionFrame -af $settingsFrame "left" $gOptionBoxTemplateFrameSpacing -af $settingsFrame "right" $gOptionBoxTemplateFrameSpacing -an $settingsFrame "bottom" $parent; waitCursor -state 0; setUITemplate -popTemplate; string $applyBtn = getOptionBoxApplyBtn(); button -edit -label (uiRes("m_performPolyTransfer.kCopyButton")) -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_performPolyTransfer.kCopyMeshAttributesOptions")) ); setOptionBoxHelpTag( "PolygonsTransfer" ); eval (($setup + " " + $parent + " " + 0)); showOptionBox(); } global proc string performPolyTransfer (int $option) { string $prefix = "polyTransfer"; string $intVars[] = {"uv", "vc", "v"}; string $cmd=""; string $obj=""; string $sel[]; string $res[]; switch ($option) { case 0: setIntOptionVars($prefix, false, $intVars); $cmd = $prefix; for ( $i = size($intVars) ; $i-- ; ) { string $varName = ($prefix + $intVars[$i]); int $ival = `optionVar -query $varName`; $cmd = $cmd + " -" + $intVars[$i] + " " + $ival; } // // polyTransfer is a special command with two arguments // $sel = `ls -sl -dag -type mesh -ni`; if (size($sel) != 2) { string $fmt = (uiRes("m_performPolyTransfer.kReqsTwoPolygons")); error `format -s $prefix $fmt`; } $cmd = $cmd + " -ao "+ $sel[0] +" "+ $sel[1]; if (`optionVar -q polyAutoShowColorPerVertex`) { optionVar -intValue colorShadedDisplay 1 -intValueAppend colorShadedDisplay 1; DisplaySmoothShaded; polyOptions -cs 1; } evalEcho($cmd); break; case 1: polyTransferOptions($prefix, $intVars); break; case 2: $cmd="performPolyTransfer 0"; break; } return $cmd; }