1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем DEL, 29 янв 2009.

Модераторы: Dark™, Skif
  1. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    Привет, столкнулся с такой проблемой :
    Написал код, который добавляет к именам обьектов префикс. Код работает нормально ,но он ведет себя странно , когда надо переименовать связку костей. Тогда она добвляет префикс таким образом, что каждый потомок имеет введеный мною префикс плюс строку с именами всех ее родителей. В итоге последня кость в иерархии имеет очень длиное имя:) .
    Дело в том, что это происходит именно со связкой костей. Если они вне связки , то все нормально. Даже создав, ту же самую связку(родитель потомок) из нескиольких сфер или других обьектов то код работает так, как должен это делать. Где я ошибся?
    Вот собсна код :





    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;
    }
     
  2. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    А 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;
    }
    
    и почему ошибка выводится позже? Тем не менее, запустил код и все вроде прошло нормально.
     
  3. DEL

    DEL Активный участник

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

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

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Ну это происходит из-за того, что имена потомков внутри родителя остаются неизменными, после дублирования. И для того, чтобы выделить один из аналогичных объектов под разными родителями, надо указывать "{родитель}|{потомок}", что воспринимается командой ls -sl как единое целое. Потом, когда создается имя, | просто убирается как недопустимый символ.
     
  5. DEL

    DEL Активный участник

    С нами с:
    20.04.2005
    Сообщения:
    380
    Симпатии:
    0
    Баллы:
    13
    Теперь понятно откуда мая берет сообщение об удалении недопустимих символов.
    Спасибо.
     
Модераторы: Dark™, Skif

Поделиться этой страницей