Скрипт не повлияет на один объект только на несколько - PullRequest
0 голосов
/ 27 октября 2018

Я не понимаю, почему я получаю ошибку, когда применяю этот скрипт к одному объекту.На нескольких объектах это работает отлично.

Во-вторых, перед запуском скрипта мне нужно вручную преобразовать некоторый объект в сцене в ePoly, иначе строка 'quadrify' в скрипте не будетработать на всех ... (похоже на ошибку, но это произошло и в предыдущей версии, я использую Max 2017).

try (destroydialog ConvertToEPoly) catch()

rollout ConvertToEPoly "Edit Poly and Quadrify v3.0"

    (
        label lab1 "-- Convet to ePoly and Quadrify --" 
        button b1 "Convert" pos:[35,27] height: 60 width: 150 
        progressbar Progress "Progrres" height: 25 color: orange pos: [13,95]
        on b1 pressed do 

        (

                    MyArray = selection as array
                    for i in 1 to selection.count do
                        (
                            convertToPoly $[i]
                            select $[i]
                            PolyToolsModeling.Quadrify true false
                            Progress.value = (100.0*i/MyArray.count) 
                            if Progress.value>99 do (Progress.value=0)
                            completeRedraw()
                            select MyArray

                        )

        )


    )

createdialog ConvertToEPoly height: 130 width: 220

1 Ответ

0 голосов
/ 25 января 2019

Не уверен, что вы уже нашли решение для этого, но я подумал, что я бы поспешил увидеть, потому что здесь пока нет ответа.

Когда вы запускаете это на одном объекте,'$' не обрабатывается как массив, а как отдельный объект.Это означает, что вместо доступа к самому объекту вы обращаетесь к свойству объекта (в этом случае ошибка указывает на «SubAnim: Visibility»).

Я возился с вашим кодом и пришелс решением, которое работает как для одиночного, так и для множественного выбора:

try (destroydialog ConvertToEPoly) catch()

rollout ConvertToEPoly "Edit Poly and Quadrify v3.0"

    (
        label lab1 "-- Convet to ePoly and Quadrify --" 
        button b1 "Convert" pos:[35,27] height: 60 width: 150 
        progressbar Progress "Progrres" height: 25 color: orange pos: [13,95]
        on b1 pressed do 

        (           
            MyArray = selection as array
            count = 1
            for obj in MyArray do
                (                           
                    convertToPoly obj
                    select obj
                    PolyToolsModeling.Quadrify true false
                    Progress.value = (100.0*count/MyArray.count)                            
                    completeRedraw()
                    count = count + 1
                )
            Progress.value = 0
            select MyArray
        )
    )

createdialog ConvertToEPoly height: 130 width: 220

Это работает, потому что весь ваш выбор обрабатывается как массив, даже если у вас выбрана только одна вещь (следовательно, for obj in MyArray do встрока 12).

Ура!

...