Render.ru

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

General007

Активный участник
Рейтинг
11
#1
нужно написать короткий скрипт
чтобы при выборе объекта выполнялась определенная команда
например: print Objekt1;
пробовал:
if(select -r objekt1)
{
print Objekt1;
}
но ничего не получается
в такой строчке срабатывает только на изменения параметра какого-нить атрибута....
пожалуйста, подскажите как написать эту строчку правильно?
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#2
Код:
global proc msg() {
	print(`ls -sl`);
}
scriptJob -ct "SomethingSelected" "msg()";
Думаю, ясно будет, как сделать срабатывание на определенный объект, если надо.
 

General007

Активный участник
Рейтинг
11
#3
насколько понял это как то так нужно:

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()";
если есть ссылка на грамотный урок или инфу
был бы оч. признателен
или объясните пожалуйста тут
 

General007

Активный участник
Рейтинг
11
#4
int $s;

$s= 0;

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

Slavenin

Активный участник
Рейтинг
12
#5
то что удаляются оба объекта это как раз нормально, так как это прописано в скрипте, ты скажи что тебе надо конкретно?

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

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

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

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

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

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

General007

Активный участник
Рейтинг
11
#6
мне нужно чтобы при выделении определенного объекта - например objekt1
переключался вид вьюпорта на камеру1
ну и далее - ели кликнуть по объекту 2
то скажем - на камеру frak
и .д.

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

General007

Активный участник
Рейтинг
11
#7
справку
как раз пол дня и читал
но я туп в аглицком
а перевод гугла
на айс
вот я и туплю...
 

General007

Активный участник
Рейтинг
11
#8
string $sel[] = ls -sl; задает переменной $sel имя выбранного объекта
if ($sel == object1) неправильный синтаксис - но надеюсь идея понятна
{
необходимая команда
};

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

General007

Активный участник
Рейтинг
11
#10
теперь чтобы это действовало постоянно
а не только во время запуска скрипта
нужно создать цикл?
или я что то не понимаю?
ну т.е. чтобы объект1 стал вроде постоянно действующей кнопки на все время работы со сценой
выполняя заданную команду при выборе его
 

General007

Активный участник
Рейтинг
11
#11
string $sel[] = `ls -sl`;
if ($sel[0] == "object1")
{
print "у вас получилось";
};

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

General007

Активный участник
Рейтинг
11
#12
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()";


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

Slavenin

Активный участник
Рейтинг
12
#13
вот так вот, если необходим просмотр из камеры, а вообще почитай поподробнее про эту комманду много нового узнаешь :), в том числе то что вместо камеры можно использовать любой объект

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

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

General007

Активный участник
Рейтинг
11
#17
а почему вот тут не выходит:
создаем 2е сферы
pSphere1
pSphere2

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

пишем:


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

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

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

но если:

select -r pSphere1

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

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

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

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

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

приношу прощение за то что уже похоже измучил всех...)))))
 
Сверху