home *** CD-ROM | disk | FTP | other *** search
- -- 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" */
- )