오브젝트의 사이즈를 정해서 스케일할수 있는 툴입니다.
맥스의 Scale 와 별반 차이는 없습니다..
맥스의 Scale 는 % 로 적용하는 반면 Width Resize tool 은 실제 수치로 Scale 할수 있습니다.MM , Cm , M 외 다른 unit 에 대한 현제 수치가 표시 않되고 Generic unit 에 대한 표시가 되는 버그(?) 가 있습니다. --수정완
자세한 설명은 아래 사용 동영상을 보시는것이 빠를것같습니다.
오브젝트의 사이즈를 정해서 스케일할수 있는 툴입니다.
맥스의 Scale 와 별반 차이는 없습니다..
맥스의 Scale 는 % 로 적용하는 반면 Width Resize tool 은 실제 수치로 Scale 할수 있습니다.MM , Cm , M 외 다른 unit 에 대한 현제 수치가 표시 않되고 Generic unit 에 대한 표시가 되는 버그(?) 가 있습니다. --수정완
자세한 설명은 아래 사용 동영상을 보시는것이 빠를것같습니다.
모델링할때 조금 도움이 될수 있는 툴입니다.Selection rollout
- 오브젝트의 이름을 검색하여 선택해 줍니다.(*name* 식의 검색이며 box라는 이름의 오브젝트 검색시 b,o,x,bo,ox,box로 검색할수 있습니다.)
Poly Modeling rollout
- pivot 의 위치와 0,0,0 을 기준으로 각 방향으로 잘라 낼수 있으며 Symmetry 할수 있으며 Delete 일때 offset이 가능합니다.
- Attach 선택된 모든 오브젝트를 Attach 합니다.
- Detach 엘레먼트 단위로 detach 합니다.
Transform rollout
- Move Rotate Scale 모드가 있으며 쿼드 메뉴나 맥스의 버튼에 따라 기능이 바뀝니다.Move 의 경우 0,0,0 과 선택한 오브젝트의 위치로 변경이 가능하며 오브젝트의 복사가 가능하고 Rotate 의 경우 각 축별로 각도를 입력할수 있습니다, 또한 Scale 모드의 경우 스케일 할 사이즈를 입력할수 있습니다. (축선택시 같은 비율로 스케일 됩니다)
- Flatten 은 2개 이상의 오브젝트 선택시 오브젝트의 위치를 정렬 하며 1개의 오브젝트 선택시 선택된 버텍스의 위치를 정렬 합니다.
Pivot Setting rollout
- 기존의 pivot Setting 의 기능과 동일 합니다.
Global Thread,MainThread,SecondaryThread
Fn WorkThread sender e =
(
for i = 1 to Thread.spnLoops.value do
(
If MainThread.CancellationPending Then
(
e.cancel = true
Thread.lbl2.text = "Primary Thread Aborted"
)
else
(
-- test for object 'Box01'
-- Box01'.height = i
--max zoomext sel
-- or do some nonsense calculation
local asum = i*pi
local prog = (i as float)/Thread.spnLoops.value * 100
-- MainThread.ReportProgress prog asum
Thread.lbl2.text = asum as string
Thread.pb2.value = prog
sleep 0.05
)
)
Thread.lbl2.text = "Primary Thread Complete"
Thread.pb2.value = 0
)
Fn WorkThread2 sender e =
(
for i = 1 to Thread.spnLoops.value do
(
If SecondaryThread.CancellationPending Then
(
e.cancel = true
Thread.lbl3.text = "Secondary Thread Aborted"
)
else
(
-- do some nonsense calculation
local asum = i/pi
local prog = (i as float)/Thread.spnLoops.value * 100
-- MainThread.ReportProgress prog asum
Thread.lbl3.text = asum as string
Thread.pb3.value = prog
sleep 0.025
)
)
Thread.lbl3.text = "Secondary Thread Complete"
Thread.pb3.value = 0
)
Fn MxsFn =
(
for i = 1 to Thread.spnLoops.value do
(
-- test for object 'Box01'
-- Box01'.height = i
-- max zoomext sel
-- or do some nonsense calculation
local asum = i*pi
local prog = (i as float)/ Thread.spnLoops.value * 100
Thread.lbl1.text = asum as string
Thread.pb1.value = prog
sleep 0.025
)
Thread.lbl1.text = "MXS Fn Complete"
Thread.pb1.value = 0
)
Fn UpdateThread sender e =
(
format "FnValue - % Percentage done - % \n" e.progresspercentage e.userstate
)
-- Specify the BackgroundWorker Class
MainThread = dotnetobject "System.ComponentModel.BackGroundWorker"
-- MainThread.WorkerReportsProgress = true
MainThread.WorkerSupportsCancellation = true
dotNet.addEventHandler MainThread "DoWork" WorkThread
--dotNet.addEventHandler MainThread "ProgressChanged" UpdateThread
SecondaryThread = dotnetobject "System.ComponentModel.BackGroundWorker"
SecondaryThread.WorkerSupportsCancellation = true
-- SecondaryThread.WorkerReportsProgress = true
dotNet.addEventHandler SecondaryThread "DoWork" WorkThread2
--dotNet.addEventHandler SecondaryThread "ProgressChanged" UpdateThread
rollout Thread "Running Multiple Threads in DotNet" width:728 height:147
(
GroupBox grp1 "MaxScript Function Execution" pos:[7,28] width:192 height:114
GroupBox grp2 "DotNet BackgroundWorker Class" pos:[202,7] width:522 height:135
progressBar pb1 "" pos:[19,88] width:168 height:16 color:(color 255 255 0)
GroupBox grp3 "Function Value" pos:[18,44] width:171 height:39
button btnMXstart "Start" pos:[16,110] width:173 height:23
label lbl1 "" pos:[24,61] width:160 height:18
progressBar pb2 "" pos:[394,33] width:168 height:25 color:(color 0 255 0)
GroupBox grp4 "Function Value" pos:[215,22] width:171 height:39
button btnDNstart "Start Primary" pos:[566,31] width:109 height:28
label lbl2 "" pos:[220,37] width:161 height:18
progressBar pb3 "" pos:[394,70] width:168 height:24 color:(color 30 10 190)
GroupBox grp18 "Function Value" pos:[215,62] width:170 height:39
button btnDNboth "Run Both Threads" pos:[214,105] width:461 height:28
label lbl3 "" pos:[220,78] width:158 height:18
button btncancel1 "Cancel" pos:[678,31] width:42 height:28
button btnDN2 "Start Secondary" pos:[566,67] width:109 height:28
button btnCancel2 "Cancel" pos:[678,66] width:42 height:28
spinner spnLoops "Number of Loop Iterations" pos:[114,8] width:84 height:16 range:[10,10000,100] type:#integer
button btncancelboth "Cancel" pos:[679,104] width:42 height:28
on Thread open do
(
try
(
If MainThread.IsBusy do MainThread.CancelAsync()
)
catch()
)
on btnDN2 pressed do
(
if not SecondaryThread.IsBusy do SecondaryThread.RunWorkerAsync()
)
on btnMXstart pressed do MXSFn()
on btnDNstart pressed do
(
if not MainThread.IsBusy do MainThread.RunWorkerAsync()
)
on btnDNboth pressed do
(
if (not MainThread.IsBusy) and (not SecondaryThread.IsBusy) do
(
MainThread.RunWorkerAsync()
SecondaryThread.RunWorkerAsync()
)
)
on btncancel1 pressed do
If MainThread.IsBusy Then MainThread.CancelAsync()
on btnDN2 pressed do
if not SecondaryThread.IsBusy do SecondaryThread.RunWorkerAsync()
on btnCancel2 pressed do
If SecondaryThread.IsBusy Then SecondaryThread.CancelAsync()
on btncancelboth pressed do
(
if MainThread.IsBusy do MainThread.CancelAsync()
if SecondaryThread.IsBusy do SecondaryThread.CancelAsync()
)
)
createdialog thread style:#(#style_toolwindow, #style_sysmenu)

0