Shon Mitchell
07-15-2010, 08:50 AM
Hi all, got tired of messing around with maya's Duplicate Special and created a script that pretty much streamlines setting up Instanced linear and radial symmetry. just place script in script editor, highlight all and drag to shelf
enjoy!
if(`window -exists "QuickSymm"`)
{
deleteUI "QuickSymm";
}
window QuickSymm;
columnLayout -cat "both" 0 -cal "center" -cw 310;
text -h 50 -align "center" -label "LINEAR";
setParent ..;
rowLayout -numberOfColumns 3 -cw3 100 100 100 -ct3 "both" "both" "both" -cl3 "center" "center" "center";
button -label "X" -command "mirrorcallback 1";
button -label "Y" -command "mirrorcallback 2";
button -label "Z" -command "mirrorcallback 3";
setParent ..;
text -h 50 -align "center" -label "RADIAL";
setParent..;
rowLayout -numberOfColumns 3 -cw3 100 100 100 -ct3 "both" "both" "both" -cl3 "center" "center" "center";
button -label "Radial X" -command "radialcallback 1";
button -label "Radial Y" -command "radialcallback 2";
button -label "Radial Z" -command "radialcallback 3";
setParent ..;
columnLayout -cat "both" 0 -cal "center" -cw 300;
text -h 50 -align "center" -label "Number of Pieces";
setParent ..;
columnLayout -co "both" 125 -cw 300;
intField -w 50 -minValue 3 -value 3 NumSides;
window -edit -wh 310 280 QuickSymm;
showWindow QuickSymm;
global proc mirrorcallback(int $Linear)
{
switch($Linear)
{
case 1:
duplicatePreset(1,0,1,0,0,0,0,0,0,0,0,0,0,0,-1,1,1);
break;
case 2:
duplicatePreset(1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,-1,1);
break;
case 3:
duplicatePreset(1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,-1);
break;
default:
break;
}
}
global proc radialcallback(int $MirrorAxis)
{
int $numInstances = `intField -q -value NumSides`;
float $Division = 360 / float ($numInstances);
switch($MirrorAxis)
{
case 1:
duplicatePreset(--$numInstances,0,1,0,0,0,0,0,0,0,0,$Division,0,0,1, 1,1);
break;
case 2:
duplicatePreset(--$numInstances,0,1,0,0,0,0,0,0,0,0,0,$Division,0,1, 1,1);
break;
case 3:
duplicatePreset(--$numInstances,0,1,0,0,0,0,0,0,0,0,0,0,$Division,1, 1,1);
break;
default:
break;
}
};
enjoy!
if(`window -exists "QuickSymm"`)
{
deleteUI "QuickSymm";
}
window QuickSymm;
columnLayout -cat "both" 0 -cal "center" -cw 310;
text -h 50 -align "center" -label "LINEAR";
setParent ..;
rowLayout -numberOfColumns 3 -cw3 100 100 100 -ct3 "both" "both" "both" -cl3 "center" "center" "center";
button -label "X" -command "mirrorcallback 1";
button -label "Y" -command "mirrorcallback 2";
button -label "Z" -command "mirrorcallback 3";
setParent ..;
text -h 50 -align "center" -label "RADIAL";
setParent..;
rowLayout -numberOfColumns 3 -cw3 100 100 100 -ct3 "both" "both" "both" -cl3 "center" "center" "center";
button -label "Radial X" -command "radialcallback 1";
button -label "Radial Y" -command "radialcallback 2";
button -label "Radial Z" -command "radialcallback 3";
setParent ..;
columnLayout -cat "both" 0 -cal "center" -cw 300;
text -h 50 -align "center" -label "Number of Pieces";
setParent ..;
columnLayout -co "both" 125 -cw 300;
intField -w 50 -minValue 3 -value 3 NumSides;
window -edit -wh 310 280 QuickSymm;
showWindow QuickSymm;
global proc mirrorcallback(int $Linear)
{
switch($Linear)
{
case 1:
duplicatePreset(1,0,1,0,0,0,0,0,0,0,0,0,0,0,-1,1,1);
break;
case 2:
duplicatePreset(1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,-1,1);
break;
case 3:
duplicatePreset(1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,-1);
break;
default:
break;
}
}
global proc radialcallback(int $MirrorAxis)
{
int $numInstances = `intField -q -value NumSides`;
float $Division = 360 / float ($numInstances);
switch($MirrorAxis)
{
case 1:
duplicatePreset(--$numInstances,0,1,0,0,0,0,0,0,0,0,$Division,0,0,1, 1,1);
break;
case 2:
duplicatePreset(--$numInstances,0,1,0,0,0,0,0,0,0,0,0,$Division,0,1, 1,1);
break;
case 3:
duplicatePreset(--$numInstances,0,1,0,0,0,0,0,0,0,0,0,0,$Division,1, 1,1);
break;
default:
break;
}
};