MAXScript Language Reference > 3ds Max Objects > Editable Meshes, Splines, Patches, and Polys > Editable_Mesh and TriMesh >

# Mesh Face Methods

| Editable Mesh - Quick Navigation

The following methods provide basic access to the mesh faces.

Topic Navigation: |
--- | ---
Face Number Get and Set Face Delete And Collapse Face Face Normal | Face Material ID Face Smoothing Groups Face Selection Extrude Face

Methods:

## Face Number

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    getNumFaces <mesh>

Returns number of faces as an integer, equivalent to using <mesh> .numfaces

    setNumFaces <mesh> <face_index_integer> [ <boolean> ]

Set the number of faces as specified. If the optional boolean argument is true, the existing topology remains intact. If it is false or left off, the topology is lost.

For all new faces, the following occurs:

- Smoothing group set to 1

- Vertices are set to [1,1,1] (1-based, if # verts is 0 at update, you will crash. It is expected at this point)

- Material ID is set to 1 (1-based)

- For each map channel in use:

  - the map face verts are set to [1,1,1]

  - if keep is false, the number of map verts is set to 1 its verts are set to [1,1,1] (1-based)

## Get and Set Face

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    getFace <mesh> <face_index_integer>

Returns the face vertex indexes for the indexed face as a point3. Each component of the point3 value contains a vertex index.

    setFace <mesh> <face_index_integer> <vert_indices_point3>

Sets the face vertex indexes for the indexed face from a point3.

    setFace <mesh> <face_index_integer> <vert_index_integer> <vert_index_integer> <vert_index_integer>

Sets the face vertex indexes for the indexed face from 3 vertex indexes.

## Delete And Collapse Face

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    deleteFace <mesh> <face_index_integer>

Deletes indexed face from the mesh. Renumbers faces accordingly.

    collapseFace <mesh> <face_index_integer>

Deletes indexed face from the mesh, welding its 3 vertices together at the center of the original face. Renumbers faces accordingly.

## Face Normal

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    getFaceNormal <mesh> <face_index_integer>

Returns the normal of the indexed face as a point3.

    setFaceNormal <mesh> <face_index_integer> <point3>

Sets the indexed face's normal vector. As soon as you run update() on the mesh, this value is overwritten.

## Face Material ID

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    getFaceMatID <mesh> <face_index_integer>

Returns the indexed face's material ID as an integer.

    setFaceMatID <mesh> <face_index_integer> <integer>

Sets the indexed face's material ID.

## Face Smoothing Groups

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    getFaceSmoothGroup <mesh> <face_index_integer>

Returns the indexed face's smoothing groups as a 32-bit integer. There are 32 possible smoothing groups. Each bit in the returned value corresponds to a smoothing group. If a bit is turned on, the face is part of that smoothing group. You can retrieve the list of smoothing groups for a face as a BitArray using the following function:

SCRIPT
    fn getFaceSmoothGroupB obj face =
    (
    local sgroup_val=getFaceSmoothGroup obj face
    local sg_bitarray=#{}
    if sgroup_val < 0 do
    (
    sg_bitarray[32]=true
    sgroup_val -= 2^31
    )
    for i = 1 to 31 do
    (
    sg_bitarray[i]= (mod sgroup_val 2 > .5)
    sgroup_val /= 2
    )
    sg_bitarray
    )

    setFaceSmoothGroup <mesh> <face_index_integer> <smoothing_group_integer>

Sets the indexed face's smoothing groups. If you have a face's desired smoothing groups as a BitArray, you could set the face's smoothing group data using the following function:

SCRIPT
    fn setFaceSmoothGroupB obj face sg_bitarray =
    (
    local sgroup_val=0
    for i in sg_bitarray do sgroup_val += 2^(i-1)
    setFaceSmoothGroup obj face sgroup_val
    update obj
    )

## Face Selection

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    getFaceSelection <node> [ <modifier_or_index> ] [name:<name> ]

    getFaceSelection <mesh>

Retrieves the face selection set, or the specified named selection set if the optional name: parameter is specified, as a BitArray. See the getVertSelection() method for more information.

    setFaceSelection <node> [ <modifier_or_index> ] ( <sel_bitarray> | <sel_array> ) [name:<name> ] [keep:<boolean> ]

    setFaceSelection <mesh> ( <sel_bitarray> | <sel_array> ) [keep:<boolean> ]

Sets the face selections in an Editable Mesh base object, Mesh Select modifier, Edit Mesh modifier, or TriMesh. This mirrors the selection getting method above. See the setVertSelection() method for more information.

    deselectHiddenFaces <mesh>

Deselects the hidden faces in the mesh. This method is not applicable to TriMeshes.

## Extrude Face

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

    extrudeFace <mesh> ( <index> | <bitarray> | <integer_array> | #selection) <amount> <scale> [dir:(<point3> | #common | #independent) ]

Provides capabilities equivalent to the Extrude Face modifier. This function works only on Editable Mesh nodes. The second argument defines which faces to extrude, either a single face index, a BitArray of face indexes, an integer array of face indexes, or the name literal #selection meaning the current face selection in the Editable Mesh. The <amount> argument specifies the extrude distance and the <scale> specifies a % amount to scale each face cluster.

If the optional dir: keyword argument is not specified, face clusters are extruded by moving their vertices independently along the average normal at each vertex, as does the Extrude Face modifier. If it is specified, it can be a point3 giving a direction vector in which all vertices are moved, or it can be the value #independent which is the same as the default direction, or it can be the value #common which extrudes face clusters along the average normal of all the face normals in each cluster. #common is equivalent to the Group Normal option in EditableMesh, and #independent is equivalent to the Local Normal option.

EXAMPLE
    s=sphere()
    convertToMesh s
    extrudeface s #{1..16} 10 100 dir:#independent
    update s

For more mesh-related methods, see

Editable Mesh - Topics Index

Editable_Mesh : GeometryClass and TriMesh : Value

| Back To Topic Navigation |  | Editable Mesh - Quick Navigation

#### See Also

- Face Methods (meshop struct)

- Mesh Methods (meshop struct)

- Face Methods (meshop struct)

- Mesh Methods (meshop struct)