home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar Special 2002 April
/
GSSH42002.iso
/
EDITOREN
/
DS
/
gmax
/
gmaxinst_1-1.exe
/
gmaxsetup11.cab
/
Macro_Isolate.mcr
< prev
next >
Wrap
Text File
|
2002-02-13
|
8KB
|
412 lines
-- Isolate Tool Script File
-- Created: Dec 2 1998
-- Last Updated: Dec 10 2000
-- Time: 5:28pm
-- Author: Frank DeLise
-- Isolate Tool Functions
-- This script creates functions for Isolating selected geometery.
--***********************************************************************************************
-- MODIFY THIS AT YOUR OWN RISK
-- Added Localization Setup
-- Functions Added
--
-- IsoLate ()
-- UnIsolate ()
-- IsoFloater ()
-- IsAnyIsoLated ()
-- IsIsolated ()
-- SetIsolated ()
-- 2/14/99 added the ability to create Object while in isolation
-- 8/28/99 fixed a bug where when a scene is reset, the animate button stayed disabled.
MacroScript Isolate
Category:"Tools"
internalCategory:"Tools"
ToolTip:"Isolate Tool"
buttontext:"Isolate Tool"
Icon:#("ViewPortNavigationControls",7)
SilentErrors:(Debug == undefined or Debug != True)
(
Persistent Global IsoLations, ISORoll, UnIsolate, IsoLate, IsoFloater, IsoHidden, IsoCamera, IOBJDel
Persistent Global IObj, IsoFrame, IsoAnimStart, IsoAnimEnd, IsoCam, IObjPosX, IObjPosY, IObjPosZ, IObjPivX, IObjPivY, IObjPivZ, IsoView, IsoViewTM, IObjRotX, IObjRotY, IObjRotZ
fn hideXRefs hide:1=
(
local numxrefs = xrefs.getXRefFileCount()
for k = 1 to numxrefs do
(
y = xrefs.getXRefFile k
if (hide == 1) then
(
y.hidden = true
y.disabled = true
)
else
(
y.hidden = false
y.disabled = false
)
)
)
fn Isolate =
(
If Isolations == True then
(
/* "Localization on" */
MessageBox "Please Un-Isolate last object before Isolating Another"
/* "Localization off" */
)
Else
(
IObj = $
IObjDel = When IObj deleted obj do
(
Isolations = False
CloseRolloutFloater IsoFloater
Max UNhide All
AnimationRange = (Interval IsoAnimStart IsoAnimEnd)
Set Animate ON
AnimButtonEnabled = True
DeleteChangeHandler IOBJDEL
/* "Localization on" */
Try (If (viewport.GetType () as string == "view_persp_user") then (Viewport.SetTM IsoView))Catch()
/* "Localization off" */
)
hideXRefs()
SubObjectLevel = 0
If IsoFloater == undefined then
(
/* "Localization on" */
IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100
AddRollout IsoRoll IsoFloater
/* "Localization off" */
)
Else
(
CloseRolloutFloater IsoFloater
/* "Localization on" */
IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100
/* "Localization off" */
AddRollout IsoRoll IsoFloater
)
-- Set View
IsoCamera = GetActiveCamera ()
/* "Localization on" */
If (viewport.GetType () as string == "view_persp_user") then (IsoView = Viewport.GetTM ())
/* "Localization off" */
IsoFrame = SliderTime
IsoAnimStart = AnimationRange.Start
IsoAnimEnd = AnimationRange.End
IObjPivX = IObj.pivot.x
IObjPivY = IObj.pivot.y
IObjPivZ = IObj.pivot.z
-- Set Pivot to Object Center
IOBJ.pivot = Selection.center
IObjPosX = IObj.pos.x
IObjPosY = IObj.pos.y
IObjPosZ = IObj.pos.z
-- Save Which Objects Got hidden
Max Select All
IsoHidden = Selection as Array
All_Obj = selection
-- Move Object to [0,0,0]
IOBJ.pos = [0,0,0]
If Selection.count != 1 then Hide All_Obj
Unhide IOBJ
Select IOBJ
V = (viewport.GetType () as string)
If V == (#view_camera as string) then (Max vpt persp user)
AnimationRange = (Interval Slidertime (Slidertime +1))
Isolations = True
Max tool zoomextents
/* "Localization on" */
callbacks.addScript #FilePostOpen "MessageBox \"One or more objects are currently Isolated\" title:\"Isolate\"" ID:#FJDIso Persistent:True
Format "%\n" "Isolated"
/* "Localization off" */
)
)
fn UNIsolate =
(
Try (SubObjectLevel = 0) Catch ()
Try (CallBacks.RemoveScripts ID:#FJDIso) Catch ()
hideXRefs hide:0
AnimButtonEnabled = True
OBJ = $
Isolations = False
-- Check for other Isolated Objects
If IOBJ == undefined then
(
/* "Localization on" */
Format "%\n" "Object has been Hidden or Removed Cannot UN-ISOLATE"
/* "Localization off" */
)
Else
(
At time IsoFrame
(
Try (Hide IsoHidden) Catch ()
IOBJ.pos.x = 0
IOBJ.pos.y = 0
IOBJ.pos.z = 0
IOBJ.pivot = [0,0,0]
Max Select All
Move Selection [IOBJPosX,IOBJPosY,IOBJPosZ]
Select IOBJ
IOBJ.pos.x = IOBJPosX
IOBJ.pos.y = IOBJPosY
IOBJ.pos.z = IOBJPosZ
IOBJ.pivot.x = IOBJPivX
IOBJ.pivot.y = IOBJPivY
IOBJ.pivot.z = IOBJPivZ
Try (Unhide IsoHidden)
Catch ()
/* "Localization on" */
Try (If (Viewport.GetType () as string == "view_persp_user") then
/* "Localization off" */
(
If IsoCamera != undefined then
(
max vpt camera
)
Else
(
Max tool zoomextents
Viewport.SetTM IsoView
completeRedraw()
)
)
Else
(
Max tool zoomextents
)
)
Catch ()
)
Select IOBJ
/* "Localization on" */
Format "%\n" "Object Has been UN_ISOLATED"
/* "Localization off" */
AnimationRange = (Interval IsoAnimStart IsoAnimEnd)
Set Animate Off
Try (DeleteChangeHandler IOBJDEL) Catch ()
)
)
fn NewIsoFloater =
(
Isolations = True
Rollout IsoRoll ""
(
/* "Localization on" */
CheckButton CIso "UN-ISOLATE" Checked:True
/* "Localization off" */
on IsoRoll Close do
(
if Isolations == True then
(
UnIsolate ()
Isolations = False
)
Else
(
IsoLations = False
)
)
on CIso changed state do
(
If IsoFloater != undefined then CloseRolloutFloater IsoFloater
)
)
If IsoFloater == undefined then
(
/* "Localization on" */
IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100
AddRollout IsoRoll IsoFloater
/* "Localization off" */
)
Else
(
/* "Localization on" */
IF IsoFloater != undefined then CloseRolloutFloater IsoFloater
IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100
AddRollout IsoRoll IsoFloater
/* "Localization off" */
)
)
Fn SetIsolated =
(
Isolations = True
IOBJ = $
--IsoFrame = SliderTime
--IsoAnimStart = AnimationRange.Start
--IsoAnimEnd = AnimationRange.End
)
fn IsIsolated =
(
/* "Localization on" */
If GetUserProp $ "Isolated" == True then
(
DidyouFindOne = True
SetIsolated ()
Global IOBJ = $
)
Else
(
DidyouFindOne = False
)
)
fn IsAnyIsolated =
(
Local DidyouFindOne = False
Global WhichOne
Select Objects
For I in 1 to selection.count do
(
If GetUserProp $ "Isolated" == True then
(
DidyouFindOne = True
IOBJ = $
SetIsolated ()
IOBJ = $
)
Else
(
)
)
If DidYouFindOne == True then
(
MessageBox "Please Un-Isolate last object before Isolating another" Title:"Isolate"
)
Else
(
UnIsolate ()
)
)
Rollout IsoRoll ""
(
CheckButton CIso "Exit Isolation" Checked:True
on IsoRoll Close do
(
if Isolations == True then
(
Isolations = False
UnIsolate ()
)
Else
(
Isolations = False
)
)
on CIso changed state do
(
If IsoFloater != undefined then CloseRolloutFloater IsoFloater
)
)
-- Test to See if an Object is Selected
If (SuperClassof $) != Shape and (SuperClassof $) != geometryClass then
(
MessageBox "Please select a single object" title:"Isolate"
)
Else
(
--Try (
If Isolations == True then
(
UnIsolate ()
IF IsoFloater != undefined then (CloseRolloutFloater IsoFloater)
)
Else
(
Isolate ()
)
-- )
-- Catch (MessageBox "Error")
)
/* "Localization off" */
)