How do I Select Edges Between Material IDs?

A user asked

I want to select the edges between different Material IDs in an Editable Poly object.

Answer

The following code implements a possible solution:

SCRIPT

   macroScript SelMatIDEdges category: "MXS Help"
   (
       -- The ActionItem will only be enabled when a single object with
       -- Editable_Poly base object is selected:
       on isEnabled return selection.count == 1 and classof selection[1].baseobject == Editable_Poly
       -- When executed,
       on execute do
       (
           theEP = selection[1].baseobject --get the base object of the selected object
           edgeSelArray = #() --init. an empty array to collect the edges
           eCount = polyOp.getNumEdges theEP --get the total number of edges
           for edge = 1 to eCount do --loop through all edges
           (
               -- get the faces sharing the current edge
               theFaces = (polyOp.getFacesUsingEdge theEP #(edge)) as array
               -- if there are two faces sharing the edge,
               if theFaces.count == 2 do
               (
                   -- compare their Material IDs. If different, collect the edge
                   if polyOp.getFaceMatID theEP theFaces[1] != polyOp.getFaceMatID theEP theFaces[2] do
                       append edgeSelArray edge
               ) --end if
           ) --end loop
           -- After checking all edges, select the collected ones
           polyOp.setEdgeSelection theEP edgeSelArray
           max modify mode -- switch to modify panel
           modPanel.setCurrentObject theEP -- go to the BaseObject level
           subObjectLevel = 2 --and go to Edge SubObject level to show the result
       ) --end on execute
   ) --end macroScript

A Box primitive has 6 Material IDs assigned to its 6 sides. In this example, a box with 4x4x4 segments was converted to Editable Poly. Then the above script was executed.