Помогите найти ошибку в строках, которые я привожу ниже. С помощью этих строк я пытаюсь найти материал "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 всё работает...
В чём здесь проблема?
у меня скрипт за работал я только дописал парус трочек:
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
)
Прав оказался Denis - переменная matID действует только внутри блока локально. У меня тоже всё заработало когда я разместил в этом же блоке выражение, выполнение которого зависело от этой переменной.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Гость
---------------------------------------------------------------
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 всё работает...
В чём здесь проблема?
Savin Denis
М Т (McST)
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
)
Гость
Прав оказался Denis - переменная matID действует только внутри блока локально. У меня тоже всё заработало когда я разместил в этом же блоке выражение, выполнение которого зависело от этой переменной.