// =========================================================================== // 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: 13 January 1998 // // Description: // // // Procedure Name: // performPolyBoolean // // Description: // perform a boolean operation of the selected polygon objects // // 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 polyBooleanType`) optionVar -intValue polyBooleanType 1; } global proc performPolyBooleanSetup (string $parent, int $forceFactorySettings) { setOptionVars($forceFactorySettings); setParent $parent; int $val = `optionVar -query polyBooleanType`; optionMenuGrp -edit -sl $val polyBooleanType; // intSliderGrp -edit -value $val polyBooleanType; } global proc performPolyBooleanCallback (string $parent, int $doIt) { setParent $parent; optionVar -intValue polyBooleanType `optionMenuGrp -query -sl polyBooleanType`; if ($doIt) { performPolyBoolean 0; addToRecentCommandQueue "performPolyBoolean 0" "PolyBoolean"; } } proc polyBooleanOptions () { string $commandName = "performPolyBoolean"; string $callback = ($commandName + "Callback"); string $setup = ($commandName + "Setup"); string $layout = getOptionBox(); setParent $layout; setUITemplate -pushTemplate DefaultTemplate; waitCursor -state 1; string $parent = `columnLayout -adjustableColumn 1`; // intSliderGrp -label "Operation" -min 1 -max 10 -s 1 polyBooleanType; optionMenuGrp -l "Operation" polyBooleanType; menuItem -l "Union" BooleanUnionMenuItem; menuItem -l "Difference" BooleanDifferenceMenuItem; menuItem -l "Intersection" BooleanIntersectionMenuItem; setParent -m ..; optionMenuGrp -e -sl 1 polyBooleanType; waitCursor -state 0; setUITemplate -popTemplate; string $applyBtn = getOptionBoxApplyBtn(); button -edit -label (uiRes("m_performPolyBoolean.kBoolean")) -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_performPolyBoolean.kOptions"))); setOptionBoxHelpTag( "PolyBoolean" ); eval (($setup + " " + $parent + " " + 0)); showOptionBox(); } global proc string performPolyBoolean (int $option) { string $cmd=""; string $sel[]; int $ival; switch ($option) { case 0: setOptionVars(false); $ival = `optionVar -query polyBooleanType`; $cmd = "polyCBoolOp " + " -op " + $ival + " -useThresholds 1"; polyPerformAction $cmd o 0; break; case 1: polyBooleanOptions; break; default: setOptionVars(false); $ival = `optionVar -query polyBooleanType`; $cmd = "polyCBoolOp " + " -op " + $ival + " -useThresholds 1";; $cmd = ("polyPerformAction \"" + $cmd + "\" o 0"); } return $cmd; }