home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2002 April / GSSH42002.iso / EDITOREN / DS / gmax / gmaxinst_1-1.exe / gmaxsetup11.cab / rcmenu.ms < prev    next >
Text File  |  2002-02-13  |  46KB  |  1,874 lines

  1. -- Right Click Menu Scripts File
  2. -- Created:          Dec 2 1998
  3. -- Last Updated:     Oct 1 1999 10:30pm
  4. -- Author:   Frank DeLise, Ravi Karra, Jeff Yates
  5. -- Richt Click Menu Script
  6. -- This script Allows you to add your own entrys to the Right Click menu.
  7. --***********************************************************************************************
  8. -- MODIFY THIS AT YOUR OWN RISK
  9.  
  10. --*************************************************************************************************
  11. --*************************************************************************************************
  12. --*************************************************************************************************
  13.  
  14. -- Start of Main RCMenu
  15.  
  16. RCMenu MyRCmenu 
  17. (
  18.  
  19. --- ******** Set Filter Fuctions for content sensitive menu items *********
  20.  
  21.     fn flt_EditM = If Selection.count == 1 then (Try (((Classof (modPanel.GetcurrentObject ())) == Edit_Mesh or (Classof (modPanel.GetcurrentObject ()) == Editable_Mesh ))) Catch ())
  22.     fn flt_EditL = If Selection.count == 1 then (Try ((Classof (modPanel.GetcurrentObject ())) == Line) Catch ())
  23.     fn flt_collapse = Try (For i in 1 to selection.count do (if CanConvertTo $[i] Mesh == True then Return True)) Catch ()
  24.     
  25.     fn flt_ConvertMesh = Try(CanConvertTo $ Mesh)Catch()    
  26.     fn flt_ConvertPatch = Try(CanConvertTo $ Patch)Catch()
  27.     fn flt_ConvertSpline = Try(CanConvertTo $ SplineShape)Catch()    
  28.     
  29.     fn flt_EditS = 
  30.     (
  31.         If Selection.count == 1 then
  32.         (
  33.             Try 
  34.             (    
  35.                 if (Classof (modPanel.GetcurrentObject ())) == SplineShape then
  36.                 (
  37.                      Return True
  38.                 )
  39.                 Else if (Classof (modPanel.GetcurrentObject ())) == Edit_Spline then
  40.                 (
  41.                      Return True
  42.                 )
  43.                 Else if Classof $ == Line and SubObjectLevel != undefined then 
  44.                 (
  45.                     Return True 
  46.                 )
  47.                 Else 
  48.                 (
  49.                 )
  50.             )
  51.             Catch ()
  52.         )
  53.     )
  54.  
  55.     fn flt_EditP = 
  56.     (
  57.         If selection.count == 1 then
  58.         (
  59.         Try (    
  60.                 if (Classof (modPanel.GetcurrentObject ())) == Patch then
  61.                 (
  62.                      Return True
  63.                 )
  64.                     Else if (Classof (modPanel.GetcurrentObject ())) == Edit_Patch then
  65.                 (
  66.                      Return True
  67.                 )
  68.                 Else if Classof $ == Patch and Classof (modPanel.GetcurrentObject ()) == Edit_Patch then
  69.                 (
  70.                     Return True 
  71.                 )
  72.                 Else 
  73.                 (
  74.                 )
  75.             )
  76.             Catch ()
  77.         )
  78.     )
  79.     
  80.     fn flt_vertex_mode = (subObjectLevel == 1)
  81.  
  82.     fn flt_edge_mode = (subObjectLevel == 2)
  83.  
  84.     fn flt_poly_mode = (subObjectLevel == 4)
  85.  
  86.     fn flt_NoSel = Selection.count == 0
  87.  
  88.     fn flt_Geom = Try (SuperClassof $ == GeometryClass) Catch ()
  89.  
  90.     fn flt_Lights = Try (
  91.         
  92.         if (Classof $ == Omnilight or Classof $ == Targetspot or Classof $ == freespot or Classof $ == TargetDirectionallight or Classof $ == Directionallight) then return true
  93.                         ) 
  94.                         Catch ()
  95.  
  96.     fn flt_ModSel = Selection.count == 1 and SubObjectLevel == undefined
  97.     
  98.     fn flt_Sel = Selection.count == 1
  99.  
  100.     fn flt_Objects = Try (isKindOf $ GeometryClass and not IsKindof $ Editable_Mesh) Catch ()
  101.  
  102.     fn flt_Shapes = Try (isKindOf $ Shape) Catch ()               
  103.  
  104.     fn flt_Modifiers = Try (selection.count == 1 and $.modifiers.count != 0) Catch ()
  105.  
  106.     fn flt_Mesh = Try (Classof (modPanel.GetcurrentObject ()) == Edit_Mesh or Classof (modPanel.GetcurrentObject ()) == Editable_Mesh) Catch ()
  107.     
  108.     fn flt_Spline = Try (SuperClassof $ == Shape and not isKindOf $ SplineShape) Catch ()
  109.     fn flt_Spline2 = Try (SuperClassof $ == Shape or isKindOf $ SplineShape) Catch ()
  110.     
  111.     fn flt_Patch = Try (Classof (modPanel.GetcurrentObject ()) == Edit_Patch or isKindOf $ Patch) Catch ()
  112.     
  113.     fn flt_Mesh_Active = Try (isKindOf $ Editable_Mesh and $.modifiers.count == 0 and subObjectLevel > 0) Catch ()
  114.  
  115.     fn flt_Mesh_Mods = Try (isKindOf $ Editable_Mesh and $.modifiers.count > 0 and classof $.baseObject == Editable_Mesh) Catch()
  116.  
  117.     fn flt_NoMesh_Mods = Try (classof $ == Editable_mesh and $.modifiers.count > 0 and classof $.baseObject != Editable_Mesh) Catch ()
  118.  
  119.     fn no_selected_mesh_vertices =  -- returns true if there are no vertices currently selected in the current mesh
  120.     (
  121.         Try 
  122.         (
  123.         -- find currently selected edges and report/return if none selected
  124.         
  125.             cur_verts = getvertselection $
  126.             vert_ids = #()
  127.             
  128.             for i=1 to cur_verts.count do
  129.                 if cur_verts[i] == true then
  130.                     append vert_ids i
  131.                         
  132.             if vert_ids.count == 0 then
  133.                 return true
  134.             else
  135.                 return false
  136.         )
  137.         Catch ()
  138.     
  139.     )
  140.  
  141.     fn no_selected_mesh_edges =  -- returns true if there are no edges currently selected in the current mesh
  142.     (
  143.         Try
  144.          (
  145.         -- find currently selected edges and report/return if none selected
  146.         
  147.             cur_edges = getedgeselection $
  148.             edge_ids = #()
  149.             
  150.             for i=1 to cur_edges.count do
  151.                 if cur_edges[i] == true then
  152.                     append edge_ids i
  153.                         
  154.             if edge_ids.count == 0 then
  155.                 return true
  156.             else
  157.                 return false
  158.         )
  159.         Catch ()
  160.     )
  161.  
  162.     fn no_selected_mesh_faces =  -- returns true if there are no faces currently selected in the current mesh
  163.     (
  164.         Try
  165.          (
  166.         -- find currently selected faces and report/return if none selected
  167.         
  168.             cur_faces = getfaceselection $
  169.             faces_ids = #()
  170.             
  171.             for i=1 to cur_faces.count do
  172.                 if cur_faces[i] == true then
  173.                     append faces_ids i
  174.                         
  175.             if faces_ids.count == 0 then
  176.                 return true
  177.             else
  178.                 return false
  179.         )
  180.         Catch ()
  181.     )
  182.  
  183. --***********************************************************************************************    
  184. -- TrackView Selected
  185. --***********************************************************************************************
  186.  
  187. fn tracksel = 
  188. (
  189.     Local OBJ = $
  190.     TrackView.Open "Selected"
  191.     TrackView.setFilter "Selected" #modifiedObjects #SelectedObjects #curveX #curveY #curveZ #Objects #Hierarchy #Transforms #Position #Rotation #Scale #positionX #positionY #positionZ #rotationX #rotationY #rotationZ #scaleX #scaleY #scaleZ
  192.     TrackView.zoomSelected "Selected"
  193. )
  194.     
  195. fn CloseTrackSel =
  196. (
  197.     Local OBJ = $
  198.     for t in 1 to Trackview.NumTrackViews() do
  199.     (
  200.         If Trackview.GetTrackviewName t == "Selected" then
  201.         (
  202.             TrackView.Close "Selected"
  203.          )
  204.         Else
  205.         (
  206.         )
  207.     )
  208. )
  209. --***********************************************************************************************    
  210. -- Modeling operations Check
  211. --***********************************************************************************************
  212. fn ApplyOperation ctype oper = 
  213. (
  214.     If (Modpanel.getcurrentObject () == $.baseobject) then oper $
  215.     If Classof (Modpanel.getcurrentObject ()) == ctype then (oper $.modifiers[modPanel.getModifierIndex $ (Modpanel.getcurrentObject ())])    
  216. )
  217.  
  218. -----------------------------------------------------------------------------------------------
  219. -- *********************************************************************************************
  220. -- *********************** Menu Items **********************************************************
  221.  
  222.  
  223.     menuItem    mi_LightON          "ON"                            filter:flt_Lights         
  224.     menuItem    mi_Cast          "Cast Shadows"                         filter:flt_Lights
  225.     
  226.     seperator     sepA                                                filter:flt_Lights    
  227.     
  228.     menuItem    mi_Collapse      "Collapse Stack"                 filter:flt_Modifiers
  229.     menuItem    mi_CollapseSel      "Collapse Selected to Mesh"     filter:flt_Collapse
  230.     
  231.     
  232.  
  233.     seperator     sep0                                            filter:flt_Modifiers
  234.     
  235.     menuItem    mi_cMesh        "Convert to Editable Mesh"         filter:flt_ConvertMesh    
  236.     menuItem    mi_cPatch        "Convert to Editable Patch"     filter:flt_ConvertPatch    
  237.     menuItem    mi_cSpline        "Convert to Editable Spline"     filter:flt_ConvertSpline
  238.  
  239.     seperator     sep1e                                            filter:flt_ConvertMesh
  240.     
  241.     menuitem    mi_Base           "Edit Base Object"               filter:flt_Modifiers
  242.     menuitem    mi_Top            "Jump to Top of Stack"         filter:flt_Modifiers
  243.  
  244.     seperator     sepB                                            filter:flt_Modifiers    
  245.     
  246.     SubMenu "Sub-Object"        filter:flt_Mesh
  247.     (
  248.         menuitem    mi_Sub0              "Base Object"                filter:flt_Mesh 
  249.         menuitem    mi_Verts           "Vertex"                     filter:flt_Mesh 
  250.         menuitem    mi_Edges           "Edge"                         filter:flt_Mesh 
  251.         menuitem    mi_Faces          "Face"                         filter:flt_Mesh 
  252.         menuitem    mi_Poly               "Polygon"                     filter:flt_Mesh  
  253.         menuitem    mi_Element            "Element"                     filter:flt_Mesh 
  254.  
  255.     )
  256.     
  257.         
  258.     SubMenu "Sub-Object"        filter:flt_EditS -- Edit Spline
  259.     (
  260.         menuitem    mi_SBase              "Base Object"                
  261.         menuitem    mi_SVerts           "Vertex"                     
  262.         menuitem    mi_SSegments          "Segment"                         
  263.         menuitem    mi_SSplines          "Spline"                          
  264.              
  265.     )
  266.     
  267.     seperator     sep_EditSpline2                                        filter:flt_EditS
  268.     
  269.     
  270.         SubMenu "Sub-Object"        filter:flt_EditP -- Edit Patch
  271.     (
  272.         menuitem    mi_PBase              "Base Object"                 
  273.         menuitem    mi_PVerts           "Vertex"                      
  274.         menuitem    mi_PEdges           "Edge"                          
  275.         menuitem    mi_PPatch              "Patch"                           
  276.                      
  277.     )
  278.     
  279.     seperator     sep_EditPatch                                        filter:flt_EditP
  280.     
  281.     seperator     sep_BPolyEdits                                        filter:flt_Mesh
  282.     
  283. --    ************************************************************************
  284. --                         "Patch Modeling" Patch Operations                            
  285. --    ************************************************************************
  286.  
  287.  
  288.     menuitem    mi_PatchAttach           "Attach"                     filter:flt_EditP -- EditP
  289.     menuitem    mi_PatchExtrude           "Extrude"                     filter:flt_EditP -- EditP
  290.     menuitem    mi_PatchBevel           "Bevel"                     filter:flt_EditP -- EditP
  291.  
  292.     SubMenu "Subdivide"                                                filter:flt_EditP -- EditP
  293.     (
  294.     menuitem    mi_PatchSubdivideEdge      "Edge"                        filter:flt_EditP -- EditP
  295.     menuitem    mi_PatchSubdividePatch     "Patch"                        filter:flt_EditP -- EditP
  296.     )                            
  297.     menuitem    mi_PatchTri               "Add Tri"                     filter:flt_EditP -- EditP
  298.     menuitem    mi_PatchQuad               "Add Quad"                     filter:flt_EditP -- EditP
  299.     menuitem    mi_PatchWeld               "Weld"                         filter:flt_EditP -- EditP
  300.  
  301.  
  302. SubMenu "Hide"                                                        filter:flt_EditP
  303.     (
  304.         menuitem mi_PHideVertex     "Vertex"
  305.         menuitem mi_PHideEdge         "Edge"    
  306.         menuitem mi_PHidePatch         "Patch"
  307.     )
  308. SubMenu "UnHide All"                                                filter:flt_EditP
  309.     (
  310.         menuitem mi_PUNHideVertex     "Vertex"
  311.         menuitem mi_PUNHideEdge     "Edge"    
  312.         menuitem mi_PUNHidePatch     "Patch"
  313.     )
  314.  
  315. seperator     sep_Patch2                                                filter:Flt_EditP
  316.     
  317. --    ************************************************************************
  318. --                         "Spline Modeling" Spline Operations                            
  319. --    ************************************************************************
  320.  
  321.     
  322.     menuitem    mi_SPlineAttach     "Attach"                         filter:flt_EditS -- Base
  323.     menuitem    mi_SPlineLine       "Create Line"                     filter:flt_EditS -- Base
  324.     menuitem    mi_SPlineInsert     "Insert"                         filter:flt_EditS -- Vertex
  325.     menuitem    mi_SPlineRefine        "Refine"                         filter:flt_EditS -- Vertex                                
  326.     menuitem    mi_SPlineConnect    "Connect"                         filter:flt_EditS --    Vertex
  327.     
  328.     menuitem    mi_SPlineOutline    "Outline"                         filter:flt_EditS --    Spline
  329.     menuitem    mi_SPlineFillet        "Fillet"                         filter:flt_EditS --    Vertex
  330.     menuitem    mi_SPlineChamfer    "Chamfer"                         filter:flt_EditS --    Vertex
  331.     menuitem    mi_SPlineTrim        "Trim"                             filter:flt_EditS --    Spline
  332.     menuitem    mi_SPlineExtend        "Extend"                        filter:flt_EditS --    Spline
  333.     
  334.     SubMenu "Break"                                                    filter:flt_EditS
  335.     (
  336.         menuitem mi_SplineBreakVertex     "Vertex"
  337.         menuitem mi_SplineBreakSegment    "Segment"    
  338.     )
  339.     
  340.     menuitem    mi_SPlineClose        "Close"                            filter:flt_EditS -- Vertex
  341.     menuitem    mi_SPlineWeld        "Weld"                            filter:flt_EditS -- Vertex
  342.      
  343.     SubMenu "Hide"                                                    filter:flt_EditS
  344.     (
  345.         menuitem mi_SHideVertex     "Vertex"
  346.         menuitem mi_SHideSegment     "Segment"    
  347.         menuitem mi_SHideSpline     "Spline"
  348.     )
  349.     SubMenu "UnHide All"                                            filter:flt_EditS
  350.     (
  351.         menuitem mi_SUNHideVertex     "Vertex"
  352.         menuitem mi_SUNHideSegment     "Segment"    
  353.         menuitem mi_SUNHideSpline     "Spline"
  354.     )
  355.                             
  356.     
  357. seperator     sep_Splines                                                filter:flt_EditS
  358.  
  359.  
  360. --    ************************************************************************
  361. --                         "Modeless" Mesh Operations                            
  362. --    ************************************************************************
  363.  
  364.     SubMenu "Attach / Detach"                                        filter:flt_EditM
  365.     (
  366.         menuitem mi_MAttach "Attach"                                filter:flt_EditM
  367.         menuitem mi_MDetach "Detach"                                filter:flt_EditM
  368.     )
  369.     
  370.  
  371.     
  372.     SubMenu "Extrude"                                                filter:flt_EditM
  373.     (
  374.         menuitem mi_MEExtrude_normal "Edge"
  375.         menuitem mi_MFExtrude_normal "Face"    
  376.         menuitem mi_MPExtrude_normal "Polygon"
  377.     --    menuitem mi_MInsetselected "Inset Selected"
  378.     )
  379.  
  380.     SubMenu "Chamfer / Bevel"                                        filter:flt_EditM
  381.     (
  382.         menuitem mi_MVChamfer "Chamfer Vertex"
  383.         menuitem mi_MEChamfer "Chamfer Edge"            
  384.         menuitem mi_MFBevel "Bevel Face"
  385.         menuitem mi_MPBevel "Bevel Polygon"
  386.     )
  387.  
  388.     SubMenu "Create"                                                filter:flt_EditM
  389.     (
  390.         menuitem mi_MVCreate "Vertex"
  391.         menuitem mi_MFCreate "Face"    
  392.         menuitem mi_MPCreate "Polygon"
  393.         menuitem mi_MECreateShapeFromEdges "Shape from Selected Edges"
  394.     )
  395.  
  396.  
  397.     SubMenu "Cut"                                                    filter:flt_EditM
  398.     (
  399.         menuitem mi_MECut "Edge"
  400.         menuitem mi_MFCut "Face"
  401.         menuitem mi_MPCut "Polygon"
  402.     )
  403.  
  404.     SubMenu "Divide"                                                filter:flt_EditM
  405.     (
  406.         menuitem mi_MEDivide "Edge"
  407.         menuitem mi_MFDivide "Face"
  408.         menuitem mi_MPDivide "Polygon"
  409.     )
  410.  
  411.     menuitem mi_MCollapse "Collapse Selected"                        filter:flt_EditM
  412.  
  413.     SubMenu "Weld / Break"                                          filter:flt_EditM
  414.     (                                                            
  415.         menuitem mi_MVWeldTarget "Drag Vertices to Weld Target"                    
  416.         menuitem mi_MWeld "Weld Selected Vertices Together"
  417.         menuitem mi_MVBreak "Break Selected Vertices"                    
  418.         menuitem mi_MVRemoveIsolatedVerts "Remove Isolated Vertices"                    
  419.     )
  420.  
  421.     SubMenu "Edges"                                                    filter:flt_EditM
  422.     (
  423.         menuitem mi_METurn "Turn Edges"
  424.         menuitem mi_MEVisibleEdge "Make Selected Visible"
  425.         menuitem mi_MEInvisibleEdge "Make Selected Invisible"
  426.         menuitem mi_MEselectOpenEdges "Select Open Edges"
  427.     )
  428.  
  429.  
  430.     SubMenu "Normals"                                                filter:flt_EditM
  431.     (
  432.         menuitem mi_MFlipSelected "Flip Selected"
  433.         menuitem mi_MUnifySelected "Unify Selected"
  434.         menuitem mi_MFFlipNormalMode "Flip Faces"
  435.         menuitem mi_MPFlipNormalMode "Flip Polygons"
  436.     )
  437.  
  438.     
  439.     SubMenu "Align Selected"                                        filter:flt_EditM
  440.     (
  441.         menuitem mi_MViewAlign "To View"
  442.         menuitem mi_MGridAlign "To Grid"
  443.     )
  444.  
  445.     menuitem mi_MMakePlanar "Make Selected Planar"                    filter:flt_EditM
  446.  
  447.     SubMenu "Hide"                                                    filter:flt_EditM
  448.     (
  449.         menuitem mi_MHide "Hide Selected"                
  450.         menuitem mi_MUnhideall "Unhide All"                    
  451.     )
  452.  
  453.     seperator     sep2                                                filter:flt_EditM
  454.     
  455.     
  456. -- ************************************************************
  457. --  Misc operations    
  458. -- ************************************************************
  459.  
  460.     menuitem    mi_Track  "TrackView Selected"                      filter:flt_Sel
  461.     
  462. --    seperator     sepA3                                                filter:flt_Geom
  463.  
  464.         
  465. --    menuitem    mi_Manip   "Transform Manipulator Toggle"             filter:flt_Sel
  466.     
  467.     
  468. ---*********************************************************************************************    
  469. -- *************** TrackView Selected **********************************************************
  470. on mi_Track picked do
  471. (
  472.     CloseTrackSel ()
  473.     TrackSel ()
  474.     TrackView.zoomSelected $.name
  475. )
  476.  
  477. ---*********************************************************************************************        
  478.     
  479. --    subMenu "Modifiers" 
  480. --    (
  481. --    )
  482.  
  483. ---*********************************************************************************************
  484. -- *************** Right Click Menu Opened *****************************************************
  485.  
  486.     on MyRCmenu open do
  487.     (
  488.         if IsKindof $ Light == True then 
  489.         (
  490.             If (Classof $ == Omnilight or Classof $ == Targetspot or Classof $ == freespot or Classof $ == TargetDirectionallight or Classof $ == Directionallight) then mi_Lighton.checked = $.on;mi_Cast.checked = $.CastShadows
  491.         )
  492.     )
  493.  
  494.  
  495. -- ******************* Patch Mode **************************************************************
  496.  
  497. on mi_PatchAttach Picked do
  498. (
  499.     If SubObjectLevel == undefined then Max Modify Mode
  500.     SubObjectLevel = 1
  501.     
  502.     ApplyOperation Edit_Patch PatchOps.StartAttach
  503. )
  504.  
  505. on mi_PatchExtrude Picked do
  506. (
  507.     If SubObjectLevel == undefined then Max Modify Mode
  508.     SubObjectLevel = 3
  509.     
  510.     ApplyOperation Edit_Patch PatchOps.StartExtrude
  511. )
  512.  
  513. on mi_PatchBevel Picked do
  514. (
  515.     If SubObjectLevel == undefined then Max Modify Mode
  516.     SubObjectLevel = 3
  517.     
  518.     ApplyOperation Edit_Patch PatchOps.StartBevel
  519. )
  520.  
  521. on mi_PatchSubdivideEdge Picked do
  522. (
  523.     If SubObjectLevel == undefined then Max Modify Mode
  524.     SubObjectLevel = 2
  525.     
  526.     ApplyOperation Edit_Patch PatchOps.Subdivide
  527. )
  528.  
  529. on mi_PatchSubdividePatch Picked do
  530. (
  531.     If SubObjectLevel == undefined then Max Modify Mode
  532.     SubObjectLevel = 3
  533.     
  534.     ApplyOperation Edit_Spline PatchOps.Subdivide
  535. )
  536.     
  537. on mi_PatchTri Picked do
  538. (
  539.     If SubObjectLevel == undefined then Max Modify Mode
  540.     SubObjectLevel = 2
  541.     
  542.     ApplyOperation Edit_Patch PatchOps.Addtri
  543. )
  544.  
  545. on mi_PatchQuad Picked do
  546. (
  547.     If SubObjectLevel == undefined then Max Modify Mode
  548.     SubObjectLevel = 2
  549.     
  550.     ApplyOperation Edit_Patch PatchOps.AddQuad
  551. )
  552.         
  553. on mi_PatchWeld Picked do
  554. (
  555.     If SubObjectLevel == undefined then Max Modify Mode
  556.     SubObjectLevel = 1
  557.     
  558.     ApplyOperation Edit_Patch PatchOps.Weld
  559. )
  560.  
  561. on mi_PhideVertex Picked do
  562. (
  563.     If SubObjectLevel == undefined then Max Modify Mode
  564.     SubObjectLevel = 1
  565.     
  566.     ApplyOperation Edit_Patch PatchOps.Hide
  567. )
  568.  
  569. on mi_PhideEdge Picked do
  570. (
  571.     If SubObjectLevel == undefined then Max Modify Mode
  572.     SubObjectLevel = 2
  573.     
  574.     ApplyOperation Edit_Patch PatchOps.Hide
  575. )
  576.  
  577. on mi_PhidePatch Picked do
  578. (
  579.     If SubObjectLevel == undefined then Max Modify Mode
  580.     SubObjectLevel = 3
  581.     
  582.     ApplyOperation Edit_Patch PatchOps.Hide
  583. )
  584.  
  585. on mi_PhidePatch Picked do
  586. (
  587.     If SubObjectLevel == undefined then Max Modify Mode
  588.     SubObjectLevel = 1
  589.     
  590.     ApplyOperation Edit_Patch PatchOps.UnHideAll
  591. )
  592.             
  593. on mi_PhidePatch Picked do
  594. (
  595.     If SubObjectLevel == undefined then Max Modify Mode
  596.     SubObjectLevel = 2
  597.     
  598.     ApplyOperation Edit_Patch PatchOps.UnHideAll
  599. )
  600.             
  601. on mi_PhidePatch Picked do
  602. (
  603.     If SubObjectLevel == undefined then Max Modify Mode
  604.     SubObjectLevel = 3
  605.     
  606.     ApplyOperation Edit_Patch PatchOps.UnHideAll
  607. )
  608.  
  609. -- ******************* Spline Mode *************************************************************
  610.  
  611. on  mi_SPlineLine picked do
  612. (
  613.     If SubObjectLevel == undefined then Max Modify Mode
  614.         
  615.     ApplyOperation Edit_Spline SplineOps.StartCreateLine
  616. )
  617.  
  618. on  mi_SPlineAttach picked do
  619. (
  620.     If SubObjectLevel == undefined then Max Modify Mode
  621.     
  622.     ApplyOperation Edit_Spline SplineOps.StartAttach
  623.  
  624. )
  625.  
  626. on  mi_SPlineInsert picked do
  627. (
  628.     If SubObjectLevel == undefined then Max Modify Mode
  629.     SubObjectLevel = 1
  630.     
  631.     ApplyOperation Edit_Spline SplineOps.StartInsert
  632.  
  633. )
  634.  
  635. on  mi_SPlineRefine picked do
  636. (
  637.     If SubObjectLevel == undefined then Max Modify Mode
  638.     SubObjectLevel = 1
  639.     
  640.     ApplyOperation Edit_Spline SplineOps.StartRefineConnect
  641. )
  642.     
  643. on  mi_SPlineConnect picked do
  644. (
  645.     If SubObjectLevel == undefined then Max Modify Mode
  646.     SubObjectLevel = 1
  647.     
  648.     ApplyOperation Edit_Spline SplineOps.StartConnect
  649. )
  650.     
  651. on  mi_SPlineOutline picked do
  652. (
  653.     If SubObjectLevel == undefined then Max Modify Mode
  654.     SubObjectLevel = 3
  655.     
  656.     ApplyOperation Edit_Spline SplineOps.StartOutline
  657. )
  658.     
  659. on  mi_SPlineFillet picked do
  660. (
  661.     If SubObjectLevel == undefined then Max Modify Mode
  662.     SubObjectLevel  = 1
  663.     
  664.     ApplyOperation Edit_Spline SplineOps.StartFillet
  665.  
  666. )
  667.     
  668. on  mi_SPlineChamfer picked do
  669. (
  670.     If SubObjectLevel == undefined then Max Modify Mode
  671.     SubObjectLevel  = 1
  672.     
  673.     ApplyOperation Edit_Spline SplineOps.StartChamfer
  674. )
  675.                                 
  676. on  mi_SPlineTrim picked do
  677. (
  678.     If SubObjectLevel == undefined then Max Modify Mode
  679.     SubObjectLevel = 3
  680.     
  681.     ApplyOperation Edit_Spline SplineOps.StartTrim
  682. )
  683.     
  684. on  mi_SPlineExtend picked do
  685. (
  686.     If SubObjectLevel == undefined then Max Modify Mode
  687.     SubObjectLevel = 3
  688.     
  689.     ApplyOperation Edit_Spline SplineOps.StartExtend
  690.  
  691. )
  692.  
  693. on  mi_SPlineBreakVertex picked do
  694. (
  695.     If SubObjectLevel == undefined then Max Modify Mode
  696.     SubObjectLevel = 1
  697.     
  698.     ApplyOperation Edit_Spline SplineOps.StartBreak
  699. )
  700.  
  701. on  mi_SPlineBreakSegment picked do
  702. (
  703.     If SubObjectLevel == undefined then Max Modify Mode
  704.     SubObjectLevel = 2
  705.     
  706.     ApplyOperation Edit_Spline SplineOps.StartBreak
  707. )
  708.  
  709. on  mi_SPlineClose picked do
  710. (
  711.     If SubObjectLevel == undefined then Max Modify Mode
  712.     SubObjectLevel = 3
  713.     
  714.     ApplyOperation Edit_Spline SplineOps.close
  715. )    
  716.         
  717. on  mi_SPlineWeld picked do
  718. (
  719.     If SubObjectLevel == undefined then Max Modify Mode
  720.     SubObjectLevel = 1
  721.     
  722.     ApplyOperation Edit_Spline SplineOps.Weld
  723. )    
  724.     
  725. on  mi_SHideVertex picked do
  726. (
  727.     If SubObjectLevel == undefined then Max Modify Mode
  728.     SubObjectLevel = 1
  729.     
  730.     ApplyOperation Edit_Spline SplineOps.Hide
  731.  
  732. )
  733.     
  734. on  mi_SHideSegment picked do
  735. (
  736.     If SubObjectLevel == undefined then Max Modify Mode
  737.     SubObjectLevel = 2
  738.     
  739.     ApplyOperation Edit_Spline SplineOps.Hide
  740. )
  741.  
  742. on  mi_SHideSpline picked do
  743. (
  744.     If SubObjectLevel == undefined then Max Modify Mode
  745.     SubObjectLevel = 3
  746.     
  747.     ApplyOperation Edit_Spline SplineOps.Hide
  748. )
  749.     
  750. on  mi_SUNHideVertex picked do
  751. (
  752.     If SubObjectLevel == undefined then Max Modify Mode
  753.     SubObjectLevel = 1
  754.     
  755.     ApplyOperation Edit_Spline SplineOps.UnHideAll
  756. )
  757.     
  758. on  mi_SUNHideSegment picked do
  759. (
  760.     If SubObjectLevel == undefined then Max Modify Mode
  761.     SubObjectLevel = 2
  762.     
  763.     ApplyOperation Edit_Spline SplineOps.UnHideAll
  764. )
  765.  
  766. on  mi_SUNHideSpline picked do
  767. (
  768.     If SubObjectLevel == undefined then Max Modify Mode
  769.     SubObjectLevel = 3
  770.     
  771.     ApplyOperation Edit_Spline SplineOps.UnHideAll
  772. )
  773.  
  774.  
  775. -- ********************** Stack Operations **************************
  776.  
  777.     on mi_CollapseSel Picked do
  778.     (
  779.         Try
  780.         (
  781.             For i in 1 to selection.count do
  782.             (
  783.                 if CanConvertTo $[i] Mesh then (Undo on (ConvertToMesh $[i]))
  784.             )
  785.         
  786.         )
  787.         Catch ()
  788.     )
  789.     
  790.     on mi_base picked do
  791.     (
  792.         If SubObjectLevel == undefined then Max Modify Mode
  793.         modPanel.setCurrentObject $.baseObject 
  794.     )
  795.  
  796.     on mi_Collapse picked do
  797.     (
  798.         Undo on 
  799.         (
  800.             OBJ = $
  801.             CollapseStack $
  802.             If SubObjectLevel == undefined then Max Modify Mode
  803.             Select OBJ        
  804.         )
  805.     )
  806.     
  807.     on mi_cMesh picked do
  808.     (    
  809.         Undo on
  810.          (
  811.             OBJ = $
  812.             ConvertToMesh $
  813.             If SubObjectLevel == undefined then Max Modify Mode
  814.         --    Select OBJ        
  815.         )
  816.     )
  817.     
  818.     on mi_CPatch picked do
  819.     (
  820.         Undo on
  821.         (
  822.             OBJ = $
  823.             CollapseStack $
  824.             Select OBJ
  825.             ConvertTo $ Patch
  826.             If SubObjectLevel == undefined then Max Modify Mode
  827.             Select OBJ
  828.         )    
  829.     )
  830.     
  831.     on mi_cEMesh picked do
  832.     (    
  833.         Undo on 
  834.         (
  835.         OBJ = $
  836.         ConverttoMesh $
  837.         If SubObjectLevel == undefined then Max Modify Mode
  838.     --    Select OBJ        
  839.         )
  840.     )
  841.     
  842.     on mi_CEPatch picked do
  843.     (
  844.         Undo on
  845.         (
  846.             OBJ = $
  847.             CollapseStack $
  848.             Select OBJ
  849.             ConvertTo $ Patch
  850.             If SubObjectLevel == undefined then Max Modify Mode
  851.             Select OBJ
  852.         )    
  853.     )
  854.     
  855.     on mi_CSpline picked do
  856.     (
  857.         Undo on
  858.         (
  859.             OBJ = $
  860.             ConvertToSplineShape $
  861.             If SubObjectLevel == undefined then Max Modify Mode
  862.         --    Select OBJ
  863.         )
  864.     ) 
  865.     
  866.     on mi_CSMesh picked do
  867.     (
  868.         Undo on
  869.         (
  870.             OBJ = $
  871.             ConvertToMesh $
  872.             If SubObjectLevel == undefined then Max Modify Mode
  873.         --    Select OBJ
  874.         )
  875.     ) 
  876.  
  877.         
  878. --- **********************  Mesh Operations *************************    
  879.          
  880.     on mi_top picked do
  881.     (
  882.         If subobjectLevel == undefined then Max Modify Mode
  883.         modPanel.setCurrentObject $.modifiers[1] 
  884.     )
  885.     on mi_Mtop picked do
  886.     (
  887.         If subobjectLevel == undefined then Max Modify Mode
  888.         modPanel.setCurrentObject $.modifiers[1] 
  889.     )
  890.  
  891.     on mi_Sub0 picked do
  892.     (
  893.         SubObjectLevel = 0
  894.     )
  895.  
  896.     on mi_SubA0 picked do
  897.     (
  898.         if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject
  899.         If SubObjectLevel == undefined then Max Modify Mode
  900.         SubObjectLevel = 0
  901.     )
  902.  
  903.     on mi_Verts picked do
  904.     (
  905.         If SubObjectLevel == undefined then Max Modify Mode
  906.         SubObjectLevel = 1
  907.     )
  908.  
  909.     on mi_Faces picked do
  910.     (
  911.         If SubObjectLevel == undefined then Max Modify Mode
  912.         SubObjectLevel = 3
  913.     )
  914.  
  915.     on mi_Edges picked do
  916.     (
  917.         If SubObjectLevel == undefined then Max Modify Mode
  918.         SubObjectLevel = 2
  919.     )
  920.  
  921.     on mi_Poly picked do
  922.     (
  923.         If SubObjectLevel == undefined then Max Modify Mode
  924.         SubObjectLevel = 4
  925.     )
  926.     
  927.     on mi_Element picked do
  928.     (
  929.         If SubObjectLevel == undefined then Max Modify Mode
  930.         SubObjectLevel = 5
  931.     )
  932.     on mi_BVerts picked do
  933.     (
  934.         if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject
  935.         SubObjectLevel = 1
  936.     )
  937.  
  938.     on mi_BFaces picked do
  939.     (
  940.         if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject
  941.         SubObjectLevel = 3
  942.     )
  943.  
  944.     on mi_BEdges picked do
  945.     (
  946.         if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject
  947.         SubObjectLevel = 2
  948.     )
  949.  
  950.     on mi_BPoly picked do
  951.     (
  952.         if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject
  953.         SubObjectLevel = 4
  954.     )
  955.     
  956.     on mi_BElement picked do
  957.     (
  958.         if ClassOf (modPanel.getCurrentObject ()) != Editable_Mesh then modPanel.setCurrentObject $.baseObject
  959.         SubObjectLevel = 5
  960.     )
  961.  
  962.  
  963.  
  964. -- *******************************************************************
  965. --  Mesh Ops:  Non-Modal/Immediate Actions based on currently
  966. --                 selected items (vertex/face/edge/poly)
  967. --
  968. --  SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons
  969. --
  970. -- *******************************************************************
  971.  
  972.     on mi_MWeld picked do    -- weld selected vertices
  973.     (        
  974.     --    if (no_selected_mesh_vertices()) then
  975.     --    (
  976.     --    subobjectlevel = 1     -- switch to vertex mode so the user can see/confirm
  977.     --        messagebox "No vertices currently selected.\nPlease select vertices first." Title:"Mesh Editing" Beep:false
  978.     --        return()
  979. --        )
  980.     --    if subobjectlevel != 1 then subobjectlevel = 1
  981.     --    meshops.weld $
  982.  
  983.  
  984.         if subobjectlevel == undefined then max modify mode
  985.         if subobjectlevel != 1 then subobjectlevel = 1
  986.         
  987.         ApplyOperation Edit_Mesh meshops.Weld
  988.  
  989.     )
  990.     
  991.     on mi_MHide picked do
  992.     (
  993.         if subobjectlevel == undefined then 
  994.         (
  995.             if ($ == undefined) then
  996.                 messagebox "Nothing Selected" title:""
  997.             else
  998.                 hide $
  999.         )
  1000.         
  1001.         else if subobjectlevel == 0 then 
  1002.         (
  1003.             if ($ == undefined) then
  1004.                 messagebox "Nothing Selected" title:""
  1005.             else
  1006.                 hide $
  1007.         )
  1008.         
  1009.         else if subobjectlevel == 1 then -- verify that vertices are selected
  1010.         (
  1011.             if no_selected_mesh_vertices() then
  1012.             (
  1013.                  messagebox "No vertices selected.\nPlease select vertices first." title:""
  1014.             )
  1015.             
  1016.             else
  1017.             (
  1018.                 
  1019.                 ApplyOperation Edit_Mesh meshops.Hide
  1020.             )
  1021.         
  1022.         )
  1023.  
  1024.         else if subobjectlevel == 2 then -- hiding edges is not supported
  1025.             messagebox "Edges cannot be hidden/unhidden" title:""
  1026.             
  1027.         else if (subobjectlevel == 3 or subobjectlevel == 4  or subobjectlevel == 5) then -- verify that faces are selected
  1028.         (
  1029.             if no_selected_mesh_faces() then
  1030.             (
  1031.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:""
  1032.             )
  1033.             
  1034.             else
  1035.             (
  1036.                 
  1037.                 ApplyOperation Edit_Mesh meshops.Hide
  1038.             )
  1039.         )
  1040.     )
  1041.     
  1042.     on mi_MUnhideall picked do
  1043.     (
  1044.         if subobjectlevel == undefined then 
  1045.             max unhide all
  1046.         
  1047.         else if subobjectlevel == 0 then 
  1048.             max unhide all
  1049.                 
  1050.         else if subobjectlevel == 2 then -- hiding edges is not supported
  1051.             messagebox "Edges cannot be hidden/unhidden" title:""
  1052.         else
  1053.         
  1054.         ApplyOperation Edit_Mesh meshops.UnhideAll
  1055.     )
  1056.     
  1057.     
  1058.     on mi_MCollapse picked do
  1059.     (
  1060.         if subobjectlevel == undefined then 
  1061.             messagebox "Please activate a mesh edit mode." title:""
  1062.         
  1063.         else if subobjectlevel == 0 then 
  1064.             messagebox "Please activate a mesh edit mode." title:""
  1065.         
  1066.         else if subobjectlevel == 1 then
  1067.         (
  1068.             if no_selected_mesh_vertices() then
  1069.             (
  1070.                 messagebox "No vertices selected.\n Please select vertices first.\n" title:""
  1071.                 return()
  1072.             )
  1073.     
  1074.             else
  1075.                 Try (
  1076.                         ApplyOperation Edit_Mesh meshops.collapse
  1077.                     )
  1078.                 Catch ()
  1079.         )
  1080.         
  1081.         else if subobjectlevel == 2 then
  1082.         (
  1083.             if no_selected_mesh_edges() then
  1084.             (
  1085.                 messagebox "No edges selected.\n Please select edges first.\n" title:""
  1086.                 return()
  1087.             )
  1088.     
  1089.             else
  1090.                     Try 
  1091.                     (                    
  1092.                         ApplyOperation Edit_Mesh meshops.collapse
  1093.                     )
  1094.                     Catch ()
  1095.         )
  1096.         
  1097.         else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then
  1098.         (
  1099.             if no_selected_mesh_faces() then
  1100.             (
  1101.                 messagebox "Nothing selected.\n Please select faces, polygons, or elements first.\n" title:""
  1102.                 return()
  1103.             )
  1104.     
  1105.             else
  1106.                     Try (
  1107.                     
  1108.                     ApplyOperation Edit_Mesh meshops.collapse
  1109.                     )
  1110.                 Catch ()
  1111.         )
  1112.     )
  1113.     
  1114.  
  1115.     on mi_MAttach picked do
  1116.     (
  1117.         if subobjectlevel == undefined then max modify mode
  1118.         
  1119.         ApplyOperation Edit_Mesh meshops.startAttach
  1120.     
  1121.     )
  1122.     
  1123.     on mi_MDetach picked do
  1124.     (
  1125.         if subobjectlevel == undefined then max modify mode
  1126.         
  1127.         if subobjectlevel == 0 then 
  1128.             messagebox "Please activate a mesh edit mode." title:""
  1129.                 
  1130.         else if subobjectlevel == 2 then -- detaching edges is not supported
  1131.             messagebox "Edges cannot be detached" title:""
  1132.  
  1133.         else
  1134.         (
  1135.             
  1136.             ApplyOperation Edit_Mesh meshops.Detach
  1137.         )    
  1138.     )
  1139.     
  1140.     on mi_MViewAlign picked do
  1141.     (
  1142.         if subobjectlevel == undefined then max modify mode
  1143.         
  1144.         if subobjectlevel == 0 then 
  1145.             messagebox "Please activate a mesh edit mode." title:""
  1146.                 
  1147.         else if (subobjectlevel == 1) then
  1148.         (
  1149.             if no_selected_mesh_faces() then
  1150.             (
  1151.                 messagebox "No vertices selected.\nPlease select vertices first.\n" title:""
  1152.                 return()
  1153.             )
  1154.         )
  1155.  
  1156.         else if (subobjectlevel == 2) then
  1157.         (
  1158.             if no_selected_mesh_faces() then
  1159.             (
  1160.                 messagebox "No edges selected.\nPlease select edges first.\n" title:""
  1161.                 return()
  1162.             )    
  1163.         )
  1164.  
  1165.         else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then
  1166.         (
  1167.             if no_selected_mesh_faces() then
  1168.             (
  1169.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first.\n" title:""
  1170.                 return()
  1171.             )
  1172.         )
  1173.  
  1174.         
  1175.         ApplyOperation Edit_Mesh meshops.viewAlign
  1176.     )
  1177.     
  1178.     on mi_MGridAlign picked do
  1179.     (
  1180.         if subobjectlevel == undefined then max modify mode
  1181.         
  1182.         if subobjectlevel == 0 then 
  1183.             messagebox "Please activate a mesh edit mode." title:""
  1184.                 
  1185.         else if (subobjectlevel == 1) then
  1186.         (
  1187.             if no_selected_mesh_vertices() then
  1188.             (
  1189.                 messagebox "No vertices selected.\nPlease select vertices first.\n" title:""
  1190.                 return()
  1191.             )
  1192.         )
  1193.  
  1194.         else if (subobjectlevel == 2) then
  1195.         (
  1196.             if no_selected_mesh_edges() then
  1197.             (
  1198.                 messagebox "No edges selected.\nPlease select edges first.\n" title:""
  1199.                 return()
  1200.             )    
  1201.         )
  1202.  
  1203.         else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then
  1204.         (
  1205.             if no_selected_mesh_faces() then
  1206.             (
  1207.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first.\n" title:""
  1208.                 return()
  1209.             )
  1210.         )
  1211.  
  1212.         
  1213.         ApplyOperation Edit_Mesh meshops.gridAlign
  1214.     )
  1215.     
  1216.     on mi_MMakePlanar picked do
  1217.     (
  1218.         if subobjectlevel == undefined then max modify mode
  1219.         
  1220.         if subobjectlevel == 0 then 
  1221.             messagebox "Please activate a mesh edit mode." title:""
  1222.                 
  1223.         else if (subobjectlevel == 1) then
  1224.         (
  1225.             if no_selected_mesh_vertices() then
  1226.             (
  1227.                 messagebox "No vertices selected.\nPlease select vertices first.\n" title:""
  1228.                 return()
  1229.             )
  1230.         )
  1231.  
  1232.         else if (subobjectlevel == 2) then
  1233.         (
  1234.             if no_selected_mesh_edges() then
  1235.             (
  1236.                 messagebox "No edges selected.\nPlease select edges first.\n" title:""
  1237.                 return()
  1238.             )    
  1239.         )
  1240.  
  1241.         else if (subobjectlevel == 3 or subobjectlevel == 4 or subobjectlevel == 5) then
  1242.         (
  1243.             if no_selected_mesh_faces() then
  1244.             (
  1245.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first.\n" title:""
  1246.                 return()
  1247.             )
  1248.         )
  1249.  
  1250.  
  1251.         
  1252.         ApplyOperation Edit_Mesh meshops.makePlanar
  1253.     )
  1254.     
  1255.     on mi_MFlipSelected picked do
  1256.     (
  1257.         if subobjectlevel == undefined then 
  1258.             messagebox "Please activate a mesh edit mode." title:""
  1259.         
  1260.         else if subobjectlevel == 0 then 
  1261.             messagebox "Please activate a mesh edit mode." title:""
  1262.         
  1263.         else if subobjectlevel == 1 then -- flipping vertices is not supported
  1264.             messagebox "Vertex normals cannot be flipped" title:""
  1265.             
  1266.         else if subobjectlevel == 2 then -- flipping edges is not supported
  1267.             messagebox "Edge normals cannot be flipped" title:""
  1268.             
  1269.         else if (subobjectlevel == 3 or subobjectlevel == 4  or subobjectlevel == 5) then -- verify that faces are selected
  1270.         (
  1271.             if no_selected_mesh_faces() then
  1272.             (
  1273.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:""
  1274.             )
  1275.             
  1276.             else
  1277.             (
  1278.                 
  1279.                 ApplyOperation Edit_Mesh meshops.flipnormal
  1280.  
  1281.             )
  1282.         )
  1283.     )
  1284.     
  1285.     on mi_MUnifySelected picked do
  1286.     (
  1287.         if subobjectlevel == undefined then 
  1288.             messagebox "Please activate a mesh edit mode." title:""
  1289.         
  1290.         else if subobjectlevel == 0 then 
  1291.             messagebox "Please activate a mesh edit mode." title:""
  1292.         
  1293.         else if subobjectlevel == 1 then -- unifying vertices is not supported
  1294.             messagebox "Vertices cannot be Unified" title:""
  1295.             
  1296.         else if subobjectlevel == 2 then -- unifying edges is not supported
  1297.             messagebox "Edges cannot be Unified" title:""
  1298.             
  1299.         else if (subobjectlevel == 3 or subobjectlevel == 4  or subobjectlevel == 5) then -- verify that faces are selected
  1300.         (
  1301.             if no_selected_mesh_faces() then
  1302.             (
  1303.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:""
  1304.             )
  1305.             
  1306.             else
  1307.             (
  1308.                 ApplyOperation Edit_Mesh meshops.unifynormal
  1309.             )
  1310.         )
  1311.     )
  1312.     
  1313.     on  mi_MInsetselected picked do
  1314.     (    
  1315.         if subobjectlevel == undefined then 
  1316.             messagebox "Please select a subobject level." title:""
  1317.         
  1318.         else if subobjectlevel == 0 then 
  1319.             messagebox "Please select a subobject level." title:""
  1320.         
  1321.         else if subobjectlevel == 1 then -- inset for vertices is not supported
  1322.             messagebox "Vertices cannot be Inset" title:""
  1323.             
  1324.         else if subobjectlevel == 2 then -- inset for edges is not supported
  1325.             messagebox "Edges cannot be Inset" title:""
  1326.             
  1327.         else if subobjectlevel == 5 then -- inset for elements is not supported
  1328.             messagebox "Elements cannot be Inset" title:""
  1329.             
  1330.         else if (subobjectlevel == 3 or subobjectlevel == 4 ) then -- verify that faces are selected
  1331.         (
  1332.             if no_selected_mesh_faces() then
  1333.             (
  1334.                 messagebox "Nothing selected.\nPlease select faces, polygons, or elements first." title:""
  1335.                 return()
  1336.             )
  1337.             
  1338.             else
  1339.             (
  1340.                 extrudeface $ #selection 0 100
  1341.                 update $
  1342.                 Max Scale
  1343.             )
  1344.         )    
  1345.     )
  1346.  
  1347. -- *******************************************************************
  1348. --  Mesh Ops:  Vertex Mode  
  1349. --
  1350. --  SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons
  1351. --
  1352. -- *******************************************************************
  1353.  
  1354.     on mi_MVChamfer picked do
  1355.     (
  1356.         if subobjectlevel == undefined then max modify mode
  1357.         if subobjectlevel != 1 then subobjectlevel = 1
  1358.         
  1359.         ApplyOperation Edit_Mesh meshops.startchamfer
  1360.     
  1361.     )
  1362.  
  1363.     on mi_MVCreate picked do
  1364.     (
  1365.         if subobjectlevel == undefined then max modify mode
  1366.         if subobjectlevel != 1 then subobjectlevel = 1
  1367.         
  1368.         
  1369.         ApplyOperation Edit_Mesh meshops.startCreate
  1370.     
  1371.     )
  1372.     
  1373.     on mi_MVBreak picked do
  1374.     (
  1375.         if subobjectlevel == undefined then max modify mode
  1376.         
  1377.         if (no_selected_mesh_vertices()) then
  1378.         (
  1379.             subobjectlevel = 1     -- switch to vertex mode so the user can see/confirm
  1380.             messagebox "No vertices currently selected.\nPlease select vertices first."
  1381.             return()
  1382.         )
  1383.                     
  1384.         if subobjectlevel != 1 then 
  1385.         (
  1386.             subobjectlevel = 1
  1387.             if not queryBox "Switched to Vertex Mode...\n Break selected vertices now?" then return()
  1388.         )
  1389.         
  1390.         
  1391.         ApplyOperation Edit_Mesh meshops.break
  1392.     
  1393.     )
  1394.     
  1395.     on mi_MVRemoveIsolatedVerts picked do
  1396.     (
  1397.         if subobjectlevel == undefined then max modify mode
  1398.         
  1399.         if subobjectlevel != 1 then 
  1400.         (
  1401.             subobjectlevel = 1
  1402.             if not queryBox "Switched to Vertex Mode...\n Remove isolated vertices now?" then return()
  1403.         )
  1404.     
  1405.         
  1406.         ApplyOperation Edit_Mesh meshops.removeisolatedverts
  1407.     
  1408.     )
  1409.     
  1410.  
  1411.  
  1412.     on mi_MVSlicePlane picked do
  1413.     (
  1414.         if subobjectlevel == undefined then max modify mode
  1415.         if subobjectlevel != 1 then subobjectlevel = 1
  1416.         meshops.startsliceplane $
  1417.     )
  1418.     
  1419.     on mi_MVWeldTarget picked do
  1420.     (
  1421.         if subobjectlevel == undefined then max modify mode
  1422.         if subobjectlevel != 1 then subobjectlevel = 1
  1423.  
  1424.         
  1425.         ApplyOperation Edit_Mesh meshops.startweldtarget
  1426.  
  1427.     )
  1428.     
  1429.  
  1430. -- *******************************************************************
  1431. -- Mesh Ops:  Edge Mode 
  1432. --
  1433. --  SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons
  1434. --
  1435. -- *******************************************************************
  1436.  
  1437.     on mi_MEExtrude_normal picked do
  1438.     (
  1439.         if subobjectlevel == undefined then max modify mode
  1440.         if subobjectlevel != 2 then subobjectlevel = 2
  1441.             
  1442.         
  1443.         ApplyOperation Edit_Mesh meshops.startExtrude
  1444.         
  1445.     )
  1446.  
  1447.     on mi_MEChamfer picked do
  1448.     (
  1449.         if subobjectlevel == undefined then max modify mode
  1450.         if subobjectlevel != 2 then subobjectlevel = 2
  1451.  
  1452.         
  1453.         ApplyOperation Edit_Mesh meshops.startChamfer
  1454.         
  1455.     )
  1456.  
  1457.     on mi_MECut picked do
  1458.     (
  1459.         if subobjectlevel == undefined then max modify mode
  1460.         if subobjectlevel != 2 then subobjectlevel = 2
  1461.         
  1462.         
  1463.         ApplyOperation Edit_Mesh meshops.startCut
  1464.         
  1465.     )
  1466.  
  1467.     on mi_MEsliceplane picked do
  1468.     (
  1469.         if subobjectlevel == undefined then max modify mode
  1470.         if subobjectlevel != 2 then subobjectlevel = 2
  1471.         
  1472.         
  1473.         ApplyOperation Edit_Mesh meshops.startsliceplane
  1474.     )
  1475.  
  1476.     on mi_MEDivide picked do 
  1477.     (
  1478.         if subobjectlevel == undefined then max modify mode
  1479.         if subobjectlevel != 2 then subobjectlevel = 2
  1480.     
  1481.         
  1482.         ApplyOperation Edit_Mesh meshops.Startdivide
  1483.     )
  1484.  
  1485.     on mi_METurn picked do
  1486.     (
  1487.         if subobjectlevel == undefined then max modify mode
  1488.         if subobjectlevel != 2 then subobjectlevel = 2
  1489.     
  1490.         
  1491.         ApplyOperation Edit_Mesh meshops.Startturn
  1492.     )                
  1493.     
  1494.     on mi_MEVisibleEdge picked do
  1495.     (
  1496.         if subobjectlevel == undefined then max modify mode
  1497.         
  1498.         -- find currently selected edges and report/return if none selected
  1499.         
  1500.         if (no_selected_mesh_edges()) then
  1501.         (
  1502.             subobjectlevel = 2     -- switch to edge mode so the user can see/confirm
  1503.             messagebox "No edges currently selected.\nPlease select an edge first."
  1504.         )
  1505.                     
  1506.         if subobjectlevel != 2 then 
  1507.         (
  1508.             subobjectlevel = 2
  1509.             if not queryBox "Switched to Edge Mode...\n Make selected edges Visible?" then return()
  1510.         )
  1511.     
  1512.         
  1513.         ApplyOperation Edit_Mesh meshops.visibleEdge
  1514.     )                
  1515.     
  1516.     on mi_MEInvisibleEdge picked do
  1517.     (
  1518.         if subobjectlevel == undefined then max modify mode
  1519.  
  1520.         
  1521.         if (no_selected_mesh_edges()) then
  1522.         (
  1523.             subobjectlevel = 2     -- switch to edge mode so the user can see/confirm
  1524.             messagebox "No edges currently selected.\nPlease select an edge first." title:""
  1525.         )
  1526.         
  1527.         if subobjectlevel != 2 then 
  1528.         (
  1529.             subobjectlevel = 2
  1530.             if not queryBox "Switched to Edge Mode...Make selected edges Invisible?" then return()
  1531.         )
  1532.         
  1533.         
  1534.         ApplyOperation Edit_Mesh meshops.invisibleEdge
  1535.     )                
  1536.     
  1537.     on mi_MEselectOpenEdges picked do
  1538.     (
  1539.         if subobjectlevel == undefined then max modify mode
  1540.         if subobjectlevel != 2 then subobjectlevel = 2
  1541.     
  1542.         
  1543.         ApplyOperation Edit_Mesh meshops.selectOpenEdges
  1544.     )                
  1545.     
  1546.  
  1547.     on mi_MECreateShapeFromEdges picked do
  1548.     (
  1549.         if subobjectlevel == undefined then max modify mode
  1550.         if subobjectlevel != 2 then subobjectlevel = 2
  1551.     
  1552.         
  1553.         ApplyOperation Edit_Mesh meshops.createshapefromedges
  1554.     )                
  1555.         
  1556.  
  1557. -- *******************************************************************
  1558. --  Mesh Ops: Face Mode  
  1559. --
  1560. --  SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons
  1561. --
  1562. -- *******************************************************************
  1563.  
  1564.     on mi_MFExtrude_normal picked do
  1565.     (
  1566.         if subobjectlevel == undefined then max modify mode
  1567.         if subobjectlevel != 3 then subobjectlevel = 3
  1568.         
  1569.         
  1570.         ApplyOperation Edit_Mesh meshops.startExtrude
  1571.     )
  1572.  
  1573.     on mi_MFbevel picked do
  1574.     (
  1575.         if subobjectlevel == undefined then max modify mode
  1576.         if subobjectlevel != 3 then subobjectlevel = 3
  1577.         
  1578.         
  1579.         ApplyOperation Edit_Mesh meshops.startBevel
  1580.  
  1581.     )
  1582.     
  1583.     on mi_MFCreate picked do
  1584.     (
  1585.         if subobjectlevel == undefined then max modify mode
  1586.         if subobjectlevel != 3 then subobjectlevel = 3
  1587.         
  1588.         
  1589.         ApplyOperation Edit_Mesh meshops.startCreate
  1590.     )
  1591.     
  1592.     on mi_MFCut picked do
  1593.     (
  1594.         if subobjectlevel == undefined then max modify mode
  1595.         if subobjectlevel != 3 then subobjectlevel = 3
  1596.     
  1597.         
  1598.         ApplyOperation Edit_Mesh meshops.startCut
  1599.  
  1600.     )
  1601.  
  1602.     on mi_MFDivide picked do 
  1603.     (
  1604.         if subobjectlevel == undefined then max modify mode
  1605.         if subobjectlevel != 3 then subobjectlevel = 3
  1606.         
  1607.         
  1608.         ApplyOperation Edit_Mesh meshops.StartDivide
  1609.  
  1610.         
  1611.     )
  1612.  
  1613.     on mi_MFSlicePlane picked do
  1614.     (
  1615.         if subobjectlevel == undefined then max modify mode
  1616.         if subobjectlevel != 3 then subobjectlevel = 3
  1617.     
  1618.     
  1619.         
  1620.         ApplyOperation Edit_Mesh meshops.startsliceplane
  1621.  
  1622.     )
  1623.  
  1624.     on mi_MFFlipNormalMode picked do
  1625.     (
  1626.         if subobjectlevel == undefined then max modify mode
  1627.         if subobjectlevel != 3 then subobjectlevel = 3
  1628.         
  1629.         
  1630.         ApplyOperation Edit_Mesh meshops.startFlipNormalmode
  1631.     )
  1632.     
  1633.  
  1634. -- *******************************************************************
  1635. -- Mesh Ops: Polygon Mode 
  1636. --
  1637. --  SO LEVELS: 1 = vertex; 2 = edges; 3 = faces; 4 = polygons
  1638. --
  1639. -- *******************************************************************
  1640.  
  1641.     on mi_MPExtrude_normal picked do
  1642.     (
  1643.         if subobjectlevel == undefined then max modify mode
  1644.         if subobjectlevel != 4 then subobjectlevel = 4
  1645.         
  1646.         
  1647.         ApplyOperation Edit_Mesh meshops.startExtrude
  1648.     )
  1649.  
  1650.     on mi_MPCreate picked do
  1651.     (
  1652.         if subobjectlevel == undefined then max modify mode
  1653.         if subobjectlevel != 4 then subobjectlevel = 4
  1654.         
  1655.         
  1656.         ApplyOperation Edit_Mesh meshops.startCreate
  1657.  
  1658.     )
  1659.  
  1660.     on mi_MPCut picked do
  1661.     (
  1662.         if subobjectlevel == undefined then max modify mode
  1663.         if subobjectlevel != 4 then subobjectlevel = 4
  1664.         
  1665.         
  1666.         ApplyOperation Edit_Mesh meshops.startCut
  1667.  
  1668.         
  1669.     )
  1670.  
  1671.     on mi_MPDivide picked do 
  1672.     (
  1673.         if subobjectlevel == undefined then max modify mode
  1674.         if subobjectlevel != 4 then subobjectlevel = 4
  1675.         
  1676.         
  1677.         ApplyOperation Edit_Mesh meshops.Startdivide
  1678.  
  1679.         
  1680.     )
  1681.  
  1682.     on mi_MPSlicePlane picked do
  1683.     (
  1684.         if subobjectlevel == undefined then max modify mode
  1685.         if subobjectlevel != 4 then subobjectlevel = 4
  1686.  
  1687.         
  1688.         ApplyOperation Edit_Mesh meshops.startsliceplane
  1689.  
  1690.     )
  1691.  
  1692.     on mi_MPbevel picked do
  1693.     (
  1694.         if subobjectlevel == undefined then max modify mode
  1695.         if subobjectlevel != 4 then subobjectlevel = 4
  1696.     
  1697.         
  1698.         ApplyOperation Edit_Mesh meshops.startBevel
  1699.  
  1700.     )
  1701.  
  1702.     on mi_MPFlipNormalMode picked do
  1703.     (
  1704.         if subobjectlevel == undefined then max modify mode
  1705.         if subobjectlevel != 4 then subobjectlevel = 4
  1706.         
  1707.         
  1708.         ApplyOperation Edit_Mesh meshops.startFlipNormalmode
  1709.     )
  1710.     
  1711.  
  1712. -- *******************************************************************
  1713. -- Spline Modeling
  1714.  
  1715. on mi_SBase picked do
  1716.     (
  1717.         If SubObjectLevel == undefined then Max Modify Mode
  1718.         SubObjectLevel = 0
  1719.     )
  1720.  
  1721. on mi_SVerts picked do
  1722.     (
  1723.         If SubObjectLevel == undefined then Max Modify Mode
  1724.         SubObjectLevel = 1
  1725.     )
  1726.  
  1727.     on mi_SSegments picked do
  1728.     (
  1729.         If SubObjectLevel == undefined then Max Modify Mode
  1730.         SubObjectLevel = 2
  1731.     )
  1732.  
  1733.     on mi_SSplines picked do
  1734.     (
  1735.         If SubObjectLevel == undefined then Max Modify Mode
  1736.         SubObjectLevel = 3
  1737.     )
  1738.     
  1739.     
  1740. on mi_LBase picked do
  1741.     (
  1742.         If SubObjectLevel == undefined then Max Modify Mode
  1743.         SubObjectLevel = 0
  1744.     )
  1745.  
  1746. on mi_LVerts picked do
  1747.     (
  1748.         If SubObjectLevel == undefined then Max Modify Mode
  1749.         SubObjectLevel = 1
  1750.     )
  1751.  
  1752.     on mi_LSegments picked do
  1753.     (
  1754.         If SubObjectLevel == undefined then Max Modify Mode
  1755.         SubObjectLevel = 2
  1756.     )
  1757.  
  1758.     on mi_LSplines picked do
  1759.     (
  1760.         If SubObjectLevel == undefined then Max Modify Mode
  1761.         SubObjectLevel = 3
  1762.     )
  1763.     
  1764. -- *******************************************************************
  1765. -- Spline Modeling
  1766.  
  1767. on mi_SBase picked do
  1768.     (
  1769.         If SubObjectLevel == undefined then Max Modify Mode
  1770.         SubObjectLevel = 0
  1771.     )
  1772.  
  1773. on mi_SVerts picked do
  1774.     (
  1775.         If SubObjectLevel == undefined then Max Modify Mode
  1776.         SubObjectLevel = 1
  1777.     )
  1778.  
  1779.     on mi_SSegments picked do
  1780.     (
  1781.         If SubObjectLevel == undefined then Max Modify Mode
  1782.         SubObjectLevel = 2
  1783.     )
  1784.  
  1785.     on mi_SSplines picked do
  1786.     (
  1787.         If SubObjectLevel == undefined then Max Modify Mode
  1788.         SubObjectLevel = 3
  1789.     )
  1790.     
  1791. -- *******************************************************************8
  1792. -- Patch Modeling    
  1793. on mi_PBase picked do
  1794.     (
  1795.         If SubObjectLevel == undefined then Max Modify Mode
  1796.         SubObjectLevel = 0
  1797.     )
  1798.  
  1799. on mi_PVerts picked do
  1800.     (
  1801.         If SubObjectLevel == undefined then Max Modify Mode
  1802.         SubObjectLevel = 1
  1803.     )
  1804.  
  1805.     on mi_PEdges picked do
  1806.     (
  1807.         If SubObjectLevel == undefined then Max Modify Mode
  1808.         SubObjectLevel = 2
  1809.     )
  1810.  
  1811.     on mi_PPatch picked do
  1812.     (
  1813.         If SubObjectLevel == undefined then Max Modify Mode
  1814.         SubObjectLevel = 3
  1815.     )
  1816.     
  1817.  
  1818.  
  1819.  
  1820. -- *******************************************************************
  1821. -- ************************ Lights ***********************************
  1822.     on mi_LightON picked do
  1823.     (
  1824.         $.on = (not $.on)
  1825.     )
  1826.     
  1827.     on mi_Cast picked do
  1828.     (
  1829.         $.CastShadows = (not $.CastShadows)
  1830.     )
  1831.     
  1832. -- ************************ Light Properties *************************
  1833.     on mi_Lightprop picked do
  1834.     (
  1835.         Max Modify Mode
  1836.     )    
  1837.  
  1838. ---************************* Manipulator **************************
  1839.  on mi_Manip picked do
  1840.  (
  1841.      Max ShowAxisIcon
  1842.  )
  1843. )
  1844.  
  1845. RcMenu Startup
  1846. (
  1847. fn flt_Control = (Not (KeyBoard.controlPressed))
  1848. fn flt_ModSel = Selection.count == 1 and SubObjectLevel == undefined and (Not (KeyBoard.controlPressed))
  1849.  
  1850. menuItem    mi_Select          "Select Mode"                Filter:flt_Control
  1851. menuItem    mi_Modify          "Modify Mode"                 Filter:flt_ModSel
  1852.  
  1853. on mi_modify picked do (if SubObjectlevel == undefined then Max Modify Mode)
  1854. on mi_Select picked do (Max Select)
  1855.  
  1856.     On Startup open do
  1857.     (
  1858.         If Keyboard.controlPressed then
  1859.         (
  1860.             UnregisterRightClickMenu MyRCmenu
  1861.             Try(RegisterRightClickMenu MyRCmenu) Catch (MessageBox "Custom right click menu not loaded." title:"Right Click Menu")
  1862.         )    
  1863.         Else
  1864.         (
  1865.             Try(UnRegisterRightClickMenu MyRCmenu)Catch ()
  1866.             RegisterRightClickMenu MyRCmenu
  1867.     
  1868.         )
  1869.     )
  1870.     
  1871. )
  1872.  
  1873. RegisterRightClickMenu Startup
  1874.