Render.ru

Помогите с скриптом!

#1
Помогите найти ошибку в строках, которые я привожу ниже. С помощью этих строк я пытаюсь найти материал "Red Wall" в Multi/Sub-Object материале, который расположен в первом слоте редактора. В результате я должен получить номер ID (параметр matID) найденного материала:
---------------------------------------------------------------
matn_array=#()
obj=$
obj.material = meditMaterials[1]
mat_name="Red Wall"
mmat = meditMaterials[1]

for i in mmat do append matn_array i.name

for n=1 to matn_array.count do
(
a = matn_array[n]
found_mat = findstring a mat_name
if found_mat != undefined then matID = n
)
-----------------------------------------------------------
Но в итоге получаю вот это сообщение об ошибке:
-- Type error: array indexmust be +ve number, got: , got: undefined

В MAXScript-listener вижу, что значение для matID неопределено (matID:undefined), хотя этот материал однозначно имеется.

Что самое интересное, при прогонке по-строчно в MAXScript-listener всё работает...
В чём здесь проблема?
 

McST

Знаток
Рейтинг
28
#3
у меня скрипт за работал я только дописал парус трочек:

matn_array=#()
obj=$
obj.material = meditMaterials[1]
mat_name="Red Wall"
mmat = meditMaterials[1]
for i in mmat do append matn_array i.name
for n=1 to matn_array.count do
(
a = matn_array[n]
found_mat = findstring a mat_name
if found_mat != undefined then matID = n else matID = "not found"
format "matID:%\n" MatID
)
 
#4
СПАСИБО!

Прав оказался Denis - переменная matID действует только внутри блока локально. У меня тоже всё заработало когда я разместил в этом же блоке выражение, выполнение которого зависело от этой переменной.
 
Сверху