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

как вписать в скрипт select?

Тема в разделе "Maya", создана пользователем General007, 6 дек 2009.

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

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    нужно написать короткий скрипт
    чтобы при выборе объекта выполнялась определенная команда
    например: print Objekt1;
    пробовал:
    if(select -r objekt1)
    {
    print Objekt1;
    }
    но ничего не получается
    в такой строчке срабатывает только на изменения параметра какого-нить атрибута....
    пожалуйста, подскажите как написать эту строчку правильно?
     
  2. Dark™ vip

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

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Код:
    global proc msg() {
    	print(`ls -sl`);
    }
    scriptJob -ct "SomethingSelected" "msg()";
    
    Думаю, ясно будет, как сделать срабатывание на определенный объект, если надо.
     
  3. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    насколько понял это как то так нужно:

    global proc msg() {
    delete objekt2(`ls -sl objekt1`);
    }
    scriptJob -ct "SomethingSelected" "msg()";
    но при этом он и объект 1 удаляет вместе с объектом2

    еще
    переключение на камеру1 не срабатывает
    я нигде не нашел команд переключения
    а майя выдает такое:
    lookThroughModelPanel camera1 modelPanel4;
    как отдельная строчка - работает
    но тут мне ничего не понятно
    например - что это за 14?
    и подобное не работает
    global proc msg() {
    delete objekt2(`ls -sl objekt1`);
    }
    scriptJob -ct "SomethingSelected" "msg()";
    если есть ссылка на грамотный урок или инфу
    был бы оч. признателен
    или объясните пожалуйста тут
     
  4. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    int $s;

    $s= 0;

    if ($s == 1)
    {
    print "HI";
    }
    если переменной $s присвоить значение 1
    то срабатывает принт...
    как сделать зависимость переменной $s от select -r object1 ?
    т.е. при выделение объекта 1 переменная $s равнялась 1
     
  5. Slavenin

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

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    то что удаляются оба объекта это как раз нормально, так как это прописано в скрипте, ты скажи что тебе надо конкретно?

    Dark™ уже сказал как надо сделать, просто дабавлю пару комментариев.

    для начала мы объявляем глобальную процедуру которая будет выполняться при наступлении определенного события:
    global proc msg()
    {
    print(`ls -sl`);
    }

    теперь командой scriptJob мы присоединяем к событию выделения ранее объявленную процедуру msg() и майка при выделении объекта будет выполнять ее, эта процедура будет печатать имя выделенного объекта.
    scriptJob -ct "SomethingSelected" "msg()";

    если исходную процедуру изменить на:

    global proc msg()
    {
    delete (`ls -sl`);
    }

    то выделенный объект будет удаляться, думаю теперь понятно, а на будущее читайте справку, в майке великолепный хэлп!
     
  6. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    мне нужно чтобы при выделении определенного объекта - например objekt1
    переключался вид вьюпорта на камеру1
    ну и далее - ели кликнуть по объекту 2
    то скажем - на камеру frak
    и .д.

    но не могу понять принцип....(((
    затупил
    даже неожиданно для себя
    почему-то мне упорно иф навязывается....
     
  7. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    справку
    как раз пол дня и читал
    но я туп в аглицком
    а перевод гугла
    на айс
    вот я и туплю...
     
  8. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    string $sel[] = ls -sl; задает переменной $sel имя выбранного объекта
    if ($sel == object1) неправильный синтаксис - но надеюсь идея понятна
    {
    необходимая команда
    };

    как правильно написать - if ($sel == object1) ?????
    т.е синтаксис
     
  9. Slavenin

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

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    if ($sel[0] == "object1")
     
  10. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    теперь чтобы это действовало постоянно
    а не только во время запуска скрипта
    нужно создать цикл?
    или я что то не понимаю?
    ну т.е. чтобы объект1 стал вроде постоянно действующей кнопки на все время работы со сценой
    выполняя заданную команду при выборе его
     
  11. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    string $sel[] = `ls -sl`;
    if ($sel[0] == "object1")
    {
    print "у вас получилось";
    };

    срабатывает
    единожды
    если при вызове скрипта был выделен object1
     
  12. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    global proc msg() {
    string $sel[] = `ls -sl`;
    if ($sel[0] == "object1")
    {
    print "у вас получилось";
    select -d;
    };

    if ($sel[0] == "object2")
    {
    lookThroughModelPanel side modelPanel4;
    select -d;
    };

    if ($sel[0] == "object3")
    {
    lookThroughModelPanel persp modelPanel4;
    select -d;
    };

    }
    scriptJob -ct "SomethingSelected" "msg()";


    вот так работает
    хотя и несколько кривавато
    как наиболее эффективно доработать задумку?
     
  13. Slavenin

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

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    вот так вот, если необходим просмотр из камеры, а вообще почитай поподробнее про эту комманду много нового узнаешь :), в том числе то что вместо камеры можно использовать любой объект

    global proc msg()
    {
    string $sel[] = `ls -sl`;
    if ($sel[0] == "object1")
    {
    lookThru camera1;
    };
    //можно добавить еще условия и действия

    }
    scriptJob -ct "SomethingSelected" "msg()";
     
  14. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    )))))
    Спасибо!!!!
     
  15. Slavenin

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

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    здесь жмут на кнопочку ;)
     
  16. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    Slavenin - тебе уже 2 раза жал)))))
     
  17. General007

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

    С нами с:
    18.04.2009
    Сообщения:
    182
    Симпатии:
    0
    Баллы:
    11
    а почему вот тут не выходит:
    создаем 2е сферы
    pSphere1
    pSphere2

    pSphere1 ставим в зависимость от pSphere2 ориентом

    пишем:


    $por = `getAttr " pSphere1.rotateX"`;

    if ($por >= 40)
    {
    print "ура";
    };

    если повернуть pSphere2 по оси Х на 50градусов
    то print "ура" не срабатывает

    но если:

    select -r pSphere1

    то срабатывает

    т.е. команда срабатывает только в случае ( во время) выделения
    тоже самое происходит и при вводе значений непосредственно в атрибут
    или по средствам Ротате тул
    все одно нужно снять выделение и вновь выделить pSphere1

    как это исправить?

    т.е. выполнялась нужная команда ( например принт)при изменении атрибутов без всяких выделений объекта

    и почему вообще так?

    приношу прощение за то что уже похоже измучил всех...)))))
     
Модераторы: Dark™, Skif

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