Render.ru
Поддержать

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

Артур Сиятелев

Пользователь сайта
Рейтинг
4
Здравствуйте!

Проблема №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?

Заранее спасибо!

igorznag

Мастер
Рейтинг
103
Вопрос в том, как проитерировать o.scale (Point3)?
for i=1 to 3 do (if (o.scale[i] < 0) then isScaleNormal = false)
Существует ли в природе magicFunction?
Да. magicFunction называется getProperty.