… and 3DFrame-py update.
I have added code to the 3DFrame-py module to allow simplified input for 2D frame analysis. The revised code and example spreadsheets can be downloaded from:
There are also miscellaneous minor revisions to the 3DFrame code, which is now version 0.60.
The revised input is shown in the screen-shots below.
Section bending and shear stiffness properties are only required for bending about the Z axis and shear in the XY plane:

Node coordinates, and node restraints are required in the XY plane only:

Beam connections do not require an axis rotation angle, and beam end releases are reduced to those applicable to the XY plane:

The load input table has the same format as the 3D spreadsheet, but loads are in the XY plane only, and point moments are always about the Z axis.
Moment-curvature tables for non-linear analysis require only 1 table for each property:

Output results are reduced to deflections and forces in the XY plane, and rotations and moments about the Z axis:

The download file includes results for an analysis with geometric non-linearity included, compared with Strand7 results:

Graphical output is currently limited. The graphs of beam actions and deflections work, but the code for plotting the frame is yet to be updated.