Render.ru

MEL rename prefix - Проблема с кодом

DEL

Активный участник
Рейтинг
15
#1
Привет, столкнулся с такой проблемой :
Написал код, который добавляет к именам обьектов префикс. Код работает нормально ,но он ведет себя странно , когда надо переименовать связку костей. Тогда она добвляет префикс таким образом, что каждый потомок имеет введеный мною префикс плюс строку с именами всех ее родителей. В итоге последня кость в иерархии имеет очень длиное имя:) .
Дело в том, что это происходит именно со связкой костей. Если они вне связки , то все нормально. Даже создав, ту же самую связку(родитель потомок) из нескиольких сфер или других обьектов то код работает так, как должен это делать. Где я ошибся?
Вот собсна код :





global proc renNombra(){


string $objetos[] = `ls -sl` ;
int $cantObjetos = size($objetos);
int $i;

//get string

string $prefijo = `textField -q -tx tFldPrefix`;


//declare necessary variables

string $nombreCortNuevo;



//add the prefix


for ($i = 0 ; $i<$cantObjetos; $i++){


if($prefijo == "")
{
string $nombreCortNuevo = ($prefijo + $objetos[$i]);

rename $objetos[$i] $nombreCortNuevo;
}
else{

string $nombreCortNuevo = ($prefijo + $objetos[$i]);

rename $objetos[$i] $nombreCortNuevo;
}

//error message if text filed is blank

if($prefijo == "")
{
error "Text field is blank!";

}
}
}




// UI
global proc ki_prefix(){
if (`window -exists kiRenWindow`)
deleteUI kiRenWindow;
window -t "Ikas Rename Window" -sizeable true -titleBar true kiRenWindow;
columnLayout;
rowColumnLayout;

text -l "Prefix" -align "left";
textField -tx "" tFldPrefix;
setParent"..";

separator -style "none" -w 300 -h 10;
button -label "Add" -align "center" -c renNombra addButton;

showWindow kiRenWindow;
}
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#2
А Modify -> Prefix Hierarchy Names не подходит? Потом не понятен смысл if else здесь:

Код:
if($prefijo == "")
{
string $nombreCortNuevo = ($prefijo + $objetos[$i]);

rename $objetos[$i] $nombreCortNuevo;
}
else{

string $nombreCortNuevo = ($prefijo + $objetos[$i]);

rename $objetos[$i] $nombreCortNuevo;
}
и почему ошибка выводится позже? Тем не менее, запустил код и все вроде прошло нормально.
 

DEL

Активный участник
Рейтинг
15
#3
Спасибо за ответ.
Об Modify -> Prefix Hierarchy Names не знал. Почему то не обратил внимание.
Потом не понятен смысл if else здесь:
И сдесь вы парвы :)
На счет костей. Я выложу сцену со скелетом. А вы попробуйте Ctrl+D с связкой руки, начиная с left_shoulder_jnt, а потом с помощю моего кода добавьте префикс.

Вот сцена. http://rapidshare.com/files/191038899/eSkeleto.mb
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#4
Ну это происходит из-за того, что имена потомков внутри родителя остаются неизменными, после дублирования. И для того, чтобы выделить один из аналогичных объектов под разными родителями, надо указывать "{родитель}|{потомок}", что воспринимается командой ls -sl как единое целое. Потом, когда создается имя, | просто убирается как недопустимый символ.
 

DEL

Активный участник
Рейтинг
15
#5
Теперь понятно откуда мая берет сообщение об удалении недопустимих символов.
Спасибо.
 
Сверху