// =========================================================================== // 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. // =========================================================================== // // Procedure Name: // AEalignCommon // // Description Name; // Creates the common attribute editor controls // for the alignCurve and align Surface Nodes // // Input Value: // nodeName // // Output Value: // None // global proc AEalignPositionContinuityTypeNew( string $attrName ) { setUITemplate -pst attributeEditorTemplate; attrEnumOptionMenuGrp -attribute $attrName -label (uiRes("m_AEalignCommon.kPosContinuityType")) positionContiunityTypeEnum; setUITemplate -ppt; AEalignPositionContinuityTypeReplace $attrName; } global proc AEalignPositionContinuityTypeReplace( string $attrName ) { string $tmp[]; tokenize($attrName, ".", $tmp); string $nodeName = $tmp[0]; attrEnumOptionMenuGrp -e -attribute $attrName -label (uiRes("m_AEalignCommon.kPosContinuityType")) positionContiunityTypeEnum; scriptJob -p positionContiunityTypeEnum -rp -ac $attrName ("positionalContinuityTypeControls " + $nodeName ); evalDeferred ("positionalContinuityTypeControls " + $nodeName); } global proc AEalignTangentContinuityTypeNew( string $attrName ) { setUITemplate -pst attributeEditorTemplate; attrEnumOptionMenuGrp -attribute $attrName -label (uiRes("m_AEalignCommon.kTanContinuityType")) tangentContiunityTypeEnum; setUITemplate -ppt; AEalignTangentContinuityTypeReplace $attrName; } global proc AEalignTangentContinuityTypeReplace( string $attrName ) { string $tmp[]; tokenize($attrName, ".", $tmp); string $nodeName = $tmp[0]; attrEnumOptionMenuGrp -e -attribute $attrName -label (uiRes("m_AEalignCommon.kTanContinuityType")) tangentContiunityTypeEnum; scriptJob -p tangentContiunityTypeEnum -rp -ac $attrName ("interiorBlendingControls " + $nodeName ); evalDeferred ("interiorBlendingControls " + $nodeName); } global proc AEalignCommon ( string $nodeName, string $whichAlignNode ) { editorTemplate -beginScrollLayout; editorTemplate -beginLayout (uiRes("m_AEalignCommon.kAlignHistory")) -collapse false; if ($whichAlignNode == "curve") { string $in1 = (uiRes("m_AEalignCommon.kInCurve1")); string $in2 = (uiRes("m_AEalignCommon.kInCurve2")); editorTemplate -callCustom ("AEinputNew \"" + $in1 + "\"") ("AEinputReplace \"" + $in1 + "\"") "inputCurve1"; editorTemplate -callCustom ("AEinputNew \"" + $in2 + "\"") ("AEinputReplace \"" + $in2 + "\"") "inputCurve2"; } else { string $in1 = (uiRes("m_AEalignCommon.kInSurface1")); string $in2 = (uiRes("m_AEalignCommon.kInSurface2")); editorTemplate -callCustom ("AEinputNew \"" + $in1 + "\"") ("AEinputReplace \"" + $in1 + "\"") "inputSurface1"; editorTemplate -callCustom ("AEinputNew \"" + $in2 + "\"") ("AEinputReplace \"" + $in2 + "\"" ) "inputSurface2"; } editorTemplate -addControl "positionalContinuity" "positionalContinuityControls"; editorTemplate -callCustom "AEalignPositionContinuityTypeNew" "AEalignPositionContinuityTypeReplace" "positionalContinuityType"; editorTemplate -beginNoOptimize; editorTemplate -addControl "tangentContinuity" "tangentContinuityControls"; editorTemplate -addControl "curvatureContinuity" "curvatureContinuityControls"; editorTemplate -endNoOptimize; editorTemplate -callCustom "AEalignTangentContinuityTypeNew" "AEalignTangentContinuityTypeReplace" "tangentContinuityType"; if ($whichAlignNode == "surface") editorTemplate -addControl "directionU"; editorTemplate -addControl "joinParameter"; editorTemplate -addControl "reverse1"; editorTemplate -addControl "reverse2"; if ($whichAlignNode == "surface") { editorTemplate -addControl "swap1"; editorTemplate -addControl "swap2"; editorTemplate -addControl "twist"; } editorTemplate -beginLayout (uiRes("m_AEalignCommon.kInteriorBlendingFirstObject")) -collapse false; editorTemplate -addControl "tangentScale1"; editorTemplate -addControl "curvatureScale1"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEalignCommon.kInteriorBlendingSecondObject")) -collapse false; editorTemplate -addControl "tangentScale2"; editorTemplate -addControl "curvatureScale2"; editorTemplate -endLayout; editorTemplate -endLayout; // include/call base class/node attributes AEabstractBaseCreateTemplate $nodeName; editorTemplate -addExtraControls; editorTemplate -endScrollLayout; } global proc positionalContinuityControls( string $nodeName ) { string $posAttrName = $nodeName + ".positionalContinuity"; string $tanAttrName = $nodeName + ".tangentContinuity"; string $crvAttrName = $nodeName + ".curvatureContinuity"; int $posAttrValue = `getAttr $posAttrName`; if ($posAttrValue == 0) { // must have at least position alignment //setAttr $posAttrName 1; //setAttr $tanAttrName 0; //setAttr $crvAttrName 0; editorTemplate -dimControl $nodeName "positionalContinuityType" true; } else { editorTemplate -dimControl $nodeName "positionalContinuityType" false; } interiorBlendingControls($nodeName); } global proc positionalContinuityTypeControls( string $nodeName ) { string $posTypeAttrName = $nodeName + ".positionalContinuityType"; int $posAttrTypeValue = `getAttr $posTypeAttrName`; if ( $posAttrTypeValue == 3 || $posAttrTypeValue == 6 ) { // can't change join parameter when "both" positional type editorTemplate -dimControl $nodeName "joinParameter" true; } else { editorTemplate -dimControl $nodeName "joinParameter" false; } } global proc tangentContinuityControls( string $nodeName ) { string $posAttrName = $nodeName + ".positionalContinuity"; string $tanAttrName = $nodeName + ".tangentContinuity"; string $crvAttrName = $nodeName + ".curvatureContinuity"; int $tanAttrValue = `getAttr $tanAttrName`; int $posAttrValue = `getAttr $posAttrName`; int $crvAttrValue = `getAttr $crvAttrName`; // want to disable curvature alignment regardless //if ($crvAttrValue == 1) // setAttr $crvAttrName 0; editorTemplate -dimControl $nodeName "curvatureScale1" true; editorTemplate -dimControl $nodeName "curvatureScale2" true; if ($tanAttrValue == 1) { //if ($posAttrValue == 0 ) // setAttr $posAttrName 1; editorTemplate -dimControl $nodeName "tangentContinuityType" false; } else { setAttr $crvAttrName 0; editorTemplate -dimControl $nodeName "tangentContinuityType" true; } interiorBlendingControls($nodeName); } global proc curvatureContinuityControls( string $nodeName ) { string $posAttrName = $nodeName + ".positionalContinuity"; string $tanAttrName = $nodeName + ".tangentContinuity"; string $crvAttrName = $nodeName + ".curvatureContinuity"; int $crvAttrValue = `getAttr $crvAttrName`; int $tanAttrValue = `getAttr $tanAttrName`; int $posAttrValue = `getAttr $posAttrName`; if ($crvAttrValue == 1) { //if ($posAttrValue == 0) // setAttr $posAttrName 1; if ($tanAttrValue == 0){ setAttr $tanAttrName 1; setAttr $crvAttrName 1; } editorTemplate -dimControl $nodeName "tangentContinuityType" false; } interiorBlendingControls($nodeName); } global proc interiorBlendingControls( string $nodeName ) { string $crvAttrName = $nodeName + ".curvatureContinuity"; string $tanAttrName = $nodeName + ".tangentContinuity"; string $tanTypeAttrName = $nodeName + ".tangentContinuityType"; int $crvValue = `getAttr $crvAttrName`; int $tanValue = `getAttr $tanAttrName`; int $tanTypeValue = `getAttr $tanTypeAttrName`; if ($tanValue == 0) { editorTemplate -dimControl $nodeName "tangentScale1" true; editorTemplate -dimControl $nodeName "curvatureScale1" true; editorTemplate -dimControl $nodeName "tangentScale2" true; editorTemplate -dimControl $nodeName "curvatureScale2" true; editorTemplate -dimControl $nodeName "tangentContinuityType" true; } else { editorTemplate -dimControl $nodeName "tangentScale1" false; editorTemplate -dimControl $nodeName "tangentScale2" false; if ($crvValue == 1) { editorTemplate -dimControl $nodeName "curvatureScale1" false; editorTemplate -dimControl $nodeName "curvatureScale2" false; } else { editorTemplate -dimControl $nodeName "curvatureScale1" true; editorTemplate -dimControl $nodeName "curvatureScale2" true; } } }