home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 2001-09-12 | 45.3 KB | 1,874 lines
-- Right Click Menu Scripts File -- Created: Dec 2 1998 -- Last Updated: Oct 1 1999 10:30pm -- Author: Frank DeLise, Ravi Karra, Jeff Yates -- Richt Click Menu Script -- This script Allows you to add your own entrys to the Right Click menu. --*********************************************************************************************** -- MODIFY THIS AT YOUR OWN RISK --************************************************************************************************* --************************************************************************************************* --************************************************************************************************* -- Start of Main RCMenu RCMenu MyRCmenu ( --- ******** Set Filter Fuctions for content sensitive menu items ********* fn flt_EditM = If Selection.count == 1 then (Try (((Classof (modPanel.GetcurrentObject ())) == Edit_Mesh or (Classof (modPanel.GetcurrentObject ()) == Editable_Mesh ))) Catch ()) fn flt_EditL = If Selection.count == 1 then (Try ((Classof (modPanel.GetcurrentObject ())) == Line) Catch ()) fn flt_collapse = Try (For i in 1 to selection.count do (if CanConvertTo $[i] Mesh == True then Return True)) Catch () fn flt_ConvertMesh = Try(CanConvertTo $ Mesh)Catch() fn flt_ConvertPatch = Try(CanConvertTo $ Patch)Catch() fn flt_ConvertSpline = Try(CanConvertTo $ SplineShape)Catch() fn flt_EditS = ( If Selection.count == 1 then ( Try ( if (Classof (modPanel.GetcurrentObject ())) == SplineShape then ( Return True ) Else if (Classof (modPanel.GetcurrentObject ())) == Edit_Spline then ( Return True ) Else if Classof $ == Line and SubObjectLevel != undefined then ( Return True ) Else ( ) ) Catch () ) ) fn flt_EditP = ( If selection.count == 1 then ( Try ( if (Classof (modPanel.GetcurrentObject ())) == Patch then ( Return True ) Else if (Classof (modPanel.GetcurrentObject ())) == Edit_Patch then ( Return True ) Else if Classof $ == Patch and Classof (modPanel.GetcurrentObject ()) == Edit_Patch then ( Return True ) Else ( ) ) Catch () ) ) fn flt_vertex_mode = (subObjectLevel == 1) fn flt_edge_mode = (subObjectLevel == 2) fn flt_poly_mode = (subObjectLevel == 4) fn flt_NoSel = Selection.count == 0 fn flt_Geom = Try (SuperClassof $ == GeometryClass) Catch () fn flt_Lights = Try ( if (Classof $ == Omnilight or Classof $ == Targetspot or Classof $ == freespot or Classof $ == TargetDirectionallight or Classof $ == Directionallight) then return true ) Catch () fn flt_ModSel = Selection.count == 1 and SubObjectLevel == undefined fn flt_Sel = Selection.count == 1 fn flt_Objects = Try (isKindOf $ GeometryClass and not IsKindof $ Editable_Mesh) Catch () fn flt_Shapes = Try (isKindOf $ Shape) Catch () fn flt_Modifiers = Try (selection.count == 1 and $.modifiers.count != 0) Catch () fn flt_Mesh = Try (Classof (modPanel.GetcurrentObject ()) == Edit_Mesh or Classof (modPanel.GetcurrentObject ()) == Editable_Mesh) Catch () fn flt_Spline = Try (SuperClassof $ == Shape and not isKindOf $ SplineShape) Catch () fn flt_Spline2 = Try (SuperClassof $ == Shape or isKindOf $ SplineShape) Catch () fn flt_Patch = Try (Classof (modPanel.GetcurrentObject ()) == Edit_Patch or isKindOf $ Patch) Catch () fn flt_Mesh_Active = Try (isKindOf $ Editable_Mesh and $.modifiers.count == 0 and subObjectLevel > 0) Catch () fn flt_Mesh_Mods = Try (isKindOf $ Editable_Mesh and $.modifiers.count > 0 and classof $.baseObject == Editable_Mesh) Catch() fn flt_NoMesh_Mods = Try (classof $ == Editable_mesh and $.modifiers.count > 0 and classof $.baseObject != Editable_Mesh) Catch () fn no_selected_mesh_vertices = -- returns true if there are no vertices currently selected in the current mesh ( Try ( -- find currently selected edges and report/return if none selected cur_verts = getvertselection $ vert_ids = #() for i=1 to cur_verts.count do if cur_verts[i] == true then append vert_ids i if vert_ids.count == 0 then return true else return false ) Catch () ) fn no_selected_mesh_edges = -- returns true if there are no edges currently selected in the current mesh ( Try ( -- find currently selected edges and report/return if none selected cur_edges = getedgeselection $ edge_ids = #() for i=1 to cur_edges.count do if cur_edges[i] == true then append edge_ids i if edge_ids.count == 0 then return true else return false ) Catch () ) fn no_selected_mesh_faces = -- returns true if there are no faces currently selected in the current mesh ( Try ( -- find currently selected faces and report/return if none selected cur_faces = getfaceselection $ faces_ids = #() for i=1 to cur_faces.count do if cur_faces[i] == true then append faces_ids i if faces_ids.count == 0 then return true else return false ) Catch () ) --*********************************************************************************************** -- TrackView Selected --*********************************************************************************************** fn tracksel = ( Local OBJ = $ TrackView.Open "Selected" TrackView.setFilter "Selected" #modifiedObjects #SelectedObjects #curveX #curveY #curveZ #Objects #Hierarchy #Transforms #Position #Rotation #Scale #positionX #positionY #positionZ #rotationX #rotationY #rotationZ #scaleX #scaleY #scaleZ TrackView.zoomSelected "Selected" ) fn CloseTrackSel = ( Local OBJ = $ for t in 1 to Trackview.NumTrackViews() do ( If Trackview.GetTrackviewName t == "Selected" then ( TrackView.Close "Selected" ) Else ( ) ) ) --*********************************************************************************************** -- Modeling operations Check --*********************************************************************************************** fn ApplyOperation ctype oper = ( If (Modpanel.getcurrentObject () == $.baseobject) then oper $ If Classof (Modpanel.getcurrentObject ()) == ctype then (oper $.modifiers[modPanel.getModifierIndex $ (Modpanel.getcurrentObject ())]) ) ----------------------------------------------------------------------------------------------- -- ********************************************************************************************* -- *********************** Menu Items ********************************************************** menuItem mi_LightON "ON" filter:flt_Lights menuItem mi_Cast "Cast Shadows" filter:flt_Lights seperator sepA filter:flt_Lights menuItem mi_Collapse "Collapse Stack" filter:flt_Modifiers menuItem mi_CollapseSel "Collapse Selected to Mesh" filter:flt_Collapse seperator sep0 filter:flt_Modifiers menuItem mi_cMesh "Convert to Editable Mesh" filter:flt_ConvertMesh menuItem mi_cPatch "Convert to Editable Patch" filter:flt_ConvertPatch menuItem mi_cSpline "Convert to Editable Spline" filter:flt_ConvertSpline seperator sep1e filter:flt_ConvertMesh menuitem mi_Base "Edit Base Object" filter:flt_Modifiers menuitem mi_Top "Jump to Top of Stack" filter:flt_Modifiers seperator sepB filter:flt_Modifiers SubMenu "Sub-Object" filter:flt_Mesh ( menuitem mi_Sub0 "Base Object" filter:flt_Mesh menuitem mi_Verts "Vertex" filter:flt_Mesh menuitem mi_Edges "Edge" filter:flt_Mesh menuitem mi_Faces "Face" filter:flt_Mesh menuitem mi_Poly "Polygon" filter:flt_Mesh menuitem mi_Element "Element" filter:flt_Mesh ) SubMenu "Sub-Object" filter:flt_EditS -- Edit Spline ( menuitem mi_SBase "Base Object" menuitem mi_SVerts "Vertex" menuitem mi_SSegments "Segment" menuitem mi_SSplines "Spline" ) seperator sep_EditSpline2 filter:flt_EditS SubMenu "Sub-Object" filter:flt_EditP -- Edit Patch ( menuitem mi_PBase "Base Object" menuitem mi_PVerts "Vertex" menuitem mi_PEdges "Edge" menuitem mi_PPatch "Patch" ) seperator sep_EditPatch filter:flt_EditP seperator sep_BPolyEdits filter:flt_Mesh -- ************************************************************************ -- "Patch Modeling" Patch Operations -- ************************************************************************ menuitem mi_PatchAttach "Attach" filter:flt_EditP -- EditP menuitem mi_PatchExtrude "Extrude" filter:flt_EditP -- EditP menuitem mi_PatchBevel "Bevel" filter:flt_EditP -- EditP SubMenu "Subdivide" filter:flt_EditP -- EditP ( menuitem mi_PatchSubdivideEdge "Edge" filter:flt_EditP -- EditP menuitem mi_PatchSubdividePatch "Patch" filter:flt_EditP -- EditP ) menuitem mi_PatchTri "Add Tri" filter:flt_EditP -- EditP menuitem mi_PatchQuad "Add Quad" filter:flt_EditP -- EditP menuitem mi_PatchWeld "Weld" filter:flt_EditP -- EditP SubMenu "Hide" filter:flt_EditP ( menuitem mi_PHideVertex "Vertex" menuitem mi_PHideEdge "Edge" menuitem mi_PHidePatch "Patch" ) SubMenu "UnHide All" filter:flt_EditP ( menuitem mi_PUNHideVertex "Vertex" menuitem mi_PUNHideEdge "Edge" menuitem mi_PUNHidePatch "Patch" ) seperator sep_Patch2 filter:Flt_EditP -- ************************************************************************ -- "Spline Modeling" Spline Operations -- ************************************************************************ menuitem mi_SPlineAttach "Attach" filter:flt_EditS -- Base menuitem mi_SPlineLine "Create Line" filter:flt_EditS -- Base menuitem mi_SPlineInsert "Insert" filter:flt_EditS -- Vertex menuitem mi_SPlineRefine "Refine" filter:flt_EditS -- Vertex menuitem mi_SPlineConnect "Connect" filter:flt_EditS -- Vertex menuitem mi_SPlineOutline "Outline" filter:flt_EditS -- Spline menuitem mi_SPlineFillet "Fillet" filter:flt_EditS -- Vertex menuitem mi_SPlineChamfer "Chamfer" filter:flt_EditS -- Vertex menuitem mi_SPlineTrim "Trim" filter:flt_EditS -- Spline menuitem mi_SPlineExtend "Extend" filter:flt_EditS -- Spline SubMenu "Break" filter:flt_EditS ( menuitem mi_SplineBreakVertex "Vertex" menuitem mi_SplineBreakSegment "Segment" ) menuitem mi_SPlineClose "Close" filter:flt_EditS -- Vertex menuitem mi_SPlineWeld "Weld" filter:flt_EditS -- Vertex SubMenu "Hide" filter:flt_EditS ( menuitem mi_SHideVertex "Vertex" menuitem mi_SHideSegment "Segment" menuitem mi_SHideSpline "Spline" ) SubMenu "UnHide All" filter:flt_EditS ( menuitem mi_SUNHideVertex "Vertex" menuitem mi_SUNHideSegment "Segment" menuitem mi_SUNHideSpline "Spline" ) seperator sep_Splines filter:flt_EditS -- ************************************************************************ -- "Modeless" Mesh Operations -- ************************************************************************ SubMenu "Attach / Detach" filter:flt_EditM ( menuitem mi_MAttach "Attach" filter:flt_EditM menuitem mi_MDetach "Detach" filter:flt_EditM ) SubMenu "Extrude" filter:flt_EditM ( menuitem mi_MEExtrude_normal "Edge" menuitem mi_MFExtrude_normal "Face" menuitem mi_MPExtrude_normal "Polygon" -- menuitem mi_MInsetselected "Inset Selected" ) SubMenu "Chamfer / Bevel" filter:flt_EditM ( menuitem mi_MVChamfer "Chamfer Vertex" menuitem mi_MEChamfer "Chamfer Edge" menuitem mi_MFBevel "Bevel Face" menuitem mi_MPBevel "Bevel Polygon" ) SubMenu "Create" filter:flt_EditM ( menuitem mi_MVCreate "Vertex" menuitem mi_MFCreate "Face" menuitem mi_MPCreate "Polygon" menuitem mi_MECreateShapeFromEdges "Shape from Selected Edges" ) SubMenu "Cut" filter:flt_EditM ( menuitem mi_MECut "Edge" menuitem mi_MFCut "Face" menuitem mi_MPCut "Polygon" ) SubMenu "Divide" filter:flt_EditM ( menuitem mi_MEDivide "Edge" menuitem mi_MFDivide "Face" menuitem mi_MPDivide "Polygon" ) menuitem mi_MCollapse "Collapse Selected" filter:flt_EditM SubMenu "Weld / Break" filter:flt_EditM ( menuitem mi_MVWeldTarget "Drag Vertices to Weld Target" menuitem mi_MWeld "Weld Selected Vertices Together" menuitem mi_MVBreak "Break Selected Vertices" menuitem mi_MVRemoveIsolatedVerts "Remove Isolated Vertices" ) SubMenu "Edges" filter:flt_EditM ( menuitem mi_METurn "Turn Edges" menuitem mi_MEVisibleEdge "Make Selected Visible" menuitem mi_MEInvisibleEdge "Make Selected Invisible" menuitem mi_MEselectOpenEdges "Select Open Edges" ) SubMenu "Normals" filter:flt_EditM ( menuitem mi_MFlipSelected "Flip Selected" menuitem mi_MUnifySelected "Unify Selected" menuitem mi_MFFlipNormalMode "Flip Faces" menuitem mi_MPFlipNormalMode "Flip Polygons" ) SubMenu "Align Selected" filter:flt_EditM ( menuitem mi_MViewAlign "To View" menuitem mi_MGridAlign "To Grid" ) menuitem mi_MMakePlanar "Make Selected Planar" filter:flt_EditM SubMenu "Hide" filter:flt_EditM ( menuitem mi_MHide "Hide Selected" menuitem mi_MUnhideall "Unhide All" ) seperator sep2 filter:flt_EditM -- ************************************************************ -- Misc operations -- ************************************************************ menuitem mi_Track "TrackView Selected" filter:flt_Sel -- seperator sepA3 filter:flt_Geom -- menuitem mi_Manip "Transform Manipulator Toggle" filter:flt_Sel ---********************************************************************************************* -- *************** TrackView Selected ********************************************************** on mi_Track picked do ( CloseTrackSel () TrackSel () TrackView.zoomSelected $.name ) ---********************************************************************************************* -- subMenu "Modifiers" -- ( -- ) ---********************************************************************************************* -- *************** Right Click Menu Opened ***************************************************** on MyRCmenu open do ( if IsKindof $ Light == True then ( If (Classof $ == Omnilight or Classof $ == Targetspot or Classof $ == freespot or Classof $ == TargetDirectionallight or Classof $ == Directionallight) then mi_Lighton.checked = $.on;mi_Cast.checked = $.CastShadows ) ) -- ******************* Patch Mode ************************************************************** on mi_PatchAttach Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Patch PatchOps.StartAttach ) on mi_PatchExtrude Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Patch PatchOps.StartExtrude ) on mi_PatchBevel Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Patch PatchOps.StartBevel ) on mi_PatchSubdivideEdge Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Patch PatchOps.Subdivide ) on mi_PatchSubdividePatch Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline PatchOps.Subdivide ) on mi_PatchTri Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Patch PatchOps.Addtri ) on mi_PatchQuad Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Patch PatchOps.AddQuad ) on mi_PatchWeld Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Patch PatchOps.Weld ) on mi_PhideVertex Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Patch PatchOps.Hide ) on mi_PhideEdge Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Patch PatchOps.Hide ) on mi_PhidePatch Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Patch PatchOps.Hide ) on mi_PhidePatch Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Patch PatchOps.UnHideAll ) on mi_PhidePatch Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Patch PatchOps.UnHideAll ) on mi_PhidePatch Picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Patch PatchOps.UnHideAll ) -- ******************* Spline Mode ************************************************************* on mi_SPlineLine picked do ( If SubObjectLevel == undefined then Max Modify Mode ApplyOperation Edit_Spline SplineOps.StartCreateLine ) on mi_SPlineAttach picked do ( If SubObjectLevel == undefined then Max Modify Mode ApplyOperation Edit_Spline SplineOps.StartAttach ) on mi_SPlineInsert picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.StartInsert ) on mi_SPlineRefine picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.StartRefineConnect ) on mi_SPlineConnect picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.StartConnect ) on mi_SPlineOutline picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline SplineOps.StartOutline ) on mi_SPlineFillet picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.StartFillet ) on mi_SPlineChamfer picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.StartChamfer ) on mi_SPlineTrim picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline SplineOps.StartTrim ) on mi_SPlineExtend picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline SplineOps.StartExtend ) on mi_SPlineBreakVertex picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.StartBreak ) on mi_SPlineBreakSegment picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Spline SplineOps.StartBreak ) on mi_SPlineClose picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline SplineOps.close ) on mi_SPlineWeld picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.Weld ) on mi_SHideVertex picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.Hide ) on mi_SHideSegment picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Spline SplineOps.Hide ) on mi_SHideSpline picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline SplineOps.Hide ) on mi_SUNHideVertex picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ApplyOperation Edit_Spline SplineOps.UnHideAll ) on mi_SUNHideSegment picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ApplyOperation Edit_Spline SplineOps.UnHideAll ) on mi_SUNHideSpline picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ApplyOperation Edit_Spline SplineOps.UnHideAll ) -- ********************** Stack Operations ************************** on mi_CollapseSel Picked do ( Try ( For i in 1 to selection.count do ( if CanConvertTo $[i] Mesh then (Undo on (ConvertToMesh $[i])) ) ) Catch () ) on mi_base picked do ( If SubObjectLevel == undefined then Max Modify Mode modPanel.setCurrentObject $.baseObject ) on mi_Collapse picked do ( Undo on ( OBJ = $ CollapseStack $ If SubObjectLevel == undefined then Max Modify Mode Select OBJ ) ) on mi_cMesh picked do ( Undo on ( OBJ = $ ConvertToMesh $ If SubObjectLevel == undefined then Max Modify Mode -- Select OBJ ) ) on mi_CPatch picked do ( Undo on ( OBJ = $ CollapseStack $ Select OBJ ConvertTo $ Patch If SubObjectLevel == undefined then Max Modify Mode Select OBJ ) ) on mi_cEMesh picked do ( Undo on ( OBJ = $ ConverttoMesh $ If SubObjectLevel == undefined then Max Modify Mode -- Select OBJ ) ) on mi_CEPatch picked do ( Undo on ( OBJ = $ CollapseStack $ Select OBJ ConvertTo $ Patch If SubObjectLevel == undefined then Max Modify Mode Select OBJ ) ) on mi_CSpline picked do ( Undo on ( OBJ = $ ConvertToSplineShape $ If SubObjectLevel == undefined then Max Modify Mode -- Select OBJ ) ) on mi_CSMesh picked do ( Undo on ( OBJ = $ ConvertToMesh $ If SubObjectLevel == undefined then Max Modify Mode -- Select OBJ ) ) --- ********************** Mesh Operations ************************* on mi_top picked do ( If subobjectLevel == undefined then Max Modify Mode modPanel.setCurrentObject $.modifiers[1] ) on mi_Mtop picked do ( If subobjectLevel == undefined then Max Modify Mode modPanel.setCurrentObject $.modifiers[1] ) on mi_Sub0 picked do ( SubObjectLevel = 0 ) on mi_SubA0 picked do ( if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 0 ) on mi_Verts picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ) on mi_Faces picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ) on mi_Edges picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ) on mi_Poly picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 4 ) on mi_Element picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 5 ) on mi_BVerts picked do ( if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject SubObjectLevel = 1 ) on mi_BFaces picked do ( if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject SubObjectLevel = 3 ) on mi_BEdges picked do ( if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject SubObjectLevel = 2 ) on mi_BPoly picked do ( if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject SubObjectLevel = 4 ) on mi_BElement picked do ( if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject SubObjectLevel = 5 ) -- ******************************************************************* -- Mesh Ops: Non-Modal/Immediate Actions based on currently -- selected items (vertex/face/edge/poly) -- -- SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons -- -- ******************************************************************* on mi_MWeld picked do -- weld selected vertices ( -- if (no_selected_mesh_vertices()) then -- ( -- subobjectlevel = 1 -- switch to vertex mode so the user can see/confirm -- messagebox "No vertices currently selected.\nPlease select vertices first." Title:"Mesh Editing" Beep:false -- return() -- ) -- if subobjectlevel != 1 then subobjectlevel = 1 -- meshops.weld $ if subobjectlevel == undefined then max modify mode if subobjectlevel != 1 then subobjectlevel = 1 ApplyOperation Edit_Mesh meshops.Weld ) on mi_MHide picked do ( if subobjectlevel == undefined then ( if ($ == undefined) then messagebox "Nothing Selected" title:"" else hide $ ) else if subobjectlevel == 0 then ( if ($ == undefined) then messagebox "Nothing Selected" title:"" else hide $ ) else if subobjectlevel == 1 then -- verify that vertices are selected ( if no_selected_mesh_vertices() then ( messagebox "No vertices selected.\nPlease select vertices first." title:"" ) else ( ApplyOperation Edit_Mesh meshops.Hide ) ) else if subobjectlevel == 2 then -- hiding edges is not supported messagebox "Edges cannot be hidden/unhidden" title:"" else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then -- verify that faces are selected ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:"" ) else ( ApplyOperation Edit_Mesh meshops.Hide ) ) ) on mi_MUnhideall picked do ( if subobjectlevel == undefined then max unhide all else if subobjectlevel == 0 then max unhide all else if subobjectlevel == 2 then -- hiding edges is not supported messagebox "Edges cannot be hidden/unhidden" title:"" else ApplyOperation Edit_Mesh meshops.UnhideAll ) on mi_MCollapse picked do ( if subobjectlevel == undefined then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 1 then ( if no_selected_mesh_vertices() then ( messagebox "No vertices selected.\n Please select vertices first.\n" title:"" return() ) else Try ( ApplyOperation Edit_Mesh meshops.collapse ) Catch () ) else if subobjectlevel == 2 then ( if no_selected_mesh_edges() then ( messagebox "No edges selected.\n Please select edges first.\n" title:"" return() ) else Try ( ApplyOperation Edit_Mesh meshops.collapse ) Catch () ) else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\n Please select faces, polygons, or elements first.\n" title:"" return() ) else Try ( ApplyOperation Edit_Mesh meshops.collapse ) Catch () ) ) on mi_MAttach picked do ( if subobjectlevel == undefined then max modify mode ApplyOperation Edit_Mesh meshops.startAttach ) on mi_MDetach picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 2 then -- detaching edges is not supported messagebox "Edges cannot be detached" title:"" else ( ApplyOperation Edit_Mesh meshops.Detach ) ) on mi_MViewAlign picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if (subobjectlevel == 1) then ( if no_selected_mesh_faces() then ( messagebox "No vertices selected.\nPlease select vertices first.\n" title:"" return() ) ) else if (subobjectlevel == 2) then ( if no_selected_mesh_faces() then ( messagebox "No edges selected.\nPlease select edges first.\n" title:"" return() ) ) else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first.\n" title:"" return() ) ) ApplyOperation Edit_Mesh meshops.viewAlign ) on mi_MGridAlign picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if (subobjectlevel == 1) then ( if no_selected_mesh_vertices() then ( messagebox "No vertices selected.\nPlease select vertices first.\n" title:"" return() ) ) else if (subobjectlevel == 2) then ( if no_selected_mesh_edges() then ( messagebox "No edges selected.\nPlease select edges first.\n" title:"" return() ) ) else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first.\n" title:"" return() ) ) ApplyOperation Edit_Mesh meshops.gridAlign ) on mi_MMakePlanar picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if (subobjectlevel == 1) then ( if no_selected_mesh_vertices() then ( messagebox "No vertices selected.\nPlease select vertices first.\n" title:"" return() ) ) else if (subobjectlevel == 2) then ( if no_selected_mesh_edges() then ( messagebox "No edges selected.\nPlease select edges first.\n" title:"" return() ) ) else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first.\n" title:"" return() ) ) ApplyOperation Edit_Mesh meshops.makePlanar ) on mi_MFlipSelected picked do ( if subobjectlevel == undefined then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 1 then -- flipping vertices is not supported messagebox "Vertex normals cannot be flipped" title:"" else if subobjectlevel == 2 then -- flipping edges is not supported messagebox "Edge normals cannot be flipped" title:"" else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then -- verify that faces are selected ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:"" ) else ( ApplyOperation Edit_Mesh meshops.flipnormal ) ) ) on mi_MUnifySelected picked do ( if subobjectlevel == undefined then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 0 then messagebox "Please activate a mesh edit mode." title:"" else if subobjectlevel == 1 then -- unifying vertices is not supported messagebox "Vertices cannot be Unified" title:"" else if subobjectlevel == 2 then -- unifying edges is not supported messagebox "Edges cannot be Unified" title:"" else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then -- verify that faces are selected ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:"" ) else ( ApplyOperation Edit_Mesh meshops.unifynormal ) ) ) on mi_MInsetselected picked do ( if subobjectlevel == undefined then messagebox "Please select a subobject level." title:"" else if subobjectlevel == 0 then messagebox "Please select a subobject level." title:"" else if subobjectlevel == 1 then -- inset for vertices is not supported messagebox "Vertices cannot be Inset" title:"" else if subobjectlevel == 2 then -- inset for edges is not supported messagebox "Edges cannot be Inset" title:"" else if subobjectlevel == 5 then -- inset for elements is not supported messagebox "Elements cannot be Inset" title:"" else if (subobjectlevel == 3 or subobjectlevel == 4 ) then -- verify that faces are selected ( if no_selected_mesh_faces() then ( messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:"" return() ) else ( extrudeface $ #selection 0 100 update $ Max Scale ) ) ) -- ******************************************************************* -- Mesh Ops: Vertex Mode -- -- SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons -- -- ******************************************************************* on mi_MVChamfer picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 1 then subobjectlevel = 1 ApplyOperation Edit_Mesh meshops.startchamfer ) on mi_MVCreate picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 1 then subobjectlevel = 1 ApplyOperation Edit_Mesh meshops.startCreate ) on mi_MVBreak picked do ( if subobjectlevel == undefined then max modify mode if (no_selected_mesh_vertices()) then ( subobjectlevel = 1 -- switch to vertex mode so the user can see/confirm messagebox "No vertices currently selected.\nPlease select vertices first." return() ) if subobjectlevel != 1 then ( subobjectlevel = 1 if not queryBox "Switched to Vertex Mode...\n Break selected vertices now?" then return() ) ApplyOperation Edit_Mesh meshops.break ) on mi_MVRemoveIsolatedVerts picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 1 then ( subobjectlevel = 1 if not queryBox "Switched to Vertex Mode...\n Remove isolated vertices now?" then return() ) ApplyOperation Edit_Mesh meshops.removeisolatedverts ) on mi_MVSlicePlane picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 1 then subobjectlevel = 1 meshops.startsliceplane $ ) on mi_MVWeldTarget picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 1 then subobjectlevel = 1 ApplyOperation Edit_Mesh meshops.startweldtarget ) -- ******************************************************************* -- Mesh Ops: Edge Mode -- -- SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons -- -- ******************************************************************* on mi_MEExtrude_normal picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.startExtrude ) on mi_MEChamfer picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.startChamfer ) on mi_MECut picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.startCut ) on mi_MEsliceplane picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.startsliceplane ) on mi_MEDivide picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.Startdivide ) on mi_METurn picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.Startturn ) on mi_MEVisibleEdge picked do ( if subobjectlevel == undefined then max modify mode -- find currently selected edges and report/return if none selected if (no_selected_mesh_edges()) then ( subobjectlevel = 2 -- switch to edge mode so the user can see/confirm messagebox "No edges currently selected.\nPlease select an edge first." ) if subobjectlevel != 2 then ( subobjectlevel = 2 if not queryBox "Switched to Edge Mode...\n Make selected edges Visible?" then return() ) ApplyOperation Edit_Mesh meshops.visibleEdge ) on mi_MEInvisibleEdge picked do ( if subobjectlevel == undefined then max modify mode if (no_selected_mesh_edges()) then ( subobjectlevel = 2 -- switch to edge mode so the user can see/confirm messagebox "No edges currently selected.\nPlease select an edge first." title:"" ) if subobjectlevel != 2 then ( subobjectlevel = 2 if not queryBox "Switched to Edge Mode...Make selected edges Invisible?" then return() ) ApplyOperation Edit_Mesh meshops.invisibleEdge ) on mi_MEselectOpenEdges picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.selectOpenEdges ) on mi_MECreateShapeFromEdges picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 2 then subobjectlevel = 2 ApplyOperation Edit_Mesh meshops.createshapefromedges ) -- ******************************************************************* -- Mesh Ops: Face Mode -- -- SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons -- -- ******************************************************************* on mi_MFExtrude_normal picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.startExtrude ) on mi_MFbevel picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.startBevel ) on mi_MFCreate picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.startCreate ) on mi_MFCut picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.startCut ) on mi_MFDivide picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.StartDivide ) on mi_MFSlicePlane picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.startsliceplane ) on mi_MFFlipNormalMode picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 3 then subobjectlevel = 3 ApplyOperation Edit_Mesh meshops.startFlipNormalmode ) -- ******************************************************************* -- Mesh Ops: Polygon Mode -- -- SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons -- -- ******************************************************************* on mi_MPExtrude_normal picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.startExtrude ) on mi_MPCreate picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.startCreate ) on mi_MPCut picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.startCut ) on mi_MPDivide picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.Startdivide ) on mi_MPSlicePlane picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.startsliceplane ) on mi_MPbevel picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.startBevel ) on mi_MPFlipNormalMode picked do ( if subobjectlevel == undefined then max modify mode if subobjectlevel != 4 then subobjectlevel = 4 ApplyOperation Edit_Mesh meshops.startFlipNormalmode ) -- ******************************************************************* -- Spline Modeling on mi_SBase picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 0 ) on mi_SVerts picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ) on mi_SSegments picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ) on mi_SSplines picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ) on mi_LBase picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 0 ) on mi_LVerts picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ) on mi_LSegments picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ) on mi_LSplines picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ) -- ******************************************************************* -- Spline Modeling on mi_SBase picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 0 ) on mi_SVerts picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ) on mi_SSegments picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ) on mi_SSplines picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ) -- *******************************************************************8 -- Patch Modeling on mi_PBase picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 0 ) on mi_PVerts picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 1 ) on mi_PEdges picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 2 ) on mi_PPatch picked do ( If SubObjectLevel == undefined then Max Modify Mode SubObjectLevel = 3 ) -- ******************************************************************* -- ************************ Lights *********************************** on mi_LightON picked do ( $.on = (not $.on) ) on mi_Cast picked do ( $.CastShadows = (not $.CastShadows) ) -- ************************ Light Properties ************************* on mi_Lightprop picked do ( Max Modify Mode ) ---************************* Manipulator ************************** on mi_Manip picked do ( Max ShowAxisIcon ) ) RcMenu Startup ( fn flt_Control = (Not (KeyBoard.controlPressed)) fn flt_ModSel = Selection.count == 1 and SubObjectLevel == undefined and (Not (KeyBoard.controlPressed)) menuItem mi_Select "Select Mode" Filter:flt_Control menuItem mi_Modify "Modify Mode" Filter:flt_ModSel on mi_modify picked do (if SubObjectlevel == undefined then Max Modify Mode) on mi_Select picked do (Max Select) On Startup open do ( If Keyboard.controlPressed then ( UnregisterRightClickMenu MyRCmenu Try(RegisterRightClickMenu MyRCmenu) Catch (MessageBox "Custom right click menu not loaded." title:"Right Click Menu") ) Else ( Try(UnRegisterRightClickMenu MyRCmenu)Catch () RegisterRightClickMenu MyRCmenu ) ) ) RegisterRightClickMenu Startup