// =========================================================================== // 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: 5 March 2015 // // Procedure Name: // performPolyConform // // Description: // Conforms selected components/mesh to the live surface // // Input Arguments: // $option : Whether to set the options to default values. // // Return Value: // command string iff $option==2 // proc setOptionVars(int $forceFactorySettings) { if ($forceFactorySettings || !`optionVar -exists polyConformAlongNormals`) { optionVar -intValue polyConformAlongNormals 1; } if ($forceFactorySettings || !`optionVar -exists polyConformOffset`) { optionVar -fv polyConformOffset 0; } } global proc performPolyConformSetup(string $parent, int $forceFactorySettings) { setOptionVars($forceFactorySettings); setParent $parent; int $alongNormals = `optionVar -q polyConformAlongNormals`; radioButtonGrp -edit -select ($alongNormals ? 1 : 2) polyConformProjectionOption; float $offset = `optionVar -q polyConformOffset`; floatSliderGrp -edit -value $offset polyConformOffsetOption; } global proc performPolyConformCallback(string $parent, int $doIt) { setParent $parent; int $alongNormals = (`radioButtonGrp -q -select polyConformProjectionOption` != 2); optionVar -intValue polyConformAlongNormals $alongNormals; float $offset = `floatSliderGrp -q -value polyConformOffsetOption`; optionVar -fv polyConformOffset $offset; if ($doIt) { dR_conform; addToRecentCommandQueue "performPolyConform 0" "PolyConform"; } } proc polyConformOptions() { // Global template variables for form spacing global int $gOptionBoxTemplateFrameSpacing; string $layout = getOptionBox(); setParent $layout; setUITemplate -pushTemplate OptionBoxTemplate; waitCursor -state 1; // Form layout string $parent = `formLayout polyConformSettings`; string $commandName = "performPolyConform"; string $callback = ($commandName + "Callback " + $parent + " "); string $setup = ($commandName + "Setup " + $parent + " "); setOptionBoxCommandName($commandName); // Settings frame string $settingsFrame = `frameLayout -label (uiRes("m_performPolyConform.kSettingsFrame"))`; columnLayout; radioButtonGrp -label (uiRes("m_performPolyConform.kConformProjection")) -numberOfRadioButtons 2 -label1 (uiRes("m_performPolyConform.kAlongNormals")) -label2 (uiRes("m_performPolyConform.kClosestPoint")) polyConformProjectionOption; floatSliderGrp -label (uiRes("m_performPolyConform.kConformOffset")) -min 0.0 -max 0.1 -step 0.01 -fieldMinValue -100 -fieldMaxValue 100 -field true polyConformOffsetOption; setParent ..; // columnLayout setParent $parent; // frameLayout setParent ..; // formLayout // Attach Description/Settings frames to form layout formLayout -e -af $settingsFrame "top" $gOptionBoxTemplateFrameSpacing -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_performPolyConform.kConformButton")) -command ($callback + 1) $applyBtn; string $saveBtn = getOptionBoxSaveBtn(); button -edit -command ($callback + 0 + "; hideOptionBox") $saveBtn; string $resetBtn = getOptionBoxResetBtn(); button -edit -command ($setup + 1) $resetBtn; setOptionBoxTitle((uiRes("m_performPolyConform.kConformOptions"))); // Customize the 'Help' menu item text. setOptionBoxHelpTag("PolyConform"); eval (($setup + 0)); showOptionBox(); } proc polyConformExecute() { setOptionVars(0); dR_conform; } global proc string performPolyConform(int $option) { string $cmd = ""; switch ($option) { case 0: polyConformExecute; break; case 1: polyConformOptions; break; default: $cmd = ("performPolyConform 0"); break; } return $cmd; }