Using the GUI you can Set Transform Orientation to Normal select a face in edit mode then hit G button then Z button to move the face in the direction of the normal.
I am trying to do this with blender python.
import bpy
ob=bpy.context.view_layer.objects.active
for i in range(0,len(ob.data.polygons)):
# deselect everything first
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='DESELECT')
# it seems you can only select face during object mode
bpy.ops.object.mode_set(mode='OBJECT')
face=ob.data.polygons[i]
face.select=True
bpy.ops.object.mode_set(mode='EDIT')
face_normal=face.normal
matrix=((0, -1, 0), (face_normal[2], 0, -face_normal[0]), (face_normal[0], 0, face_normal[2]))
bpy.ops.transform.translate(value=(0, 0, 0.1),
orient_type='NORMAL',
orient_matrix=matrix,
orient_matrix_type='NORMAL',
constraint_axis=(False, False, True))
This sample code should iterate through all the faces on the selected object and translate each face individually along the face normal.
This is just a test snippet - I intend to use filters to select specific faces later but just iterating through all faces now to verify code works.
If you create an object this code works to scale the object on the Z axis but not oriented toward the face normal.
I suspect the problem is something with the way I'm assigning the orient_matrix matrix variable. I can't find any examples on how to assign the the orient_matrix for translate operations. there are lots of examples for rotations but not for translating individual faces.