Да, уже много времени прошло, но я подумал, может ещё кому-нибудь пригодится?! =) Не знаю, о том шла речь или нет, но сейчас я пишу один скрипт и передо мной стояла похожая задача… я видел аналогичный пример на странице справки Autodesk’a (пример с башней):http://docs.autodesk.com/3DSMAX/15/ENU/MAXScript-Help/index.html?url=files/GUID-C0BFFE27-BB59-4265-8F70-BFE8A636F7CB.htm,topicNumber=d30e642485
Но там, как и тут был приведен пример и использованием plugin’a… а мне нужно было сделать событие по кнопке в своем rollout’e … вот что получилось у меня:
Code:
if((PaintBox != undefined) and (PaintBox.isdisplayed)) do (destroyDialog PaintBox)
rollout PaintBox "Vint26: Paint Box"
(
spinner spnLength "Length:" width:120 height:16 range:[-5000,5000,0] type:#worldunits align:#left
spinner spnWidth " Width: " width:120 height:16 range:[-5000,5000,0] type:#worldunits align:#left
spinner spnHeight "Height: " width:120 height:16 range:[-5000,5000,0] type:#worldunits align:#left
checkButton ckb_PaintBox "Paint Box" align:#center height:26
tool create
(
on mousePoint click do
(
case click of
(
1: (
in coordsys grid d = ( box pos:gridPoint Height:0 isSelected:on)
convertToPoly d
polyop.setVert $ #{1} gridPoint
polyop.setVert $ #{2} gridPoint
polyop.setVert $ #{3} gridPoint
polyop.setVert $ #{4} gridPoint
polyop.setVert $ #{5} gridPoint
polyop.setVert $ #{6} gridPoint
polyop.setVert $ #{7} gridPoint
polyop.setVert $ #{8} gridPoint
)
3: (
ckb_PaintBox.checked=off
#stop
)
) --end case
)-- on execute
on mouseAbort click do(ckb_PaintBox.checked=off)
on mouseMove click do
(
case click of
(
2:(
polyop.setVert $ #{1} [((polyop.getVert $ 1).x),((polyop.getVert $ 1).y),((polyop.getVert $ 1).z)]
polyop.setVert $ #{2} [gridPoint.x,((polyop.getVert $ 2).y),((polyop.getVert $ 2).z)]
polyop.setVert $ #{3} [((polyop.getVert $ 3).x),gridPoint.y,((polyop.getVert $ 3).z)]
polyop.setVert $ #{4} [gridPoint.x,gridPoint.y,((polyop.getVert $ 4).z)]
polyop.setVert $ #{5} [((polyop.getVert $ 5).x),((polyop.getVert $ 5).y),((polyop.getVert $ 5).z)]
polyop.setVert $ #{6} [gridPoint.x,((polyop.getVert $ 6).y),((polyop.getVert $ 6).z)]
polyop.setVert $ #{7} [((polyop.getVert $ 7).x),gridPoint.y,((polyop.getVert $ 7).z)]
polyop.setVert $ #{8} [gridPoint.x,gridPoint.y,((polyop.getVert $ 8).z)]
gc()
update $
DistanceLength=((polyop.getVert $ 3).y)-((polyop.getVert $ 1).y)
spnLength.value=if DistanceLength<0 then (-DistanceLength) else (DistanceLength)
DistanceWidth=((polyop.getVert $ 2).x)-((polyop.getVert $ 1).x)
spnWidth.value=if DistanceWidth<0 then (-DistanceWidth) else (DistanceWidth)
)
3: (
polyop.setVert $ #{5} [((polyop.getVert $ 1).x),((polyop.getVert $ 1).y),gridDist.z]
polyop.setVert $ #{6} [((polyop.getVert $ 2).x),((polyop.getVert $ 2).y),gridDist.z]
polyop.setVert $ #{7} [((polyop.getVert $ 3).x),((polyop.getVert $ 3).y),gridDist.z]
polyop.setVert $ #{8} [((polyop.getVert $ 4).x),((polyop.getVert $ 4).y),gridDist.z]
gc()
update $
spnHeight.value=gridDist.z
)
)--end case
)-- on execute
)
on ckb_PaintBox changed state do (startTool create)
)--end rollout
Createdialog PaintBox 140 100