Face | Flatten and Vert | Flatten                              updated to 0.98.17f release (20th Nov '03)
main page
Face | Flatten -> X (shown here)
Flatten moves selected geometry (faces or verts) along a chosen axis (or user-defined vector) until all selected faces lie on a plane which is perpendicular to the chosen axis.
This command provides options for the user to not only define a plane of their choice, but also to specify a point through which that plane will pass.
In standard use, Wings 'averages' the selected geometry to produce a 'local origin' through which the relevant plane will pass. However, exact plane location (along the relevant axis) may also be determined by the user specifying a point (on the geometry) for this local origin. (NB yellow line (denoting Flatten Plane) is not displayed in Wings)

Face | Flatten -> X
(Left example) - Default setting, Wings determines the position (without user intervention) along the X axis of the 'Flatten Plane'

Face | Flatten -> X
(Right example) - Through a point (RMB) option.  The precise position of the X plane (along the X axis) is defined by the position of the chosen vert (blue square).
(This point can be chosen using any 'standard' vector definition technique, using verts, edges or faces)
It should be noted that the Flatten command deals with more than one selected area of geometry in different ways.
When defining a vector for use with Flatten, note that the (vector) arrow displayed by Wings is a normal to the actual flatten plane.
(From left to right, first 3 pix)

Vector Flatten, Using RMB
option - define a flatten vector only (single stage operation)
1). Select faces to be flattened
2). Invoke Face | Flatten and use RMB option. Choose a suitable piece of geometry to define the required flatten plane - I selected the individual face shown (in red) by clicking on it with RMB - this not only selected this face, but also executed the flatten op.

In general, if you are selecting a single geom. element to define the flatten axis (vector), you have 2 workflows available to you:
LMB on element to select, then RMB to confirm and execute the op - OR -
RMB on the element to select, confirm and execute - all in one go.
(If several elements are needed for vector definition, RMB on the last will also complete the selection, confirm and execute the op - if you want to avoid LMB + RMB
Using the LMB + RMB method displays the vector after LMB, until RMB is pressed (useful for screengrabs, as here) - whereas with  RMB only, user only gets a brief flash - but the operation is one less mouse button stroke.
Since the flatten plane is perpendicular to the displayed vector, using LMB + RMB might be an idea when defining with single elements, as a single vert / edge may well produce unexpected results

3).  After Flatten op. has been executed - the selected faces now lie on exactly the same plane as the face used to define the vector.

Vector Flatten using MMB option
4 - 5). Initially use MMB to access the flatten op. rather than RMB - as you want to define both the vector and the ref.point through which it passes (the first stage, specifying an axis, is essentially the same as described in (1) - > (3) above.)

Selecting the face shown in (2) with RMB will now define the flatten plane (as before) but will also progress (continue) the op. thro' to the next stage - picking the point. At this (second) stage, wings is now awaiting selection of geometry to specify a reference point through which the (just) defined plane will pass.
Click on the vert shown in blue with RMB. This selects the vert and executes the  flatten op. -  all in one go. The flatten plane will pass through this point. The final plane onto which all selected geometry is flattened is then parallel to the default plane but (here) displaced (downwards) along the Y axis.

(A real life example of the use of a vector flatten op. using RMB option - can be found
All selected faces flattened onto a user-defined plane (face in middle pic)

Vector Face | Flatten with multiple faces, using default option.
All selected faces are moved parallel to the vector axis until they lie on the flatten plane.
Vector Vert | Flatten
Using a similar procedure to the previous example, all selected verts become flattened onto the user-defined plane (face in middle pic)

If a user-defined plane has been chosen for the Flatten op, then all geometry (from single verts to multiple separate face areas) will end up on that plane. This result is also true when the plane is passing through a user-defined point (MMB option)
Aligning individual verts to existing features. (Please read note at end of this section)

1). Object with a (displaced) vert that requires re-aligning along 2 axes (Y and X)
2). Vert | Flatten -> Y (RMB option required)
3). Select a feature on the same Y plane that you want your 'problem vert' to lie on after the flatten op. Here, the end vert shown in blue, was chosen.
4). RMB to execute command - selected vert is now on the same plane as the datum vert (Y axis only)
5-7). Repeat 2-4 using the same datum vert, but Vert | Flatten -> X this time.

Whilst this (trivial) example demonstrates an alignment technique using Flatten - a similar procedure, utilising user-defined flatten planes, can be used to align verts along an edge that is non-orthogonal.

