Render.ru

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

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

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

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

Заранее спасибо!
 
Сверху