Porsche — Underwater road
3d award

MEL синтаксис

Online|Offline A.D.I.D.A.S. 0.0 0.0 29 сентября 2011 в 08:41 #0

Аватар A.D.I.D.A.S.
Решил взяться за MEL более серьёзно чем один раз прочитать главу книги у Цыпцына .
Не могу взять в толк где у когда нужно ставить скобки , кавычки и прочие вещи . Напрягает немного когда что то придумал на MEL , а сделать не можеш из-за того что где то например скобки не стоят . У Цыпцына по этому поводу только самую малость .
Например вот кусок кода
if( objExists ( "myCurve" )==1)
{
delete"myCurve" ;
}

Почему myCurve в первом случае взято и в кавычки и в скобки а во втором только в кавычки ?

Online|Offline venik 64.5 942.3 29 сентября 2011 в 11:07 #0

Аватар venik
Ну, я не знаком с MEL, но по логике вещей, сравнивая с другими языками программирования, попытаюсь ответить. Вы ставите условие, которое проверяет существование вашей myCurve. Это делается при помощи if. Далее, чтобы проверить, вам нужна какая-то функция. В данном случае это objExists (дословно с англицкого "существование объекта"). Ну а у этой функции должна быть возвращаемая переменная, которую надо взять в скобки, но так как переменной является имя кривой, то его нужно взять еще и в кавычки! Не знаю, понятно или нет, но тут ничего сложного нету)

Online|Offline venik 64.5 942.3 29 сентября 2011 в 11:10 #0

Аватар venik
Далее идет команда delete. Команда не является функцией, поэтому нет возвращаемой переменной, поэтому и не нужны скобки, а только кавычки. А все потому, что, опять таки, это имя объекта (кривой). Смею предположить, что для просто переменной и кавычки не будут нужны

Online|Offline A.D.I.D.A.S. 0.0 0.0 29 сентября 2011 в 18:50 #0

Аватар A.D.I.D.A.S.
venik спасибо . Примерно такой ответ я и хотел увидеть . Правда немного непонял разницы между командой и функцией . Если я правильно понял различие в возвращаемой переменной ? То есть если есть то функция , если нет , команда .
PS . Пока писал подумал вот что . Каманда выполняет реальное действие в сцене ( удаляет объект ) , а функция выдает какие нить данные ( проверяет существование объекта ) . Так ?
PSS . Сори если туплю . Про програмирование только слышал пока .

Online|Offline venik 64.5 942.3 29 сентября 2011 в 21:47 #0

Аватар venik
Пока писал подумал вот что . Каманда выполняет реальное действие в сцене ( удаляет объект ) , а функция выдает какие нить данные ( проверяет существование объекта ) . Так ?
Ну да, в принципе правильно думаете.
Если подробней, то, функция, после того как выполнилась, возвращает какое-либо значение. В данном случае, т.к. это логическая операция, после себя она может оставить два значения: 1 или 0. Что и можно наблюдать в вашем примере - возвращенное значение функции objExists сравнивается с единицей. Если объект существовал в сцене - функция возвратит 1. Единица сравнится с единицей (и будет ей равна) и объект удалится. Если бы объекта не было, objExists возвратила бы 0, и условие не выполнилось бы.

Online|Offline venik 64.5 942.3 29 сентября 2011 в 21:53 #0

Аватар venik
Чтобы лучше понять разницу, могу написать так, ''+''(сложение) или ''-''(вычитание) - тоже команды
А функцию вы можете написать и свою. Например, которая будет выполнять проверку на наличие несклееных ребер или вершин. В ней будет куча строк кода, а вызываться она будет по имени, которое вы придумаете. В скобках будете указывать имя объекта который хотите проверить. И она тоже будет возвращать 1 или 0

Online|Offline A.D.I.D.A.S. 0.0 0.0 8 октября 2011 в 22:17 #0

Аватар A.D.I.D.A.S.
Народ плиз объясните . Почему например в этом коде ( [code]if( `obgExists Sphere` ){ действие ; }[/code] )необязательно писать ''==1'' . Никак в толк не возьму . Вроде или у Цыпцына или еще где то читал по этому поводу , но что и где уже непомню .
P.S. Предыдущий вопрос тоже в силе .
Что бы оставить сообщение вам необходимо войти или зарегистрироваться!

Форумещё

Блогиещё

Популярные урокиещё

Реклама

3dmir.ru - Вся компьютерная графика
      www.megastock.ru