Render.ru

Вопросы по Max Script (всего понемногу)

k3b3

Активный участник
Рейтинг
16
Подскажите как выделить одинаковый модификатор у нескольких объектов.
Для примера нужно выделить одинаковый мод Edit_poly у двух выделенных объектов.
Код:
max modify mode
sel = selection
asdadsaa = modPanel.getCurrentObject()
select sel
modPanel.setCurrentObject asdadsaa
Если мы на двух объектах создаем общие модификаторы #edit_poly, то после выполнения
Код:
modPanel.setCurrentObject asdadsaa
выделяется только 1 объект
 
Последнее редактирование:

DASLON

Активный участник
Рейтинг
13
справочник бы на русском, охота хорошенько этот макс скрипт изучить
 

Vova

Знаток
Рейтинг
33
Добрый день! подскажите пожалуйста, можно ли автоматизировать накидывание модификаторов в максе ?
Переписал с МаксЛистнера нужные строки

Код:
actionMan.executeAction 0 "40021"  -- Selection: Select All

macros.run "Modifier Stack" "Convert_to_Poly"
modPanel.addModToSelection (Normalmodifier ()) ui:on
modPanel.addModToSelection (Normalmodifier ()) ui:on
modPanel.addModToSelection (smooth ()) ui:on

$Box001.modifiers[#Smooth].smoothingBits = 1

maxOps.CollapseNode $Teapot001 off
maxOps.CollapseNode $Teapot002 off
maxOps.CollapseNode $Box001 off
И все бы ничего но я хотел сделать УНИВЕРСАЛЬНЫЙ скрипт а не для 2х чайников и бокса. Мб кто ни будь поможет мне с этой оказией ?) или хотя бы сказать возможно это без "программистских" всех этих приколов с функциями и массивами и определениями имен ?
 

Игорь Видлацкий (Stalker_Lom)

Платиновый спонсор
Рейтинг
153
>"программистских" всех этих приколов с функциями и массивами
MaxScript настолько ужасен, что мне с ним все эти годы было сложно даже имея за плечами образование инженер-программиста. Не из за его сложности, а из за... Его кринжовости?..

Ближе к делу.
Автоматизировать накидывание модификаторов, конечно, можно:

Код:
for obj in (selection as array) do --В скриптах макс выделенный массив воспринимает только через selection, но не через $
        (obj.modifiers[#TurboSmooth].iterations = 2) --Накидываем турбосмус и сразу же на него 2 итарации, чтоб самому не щёлкать
Код:
-- Выделенное конвертирует в поли и ставим значение weld на православные 0.001 во славу автоматизации
for obj in (selection as array) do
    (
    convertToPoly obj
    obj.weldThreshold = 0.001
    )
Вообще, держи-ка мои простенькие скрипты для ознакомления - мож что полезного надёргаешь, как и я в своё время.
 

Вложения

Симпатии: Vova

Vova

Знаток
Рейтинг
33
>Вообще, держи-ка мои простенькие скрипты для ознакомления - мож что полезного надёргаешь, как и я в своё время.

Спасибо дорогой! Поизучаю обязательно. Я сам тоже колледж на программиста закончил, но что-то сложней табличек экселя не люблю от слова совсем. Хотя иной раз встречаются интересные задачки требующие несколько итераций в самих функциях. Во общем иногда интересно, но проще как по мне оставить все это нейросеткам))
Кароч код получился таким, и без цикла for необойтись эх)))


UPD:Код если кому интересно получился такой. Пригодитя для "стоков"=)
Код:
actionMan.executeAction 0 "40021"  -- Selection: Select All
selection.pos = [0,0,0]
selection.rotation = quat 0 0 0 1
macros.run "Modifier Stack" "Convert_to_Poly"
modPanel.addModToSelection (Normalmodifier ()) ui:on
modPanel.addModToSelection (Normalmodifier ()) ui:on
modPanel.addModToSelection (smooth ()) ui:on
for obj in selection do
    (
        local SmoothMod = smooth()
        SmoothMod.smoothingBits = 1
        addModifier obj SmoothMod
        collapseStack obj
    )
macros.run "PolyTools" "ResetXForm"
 
Последнее редактирование:
Рейтинг
169
Приветствую! Может кто знает как побороть некорректную работу стандартного .selectOverlappedFaces() В некоторых случаях он перестает видит шеллы, особенно если они мелкие и на UV-холсте были отодвинуты далеко от центра. Может есть аналоги или условный регулировщик точности просчета? Я пол года назад писал в техподдержку автодеск, но ничего за это время не изменилось
 
Сверху