// =========================================================================== // 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: 2008 // // Description: // This is the script used to implement menus and option boxes for // the particleFill menu. // // Procedure Name: // setOptionVars // // Description: // Initialize the option values. // // Input Arguments: // Whether to set the options to default values. // // proc setOptionVars(int $forceFactorySettings) { if($forceFactorySettings || !`optionVar -exists particleFillResolution`) { optionVar -intValue particleFillResolution 10; } if($forceFactorySettings || !`optionVar -exists particleFillMaxX`) { optionVar -floatValue particleFillMaxX 1.0; } if($forceFactorySettings || !`optionVar -exists particleFillMaxY`) { optionVar -floatValue particleFillMaxY 1.0; } if($forceFactorySettings || !`optionVar -exists particleFillMaxZ`) { optionVar -floatValue particleFillMaxZ 1.0; } if($forceFactorySettings || !`optionVar -exists particleFillMinX`) { optionVar -floatValue particleFillMinX 0.0; } if($forceFactorySettings || !`optionVar -exists particleFillMinY`) { optionVar -floatValue particleFillMinY 0.0; } if($forceFactorySettings || !`optionVar -exists particleFillMinZ`) { optionVar -floatValue particleFillMinZ 0.0; } if($forceFactorySettings || !`optionVar -exists particleFillDensity`) { optionVar -floatValue particleFillDensity 1.0; } if($forceFactorySettings || !`optionVar -exists particleFillClosePack`) { optionVar -intValue particleFillClosePack 1; } if($forceFactorySettings || !`optionVar -exists particleFillDoubleWall`) { optionVar -intValue particleFillDoubleWall 0; } } // // Procedure Name: // performParticleFillSetup // // Description: // Update the state of the option box UI to reflect the option values. // // Input Arguments: // parent - Top level parent layout of the option box UI. // Required so that UI object names can be // successfully resolved. // // forceFactorySettings - Whether the option values should be set to // default values. // // Return Value: // None. // global proc performParticleFillSetup(string $parent, int $forceFactorySettings) { // Retrieve the option settings // setOptionVars($forceFactorySettings); setParent $parent; intSliderGrp -edit -v `optionVar -query particleFillResolution` particleFillResolution; floatSliderGrp -edit -v `optionVar -query particleFillMaxX` particleFillMaxX; floatSliderGrp -edit -v `optionVar -query particleFillMaxY` particleFillMaxY; floatSliderGrp -edit -v `optionVar -query particleFillMaxZ` particleFillMaxZ; floatSliderGrp -edit -v `optionVar -query particleFillMinX` particleFillMinX; floatSliderGrp -edit -v `optionVar -query particleFillMinY` particleFillMinY; floatSliderGrp -edit -v `optionVar -query particleFillMinZ` particleFillMinZ; floatSliderGrp -edit -v `optionVar -query particleFillDensity` particleFillDensity; checkBoxGrp -edit -value1 `optionVar -query particleFillClosePack` particleFillClosePack; checkBoxGrp -edit -value1 `optionVar -query particleFillDoubleWall` particleFillDoubleWall; } // // Procedure Name: // performParticleFillCallback // // Description: // Update the option values with the current state of the option box UI. // // Input Arguments: // parent - Top level parent layout of the option box UI. Required so // that UI object names can be successfully resolved. // // doIt - Whether the command should execute. // // Return Value: // None. // global proc performParticleFillCallback(string $parent, int $doIt) { setParent $parent; optionVar -intValue particleFillResolution `intSliderGrp -query -v particleFillResolution`; optionVar -floatValue particleFillMaxX `floatSliderGrp -query -v particleFillMaxX`; optionVar -floatValue particleFillMaxY `floatSliderGrp -query -v particleFillMaxY`; optionVar -floatValue particleFillMaxZ `floatSliderGrp -query -v particleFillMaxZ`; optionVar -floatValue particleFillMinX `floatSliderGrp -query -v particleFillMinX`; optionVar -floatValue particleFillMinY `floatSliderGrp -query -v particleFillMinY`; optionVar -floatValue particleFillMinZ `floatSliderGrp -query -v particleFillMinZ`; optionVar -floatValue particleFillDensity `floatSliderGrp -query -v particleFillDensity`; optionVar -intValue particleFillClosePack `checkBoxGrp -query -value1 particleFillClosePack`; optionVar -intValue particleFillDoubleWall `checkBoxGrp -query -value1 particleFillDoubleWall`; if( $doIt ) { performParticleFill 0; } } // // Procedure Name: // particleFillOptions // // Description: // Construct the option box UI. Involves accessing the standard option // box and customizing the UI accordingly. // // Input Arguments: // None. // // Return Value: // None. // proc particleFillOptions() { // Name of the command for this option box. // string $commandName = "performParticleFill"; // Build the option box actions. // string $callback = ($commandName + "Callback"); string $setup = ($commandName + "Setup"); string $layout = getOptionBox(); setParent $layout; setUITemplate -pushTemplate DefaultTemplate; tabLayout -tv false -scr true; string $parent = `columnLayout -adjustableColumn 1`; string $nucleusButton = nucleusSolverButton(""); intSliderGrp -label (uiRes("m_performParticleFill.kResolution")) -field 1 -min 1 -max 100 -fieldMinValue 0 -fieldMaxValue 100000 particleFillResolution; floatSliderGrp -label (uiRes("m_performParticleFill.kFillLevelMinX")) -min 0.0 -max 1.0 -fieldMinValue -100 -fieldMaxValue 1 particleFillMinX; floatSliderGrp -label (uiRes("m_performParticleFill.kFillLevelMaxX")) -min 0.0 -max 1.0 -fieldMinValue 0 -fieldMaxValue 100 particleFillMaxX; floatSliderGrp -label (uiRes("m_performParticleFill.kFillLevelMinY")) -min 0.0 -max 1.0 -fieldMinValue -100 -fieldMaxValue 1 particleFillMinY; floatSliderGrp -label (uiRes("m_performParticleFill.kFillLevelMaxY")) -min 0.0 -max 1.0 -fieldMinValue 0 -fieldMaxValue 100 particleFillMaxY; floatSliderGrp -label (uiRes("m_performParticleFill.kFillLevelMinZ")) -min 0.0 -max 1.0 -fieldMinValue -100 -fieldMaxValue 1 particleFillMinZ; floatSliderGrp -label (uiRes("m_performParticleFill.kFillLevelMaxZ")) -min 0.0 -max 1.0 -fieldMinValue 0 -fieldMaxValue 100 particleFillMaxZ; floatSliderGrp -label (uiRes("m_performParticleFill.kDensity")) -min 0.0 -max 1.0 -fieldMinValue -100.0 -fieldMaxValue 100.0 particleFillDensity; checkBoxGrp -ncb 1 -label1 (uiRes("m_performParticleFill.kClosePacking")) particleFillClosePack; checkBoxGrp -ncb 1 -label1 (uiRes("m_performParticleFill.kDoubleWalled")) particleFillDoubleWall; // 'Apply' button. // string $applyBtn = getOptionBoxApplyBtn(); button -edit -label (uiRes("m_performParticleFill.kParticleFill")) -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 option box title. // setOptionBoxTitle( (uiRes("m_performParticleFill.kCreateOptionBoxLabel"))); setOptionBoxCommandName($commandName); setOptionBoxHelpTag( "ParticleFill" ); // Pop the UI template // setUITemplate -popTemplate; // Set the current values of the option box. // eval( $setup + " " + $parent + " " + 0 ); // Show the option box. // showOptionBox(); } // // Procedure Name: // assembleCmd // // Description: // Construct the command that will apply the option box values. // // Input Arguments: // None. // // Return Value: // None. // proc string assembleCmd() { setOptionVars(false); string $cmd = ("doParticleFill " + (`optionVar -query particleFillResolution`) + " " + (`optionVar -query particleFillMaxX`) + " " + (`optionVar -query particleFillMaxY`) + " " + (`optionVar -query particleFillMaxZ`) + " " + (`optionVar -query particleFillMinX`) + " " + (`optionVar -query particleFillMinY`) + " " + (`optionVar -query particleFillMinZ`) + " " + (`optionVar -query particleFillDensity`) + " " + (`optionVar -query particleFillClosePack`) + " " + (`optionVar -query particleFillDoubleWall`) ); return $cmd; } // // Procedure Name: // performParticleFill // // Description: // Perform the command using the corresponding // option values. This procedure will also show the option box // window if necessary as well as construct the command string // that will invoke the command with the current // option box values. // // Input Arguments: // 0 - Execute the command. // 1 - Show the option box dialog. // 2 - Return the command. // // Return Value: // None. // global proc string performParticleFill(int $action) { string $cmd = ""; switch ($action) { // Execute the command from option settings. // case 0: setOptionVars(false); $cmd = `assembleCmd`; eval($cmd); break; // Show the option box. // case 1: particleFillOptions(); break; // Return the command string. // case 2: setOptionVars (false); $cmd = `assembleCmd`; break; } return $cmd; }