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

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

Тема в разделе "MAXScript", создана пользователем -, 24 мар 2004.

Модераторы: Savin Denis
  1. Guest

    Помогите найти ошибку в строках, которые я привожу ниже. С помощью этих строк я пытаюсь найти материал "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 всё работает...
    В чём здесь проблема?
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    matID - у переременной локалная видимость внутри блока
     
  3. McST

    McST Знаток

    С нами с:
    01.06.2002
    Сообщения:
    609
    Симпатии:
    1
    Баллы:
    28
    у меня скрипт за работал я только дописал парус трочек:

    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. Guest

    СПАСИБО!

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

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