==========
Analysis of 3D beams have been added to planesections! These work similar to their 2D counterpart. Note that diagrams don't work for 3D beams, and probably won't for some time. It's a big step in complexity to go from drawing 2D diagrams to 3D diagrams.
To make 3D beams work, a number of functions were refactored. This was preferable to creating and maintain two different version of each class and function, hooray! However, it also mean I needed to refactor many classes, and change some names, (boo). Short term this may mean a bit of pain, as many classes and functions with "2D" in there name have been changed. These functions still work and have deprecated with warning messages, but a few breaking changes exist, see below.
**Breaking changes:**
- for Sections, the attributes Ixx was renamed to Iz
- (possible breaking) Sections have been moved to their own file - if you directly imported, i.e. _from planesections.builder_ there will now be an error.
**3D beams added and subsequent tests.**
- Created Node objects and moved logic from Node2D there. Node2D inherits from Node.
- Created Node3D objects that inherits from Node2D.
- Adapted Beam2D into Beam. This class can service2D and 3D beams.
- Adapted OutputRecorder2D to OutputRecorder. This applies to 2D and 3D beams
- removed the material propreties attribute from beams and added a method instead
- renamed the attributes Ixx to Izz (raises no deprecation warning)
- Replaced all 2D plot funcitons with generic names (i.e. plotShear2D -> plotShear)
- These can be called on 2D and 3D beams.
- Added Example Ex2d-3D beams, showing how 3D beams can be used.
**Misc. Other changes**
- allowed section to be passed to the beam creation functions *newSimpleEulerBeam2D* and *newEulerBeam2D*
- changed newEulerBeam2D and newSimpleEulerBeam2D to newEulerBeam newSimpleEulerBeam