The feature being used to define the destination point (for the flatten plane) can also be an edge or face - although a vert has been used here. In these two cases, the face centre and the edge mid-point become the critical defining points

Whilst the command has obvious uses associated with flattening 'twisted' faces and areas, it's also very useful for aligning single (or groups of) verts that have become out of position.(see above)

Although other 'aligning'commands (Bbox move, Align, Centre) exist, these all move the whole object associated with the vert during the 'alignment' procedure - using Vert | Flatten only moves the selected vert(s) - not the rest of the object.

If the user wants to align (or flatten) edges or whole objects, Scale | XYZ (vector) -> 0% will provide an identical result to that produced by using Flatten. Imo, using Scale in this way with edgeloops and also using the edgeloop to provide the vector defining the flatten plane is particularly useful.

In standard use, Wings averages the selected geometry to produce a plane on which the selected geometry resides after completion of the Flatten operation - since this (plane) location may not (always) be what the user wants - specifying a point through which the (final flattened) plane passes is very useful

The way Wings calculates the default position of the 'centre' of a selection is well worth noting, since totally different shapes of geometry can produce a 'centre' in the same position. Demonstrating this is outside the remit of this page, however :)

NB - In certain circumstances (as above) when flattening is being done along 2 axes, it might be quicker to use Vert | Scale Radial -> 0%. This will move the displaced verts along both of the relevant axes at the same time.

In the above situation, Apply Vert | Scale Radial -> Z, use RMB option, and select the vert (shown in blue, in(3) ) as the ref. point thro' which the required Z axis will pass, and drag to zero (hold shift to constrain) - all selected verts will then lie on a straight line, parallel to the Z axis.
You can, of course, specify any axis for this op - often (but not necessarily) using the verts at either end of a wobbly sequence of edges
Vert | Flatten will flatten all verts to a single relevant plane - irrespective of how the (selected) verts were originally distributed - even if they were on different sides of the model prior to invoking the command and the 'same' verts as those defining an equivalent Face selection.
Face | Flatten will flatten all (separate) selected areas onto appropriate local planes, thus 2 groups of faces - even on opposite sides of the model - will each get flattened to their 'own' flatten plane. The positions of these planes (along the relevant axis / vector) will be determined by the geometry at each location.
Differences between Vert | Flatten and Face | Flatten
Vector Face | Flatten with multiple selections
Vector Vert | Flatten
Aligning individual verts to existing features
Flattening distorted Mirror (VM) faces.
1). Suppose a magnet session got the better of you and something like this is the result - and you want to re-establish a central plane for Mirror / VM purposes.
Select the central (haha) edgeloop.
2). Apply Edge | LoopCut - select the portion to be discarded.
3). Select the mirror face on the remaining (wanted) portion.
Apply Face | Flatten -> X (Use RMB option, Pick point on plane)
4). Pick a vert that lies on an undistorted part of the central edgeloop - doing this specifies exactly where the flatten plane will be located along the X axis. I chose a vert at the bottom of the neck - shown in blue.
5). The situation after executing the Flatten op.
6). See how happy he is now he's all symmetrical again :)

Some other related points.
If you've been using VM and got unwanted extra edges on the mirror face - because you've extruded something there - you can still use the above method.
Select all the (individual) faces on the mirror plane and use Face | Dissolve to provide a single mirror face and then just carry on from (3) above.

People should notice that the middle of the upper lip on (5) doesn't appear to lie on the newly flattened mirror plane. The mirror plane is correct - but this piece of the geometry just 'overlaps' the plane because of where the plane was located and the degree of distortion I introduced to the model.
Just select the overhanging bits and use Move | X a little.
Personally, I think (1) is closer to my normal mood than (6)

You don't have to choose a vert for reference purposes (as in 4), but if it's anything else - an edge, say - remember that the 'hot spot' of an edge is its mid point - so the whole of the edge must lie on the plane you need, otherwise the flatten plane won't go where you want it to go. (Same applies if you choose a face for reference)
Basic Face | Flatten operation
Default / RMB options
Vector Face | Flatten using RMB and MMB options
Flattening distorted Mirror / (VM) faces.
Note that the 'Flatten' op is essentially identical to Scale (X,Y,Z or vector) -> zero. No difference in result, just that it does it in one go, without any dragging being necessary - have also got access to MMB / RMB scale options as usual for specifying 0% plane position as well.
As such, because Edge | Flatten doesn't exist, you can use Edge | Scale -> 0% and get the same results as if it did.
(Maybe worth considering when binding hotkeys? )