// =========================================================================== // 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: Nov, 12, 1998 // // Procedure Name: // performPolyCopyPaste // // Description: // Perform a PolyCopyPaste on selected components // // Input Arguments: // $option : Whether to set the options to default values. // Return Value: // command string iff $option==2 // proc setOptionVars (int $forceFactorySettings) { // Default to copy/paste/clear UVs and shaders // if ($forceFactorySettings || !`optionVar -exists polyCopyPasteColor`) optionVar -intValue polyCopyPasteColor 0; if ($forceFactorySettings || !`optionVar -exists polyCopyPasteUV`) optionVar -intValue polyCopyPasteUV 1; if ($forceFactorySettings || !`optionVar -exists polyCopyPasteShader`) optionVar -intValue polyCopyPasteShader 1; } global proc performPolyCopyPasteSetup (string $parent, int $forceFactorySettings) { setOptionVars($forceFactorySettings); setParent $parent; int $ival; $ival = `optionVar -query polyCopyPasteUV`; checkBoxGrp -edit -value1 $ival polyCopyPasteOptions; $ival = `optionVar -query polyCopyPasteShader`; checkBoxGrp -edit -value2 $ival polyCopyPasteOptions; $ival = `optionVar -query polyCopyPasteColor`; checkBoxGrp -edit -value3 $ival polyCopyPasteOptions; } global proc performPolyCopyPasteCallback (string $parent, int $doIt) { setParent $parent; optionVar -intValue polyCopyPasteUV `checkBoxGrp -query -value1 polyCopyPasteOptions`; optionVar -intValue polyCopyPasteShader `checkBoxGrp -query -value2 polyCopyPasteOptions`; optionVar -intValue polyCopyPasteColor `checkBoxGrp -query -value3 polyCopyPasteOptions`; int $action = `optionVar -query polyCopyPasteAction`; if ($doIt) { performPolyCopyPaste 0 $action; string $tmpCmd = "performPolyCopyPaste 0 " + $action; addToRecentCommandQueue $tmpCmd "polyCopyPaste"; } } proc polyCopyPasteOptions() { // Global template variables for form spacing global int $gOptionBoxTemplateFrameSpacing; string $commandName = "performPolyCopyPaste"; string $callback = ($commandName + "Callback"); string $setup = ($commandName + "Setup"); string $layout = getOptionBox(); setParent $layout; setOptionBoxCommandName( $commandName ); setUITemplate -pushTemplate OptionBoxTemplate; waitCursor -state 1; // Form layout string $parent = `formLayout polyCopyPasteOptions`; // Settings frame string $settingsFrame = `frameLayout -label (uiRes("m_performPolyCopyPaste.kSettingsFrame"))`; columnLayout; // Copy / Paste / Clear options checkBoxGrp -numberOfCheckBoxes 3 -vertical -label (uiRes("m_performPolyCopyPaste.kAttributes")) -label1 (uiRes("m_performPolyCopyPaste.kUV")) -label2 (uiRes("m_performPolyCopyPaste.kShader")) -label3 (uiRes("m_performPolyCopyPaste.kColor")) polyCopyPasteOptions; setParent $parent; // frameLayout setParent ..; // formLayout // Attach Settings frames to form layout formLayout -e -attachForm $settingsFrame "top" $gOptionBoxTemplateFrameSpacing -attachForm $settingsFrame "left" $gOptionBoxTemplateFrameSpacing -attachForm $settingsFrame "right" $gOptionBoxTemplateFrameSpacing -attachNone $settingsFrame "bottom" $parent; waitCursor -state 0; setUITemplate -popTemplate; // Apply button string $applyBtn = getOptionBoxApplyBtn(); button -edit -command ($callback + " " + $parent + " " + 1) $applyBtn; // Save button string $saveBtn = getOptionBoxSaveBtn(); button -edit -command ($callback + " " + $parent + " " + 0 + "; hideOptionBox") $saveBtn; // Reset button string $resetBtn = getOptionBoxResetBtn(); button -edit -command ($setup + " " + $parent + " " + 1) $resetBtn; // Set the window title and // customize the 'Help' menu item text. // int $action = `optionVar -query polyCopyPasteAction`; if ($action == 1) { setOptionBoxTitle (uiRes("m_performPolyCopyPaste.kCopyAttributesOptions")); setOptionBoxHelpTag( "ClipboardActionsCopy" ); } else if ($action == 2) { setOptionBoxTitle (uiRes("m_performPolyCopyPaste.kPasteAttributesOptions")); setOptionBoxHelpTag( "ClipboardActionsPaste" ); } else if ($action == 3) { setOptionBoxTitle (uiRes("m_performPolyCopyPaste.kClearClipboardOptions")); setOptionBoxHelpTag( "ClipboardActionsClearClipboard" ); } eval (($setup + " " + $parent + " " + 0)); showOptionBox(); } global proc string performPolyCopyPaste (int $option, int $action) { string $cmd=""; string $sel[]; // 1 = copy, 2 = paste, 3 = clear. Default to copy optionVar -intValue polyCopyPasteAction $action; switch ($option) { case 1: // Just the option box // polyCopyPasteOptions; break; default: setOptionVars(false); int $color = `optionVar -query polyCopyPasteColor`; int $uv = `optionVar -query polyCopyPasteUV`; int $shader = `optionVar -query polyCopyPasteShader`; $cmd = "polyClipboard"; if ($uv) $cmd = ($cmd + " -uv"); if ($shader) $cmd = ($cmd + " -shader"); if ($color) { $cmd = ($cmd + " -color"); // // If ConvertDisplay is on, and we are about to cut or paste, // enter color in shaded display mode now. // if ($action == 1 || $action == 2) { if (`optionVar -q polyAutoShowColorPerVertex`) { optionVar -intValue colorShadedDisplay 1 -intValueAppend colorShadedDisplay 1; DisplaySmoothShaded; polyOptions -cs 1; } } } // Do only 1 of 3 possible items // // copy if ($action == 1) $cmd = ($cmd + " -cp"); // paste else if ($action == 2) $cmd = ($cmd + " -ps"); // clear else if ($action == 3) $cmd = ($cmd + " -cl"); if ($option == 0) evalEcho $cmd; break; } return $cmd; }