// =========================================================================== // 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 // // Description: // Part of the option box for the nurbs to poly conversion. // // // Procedure Name: // nurbsToPolyAddOptions // // Description: // Construct the option box UI. Involves accessing the standard option // box and customizing the UI accordingly. // // Input Arguments: // None. // // Return Value: // None. // global proc nurbsToPolyAddOptions( string $parent ) { setUITemplate -pushTemplate DefaultTemplate; setParent $parent; checkBoxGrp -label "" -numberOfCheckBoxes 1 -label1 (uiRes("m_nurbsToPolyAddOptions.kAttachMultiple")) -changeCommand ("mergeMeshesOptionChanged " + $parent) mergeBox; floatSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kMergeTolerance")) -min 0.0 -max 1.0 mergeTolerance; separator; checkBoxGrp -label "" -numberOfCheckBoxes 1 -label1 (uiRes("m_nurbsToPolyAddOptions.kMatchRender")) -changeCommand ("renderTessellationOptionChanged " + $parent) matchRenderTessellationBox; separator; radioButtonGrp -nrb 2 -label (uiRes("m_nurbsToPolyAddOptions.kType")) -label1 (uiRes("m_nurbsToPolyAddOptions.kTriangles")) -label2 (uiRes("m_nurbsToPolyAddOptions.kQuads")) type; // // Ghost the Type controls if the Tessellation method is set // to Control Points (format == 3) // int $format = `nurbsToPolygonsPref -q -f`; if ($format == 3) { radioButtonGrp -edit -enable 0 type; } else { radioButtonGrp -edit -enable 1 type; } string $radioBtnGrp1 =`radioButtonGrp -nrb 2 -label (uiRes("m_nurbsToPolyAddOptions.kTessellationMethod")) -label1 (uiRes("m_nurbsToPolyAddOptions.kGeneral")) -label2 (uiRes("m_nurbsToPolyAddOptions.kCount")) -cc1 ("nurbsToPolyVisibility " + $parent + " 2") -cc2 ("nurbsToPolyVisibility " + $parent + " 0") format`; radioButtonGrp -shareCollection $radioBtnGrp1 -nrb 2 -label "" -label1 (uiRes("m_nurbsToPolyAddOptions.kStandardFit")) -label2 (uiRes("m_nurbsToPolyAddOptions.kControlPoints")) -cc1 ("nurbsToPolyVisibility " + $parent + " 1") -cc2 ("nurbsToPolyVisibility " + $parent + " 3") format2; separator; tabLayout -tabsVisible false formatTabs; columnLayout tabGeneral; text -label (uiRes("m_nurbsToPolyAddOptions.kInitialTessellation")) ; string $perSurfIso = (uiRes("m_nurbsToPolyAddOptions.kPerSurfIso")); string $persurf = (uiRes("m_nurbsToPolyAddOptions.kPerSurf")); string $perSpan = (uiRes("m_nurbsToPolyAddOptions.kPerSpan")); optionMenuGrp -label (uiRes("m_nurbsToPolyAddOptions.kUtype")) uType; menuItem -label $perSurfIso; menuItem -label $persurf; menuItem -label $perSpan; intSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kNumberU")) -min 1 -max 32 -fmx 10000 uNumber; optionMenuGrp -label (uiRes("m_nurbsToPolyAddOptions.kVType")) vType; menuItem -label $perSurfIso; menuItem -label $persurf; menuItem -label $perSpan; intSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kNumberV")) -min 1 -max 32 -fmx 10000 vNumber; columnLayout secondary; separator; text -label (uiRes("m_nurbsToPolyAddOptions.kSecondaryTessellation")) ; checkBoxGrp -ncb 1 -label1 (uiRes("m_nurbsToPolyAddOptions.kUseChordHeight")) useChordHeight; floatSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kChordHeight")) -fmn 0.01 -fmx 0.2 -min 0.01 -max 0.2 chordHeight; checkBoxGrp -ncb 1 -label1 (uiRes("m_nurbsToPolyAddOptions.kUseChordHeightRatio")) useChordHeightRatio; string $chordHeight = (uiRes("m_nurbsToPolyAddOptions.kChordHeightRatio")); floatSliderGrp -label $chordHeight -min 0.9 -max 0.99 -fmn 0.01 -fmx 0.999 ratioG; checkBoxGrp -ncb 1 -label1 (uiRes("m_nurbsToPolyAddOptions.kEdgeSwap")) edgeSwap; setParent ..; setParent ..; columnLayout tabStandard; floatSliderGrp -label $chordHeight -min 0.9 -max 0.99 -fmn 0.01 -fmx 0.999 ratioS; floatSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kFractionalTolerance")) -fmn 0.000001 -fmx 1000 -min 0.001 -max 1.0 fractional; floatSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kMinimalEdgeLength")) -min 0.0001 -fmn 0.0001 -max 1.0 -fmx 1000 minEdgeLength; floatSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kDelta")) -min 0.01 -max 1.0 -fmx 1000 delta; setParent ..; columnLayout tabCount; intSliderGrp -label (uiRes("m_nurbsToPolyAddOptions.kCountValue")) -min 1 -max 1000 -fmx 1000000 count; setParent ..; setParent ..; setUITemplate -popTemplate; } global proc mergeMeshesOptionChanged ( string $parent ) { int $merge = `checkBoxGrp -q -value1 mergeBox`; // // If the merge meshes option is checked we have to make sure that // any of the tessellation methods that don't work with it are not // chosen, for now this is just the control points method. If a // a conflicting method is chosen then change to the general method. // if ($merge) { int $format = `radioButtonGrp -q -sl format2`; if ($format == 2) { radioButtonGrp -edit -select 1 format; nurbsToPolyVisibility $parent 2; } } checkBoxGrp -edit -enable (!$merge) matchRenderTessellationBox; radioButtonGrp -edit -enable2 (!$merge) format2; floatSliderGrp -edit -enable $merge mergeTolerance; } global proc renderTessellationOptionChanged ( string $parent ) { int $match = `checkBoxGrp -q -value1 matchRenderTessellationBox`; // If the match tessellation option is checked we have disable all // the explicit tessellation settings radioButtonGrp -edit -enable (!$match) type; radioButtonGrp -edit -enable (!$match) format; radioButtonGrp -edit -enable (!$match) format2; tabLayout -edit -enable (!$match) formatTabs; }