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

Помогите со скриптом

Подмастерье Йода (Сhin@man)

Активный участник
Рейтинг
14
есть вот такой скрипт

macroScript SetPivotBySelection
category: "-China-"
buttonText: "Set Pivot by Selection"
tooltip: "Sets pivot of the selected object(s) based on the selection type"
(
on isEnabled return selection.count != 0

on execute do
(
if selection.count == 0 then return

local sel = selection as array

if classOf sel[1] == Editable_Poly do
(
local vertSel = polyOp.getVertSelection sel[1]
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
polyOp.setPivot sel[1] verts
)
else if classOf sel[1] == PolyMeshObject do
(
local vertSel = polyOp.getVertSelection sel[1].baseObject
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].baseObject.verts[vertSel[i]]
polyOp.setPivot sel[1] verts
)
else if classOf sel[1] == Editable_Mesh do
(
local vertSel = meshOp.getVertSelection sel[1]
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
polyOp.setPivot sel[1] verts
)
else
(
local subObjLevel = sel[1].currentSubObjectLevel
case subObjLevel of
(
1:
(
local vertSel = polyOp.getVertSelection sel[1]
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
polyOp.setPivot sel[1] verts
)
2:
(
local edgeSel = polyOp.getEdgeSelection sel[1]
local edges = for i = 1 to edgeSel.count where edgeSel collect sel[1].edges
polyOp.setPivot sel[1] edges
)
3:
(
local faceSel = polyOp.getFaceSelection sel[1]
local faces = for i = 1 to faceSel.count where faceSel collect sel[1].faces
polyOp.setPivot sel[1] faces
)
)
)
)
)

global myCustomRollout
if doesFileExist (getDir #userScripts + "\\myCustomRollout.rol"😉 do
(
myCustomRollout = loadRolloutFile (getDir #userScripts + "\\myCustomRollout.rol"😉
destroyDialog myCustomRollout
)

myCustomRollout = newRolloutFloater "Custom Rollout" 150 200
addRollout myCustomRollout (SetPivotBySelection.create())

и вроде все верно....но он не пашет...хоть убей

LastJedi

Знаток
Рейтинг
27
А что такое [ICODE]polyOp.setPivot[/ICODE]?
В polyOp нет такого метода.

LastJedi

Знаток
Рейтинг
27
Очевидно вот так: [ICODE]sel[1].pivot = [координвты][/ICODE], предварительно рассчитав нужные координаты.

Ну и это не единственная проблема в скрипте…

Все [ICODE]do[/ICODE] надо заменить на [ICODE]then[/ICODE], поскольку [ICODE]do[/ICODE] не подразумевает использование блока [ICODE]else[/ICODE].

Во всех циклах идентичные ошибки. Вместо:
local verts = for i = 1 to vertSel.count where vertSel collect sel[1].verts
должно быть что-то типа:
local verts = for i = 1 to vertSel.count where vertSel[i] collect sel[1].verts[i]
.Если я правильно понял задумку.

Тони Ник

Мастер
Рейтинг
89
Добрый день. Не стал создавать новую тему для короткого вопроса. Прошу помочь со скриптом. В строке:
CoronaColorCorrect inputTexmap🙁 meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?

LastJedi

Знаток
Рейтинг
27
Тони НикДобрый день. Не стал создавать новую тему для короткого вопроса. Прошу помочь со скриптом. В строке:
CoronaColorCorrect inputTexmap🙁 meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?
Материал выбранного объекта: [ICODE]$.material[/ICODE]

Тони Ник

Мастер
Рейтинг
89
meditMaterials[2].texmapDiffuse = Color_Correction map🙁 meditMaterials[2.texmapDiffuse)

Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)

Владислав Бодюл

Активный участник
Рейтинг
15
Тони Ник
Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)
meditMaterials[2].texmapDiffuse = meditMaterials[2].texmapDiffuse.inputTexmap

Тони Ник

Мастер
Рейтинг
89
Владислав Бодюл
meditMaterials[2].texmapDiffuse = meditMaterials[2].texmapDiffuse.inputTexmap
Выдаёт сообщение об ошибке: --Unknown property: "inputTexmap" in Map Color Correction

Владислав Бодюл

Активный участник
Рейтинг
15
Тони НикВыдаёт сообщение об ошибке: --Unknown property: "inputTexmap" in Map Color Correction
Попробуй вместо [ICODE]inputTexmap[/ICODE] использовать [ICODE]map[/ICODE]

Тони Ник

Мастер
Рейтинг
89
Владислав БодюлПопробуй вместо [ICODE]inputTexmap[/ICODE] использовать [ICODE]map[/ICODE]
Почему-то работает вариант с именем материала:
meditMaterials[9].texmapDiffuse = meditMaterials[9].texmapDiffuse.map
Но, не работает с материалом выбранного объекта:
$.material.texmapDiffuse = $.material.texmapDiffuse.map
В чём может быть проблемма?

Тони Ник

Мастер
Рейтинг
89
Владислав БодюлМожет выделено несколько объектов?
Заработало! Возможно, был какой-то глюк Макса. Спасибо!

Тони Ник

Мастер
Рейтинг
89
Подскажите пожалуйста создал панельку с кнопками в maxscript, теперь хочу на кнопки закинуть готовые скрипты. Что-то не срабатывает. Пробую код назначения на кнопку такого типа:

(
button 'btn1' "Script01" pos:[5,10] width:148 height:22 align:#left
on btn1 pressed do

Вложения

Тони Ник

Мастер
Рейтинг
89
Весь скрипт:
rollout unnamedRollout "DiffuseColorTEx 🙂" width:162 height:130
(
button btn1 "Script01" pos:[5,10] width:148 height:22
button btn2 "Script02" pos:[5,40] width:148 height:22
button btn3 "Script03" pos:[5,70] width:148 height:22
button btn4 "Script04" pos:[5,100] width:148 height:22
on unnamedRollout open do
x=10
on btn1 pressed do
x=12
)
createDialog unnamedRollout width:162 height:130
(
button 'btn1' "Script01" pos:[5,10] width:148 height:22 align:#left
on btn1 pressed do
(
)

Тони Ник

Мастер
Рейтинг
89
Между последними кавычками вставляю нужный скрипт, но увы(