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

Итерирование Point3 и свойств объекта из списка

Тема в разделе "MAXScript", создана пользователем Артур Сиятелев, 28 июн 2014.

Модераторы: Savin Denis
  1. Артур Сиятелев

    Артур Сиятелев Пользователь сайта

    С нами с:
    29.07.2013
    Сообщения:
    4
    Симпатии:
    1
    Баллы:
    2
    Здравствуйте!

    Проблема №1
    Пытаюсь довести до ума скрипт для исправления проблем с некорректным значением scale для геометрии в выборке (например, после использования Mirror компоненты .scale — отрицательные)

    Код:
    if (selection.count>0) do (
        for o in selection where superclassof o == geometryClass do (
            isScaleNormal = true
            for c in o.scale do (
                if (c < 0) then isScaleNormal = false
            )
            if (not isScaleNormal) then (
                addModifier o XForm
                addModifier o normalModifier
            )
        )
    )
    
    Вопрос в том, как проитерировать o.scale (Point3)? Текущая реализация выдает ошибку
    -- No "map" function for [-1,-1,-1]
    P.S. Формально можно вручную трижды записать if для (o.scale.x/y/z < 0) или (o.scale[1/2/3] < 0). Хочется найти лаконичный вариант.

    Проблема №2
    Код:
    theBox = box() -- подопытный объект
    properties = #("name", "wireColor", "pos") -- массив с именами свойств
    -- требуется вывести значения свойств, имена которых содержатся в массиве
    for p in properties do print (magicFunction theBox p)
    
    Существует ли в природе magicFunction?

    Заранее спасибо!
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Код:
    for i=1 to 3 do (if (o.scale[i] < 0) then isScaleNormal = false)
    Да. magicFunction называется getProperty.
     
    Артур Сиятелев нравится это.
  3. Артур Сиятелев

    Артур Сиятелев Пользователь сайта

    С нами с:
    29.07.2013
    Сообщения:
    4
    Симпатии:
    1
    Баллы:
    2
    Ну и раззява же я, сам писал про o.scale для i от 1 до 3.
    igorznag, большое спасибо!
     
Модераторы: Savin Denis

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