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
)
Добрый день. Не стал создавать новую тему для короткого вопроса. Прошу помочь со скриптом. В строке:
CoronaColorCorrect inputTexmap🙁 meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?
Тони НикДобрый день. Не стал создавать новую тему для короткого вопроса. Прошу помочь со скриптом. В строке:
CoronaColorCorrect inputTexmap🙁 meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?
Материал выбранного объекта: [ICODE]$.material[/ICODE]
Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)
Тони Ник
Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)
Владислав БодюлПопробуй вместо [ICODE]inputTexmap[/ICODE] использовать [ICODE]map[/ICODE]
Почему-то работает вариант с именем материала:
meditMaterials[9].texmapDiffuse = meditMaterials[9].texmapDiffuse.map
Но, не работает с материалом выбранного объекта:
$.material.texmapDiffuse = $.material.texmapDiffuse.map
В чём может быть проблемма?
Подскажите пожалуйста создал панельку с кнопками в maxscript, теперь хочу на кнопки закинуть готовые скрипты. Что-то не срабатывает. Пробую код назначения на кнопку такого типа:
(
button 'btn1' "Script01" pos:[5,10] width:148 height:22 align:#left
on btn1 pressed do
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Подмастерье Йода (Сhin@man)
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
В polyOp нет такого метода.
Подмастерье Йода (Сhin@man)
LastJedi
Ну и это не единственная проблема в скрипте…
Все [ICODE]do[/ICODE] надо заменить на [ICODE]then[/ICODE], поскольку [ICODE]do[/ICODE] не подразумевает использование блока [ICODE]else[/ICODE].
Во всех циклах идентичные ошибки. Вместо: должно быть что-то типа:.Если я правильно понял задумку.
Подмастерье Йода (Сhin@man)
Подмастерье Йода (Сhin@man)
Подмастерье Йода (Сhin@man)
Тони Ник
CoronaColorCorrect inputTexmap🙁 meditMaterials[2].texmapDiffuse)
Чем надо заменить meditMaterials[2], чтобы скрипт работал не с материалом из ячейки, а с материалом выбранного объекта?
LastJedi
Тони Ник
Тони Ник
Ещё вопрос если можно. Как составить строку скрипта, чтобы было обратное действие? Чтобы вместо карты Color Correction поставить map(карту) которая внутри него в канал Diffuse, как бы отменить действие?)
Владислав Бодюл
Тони Ник
Владислав Бодюл
Тони Ник
meditMaterials[9].texmapDiffuse = meditMaterials[9].texmapDiffuse.map
Но, не работает с материалом выбранного объекта:
$.material.texmapDiffuse = $.material.texmapDiffuse.map
В чём может быть проблемма?
Владислав Бодюл
Тони Ник
Тони Ник
(
button 'btn1' "Script01" pos:[5,10] width:148 height:22 align:#left
on btn1 pressed do
Вложения
Тони Ник
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
(
)
Тони Ник