我在Maya写了一个MEL脚本。所以我想选择一个关节,然后运行MEL脚本,它选择该关节及其所有子节点。我对MEL很新,所以运行代码时会抛出一堆错误。你能帮助我减少错误或更好地摆脱所有错误吗?
剧本:
string $joints[];
string $current[] = 'ls -selection';
proc selectJoints (){
if ('searchJoints($joints)' == 0){
$joints['size($joints)'] = $current[0];
pickWalk -d down;
$current[0] = 'ls -sl';
selectJoints();
}
else{
pickWalk -d right;
$current[0] = 'ls -sl';
if('searchJoints($joints)' == 0){
selectJoints();
}
else{
pickWalk -d up;
$current[0] = 'ls -sl';
if($current[0] == $joints[0]){
selectJoints();
}
}
}
return;
}
select ($Joints);
proc int searchJoints (string $jns[]){
int $result = 0;
for ($joint in $jns[]){
if ($current[0] == $joint){
return 1;
}
}
return 0;
}
谢谢!
答案 0 :(得分:0)
所以,我知道你的问题是MEL,我很抱歉没有能够帮助你,但我想我可以用python和pymel帮助你。
在脚本编辑器的Python选项卡中尝试此代码:
import pymel.core as pm
# get selected joint
selectedJoint = pm.selected()[0]
#get all children from the selected joint and puts it in a list
joints = selectedJoint.listRelatives(allDescendents = True)
#adds first selected joint to same list
joints.append(selectedJoint)
#clears selection
pm.select(clear = True)
#loop thru list of joints
for item in joints:
#toggle selection on selected joint and all its descendents
pm.select(item, tgl = True)
我不知道为什么要使用MEL,我直接用pymel开始,它看起来更强大。你能告诉我MEL的原因吗?...我想我可能会错过一些东西。无论如何,我认为这个简短的代码可以解决问题。祝好运!请注意,那里没有故障保险箱。因此,请确保在运行脚本之前选择一个要运行的联合。