Added
- A Shell Shape, created from arbitrary set of faces
Changed
- Operation.get_face() will not auto-reorder faces (causes confusion for users)
Fixed
- A bug where Operation.project_face(..., points=True) won't project vertices
[1. 1. 0] Default Extrude Direction
Added
- Extrude now takes a vector of a float. If a float is given, direction is normal of the base face.
[1. 0. 0] Refactor
A complete overhaul of all objects in an attempt to create a proper SOLID-obeying
package with type hinting, static typing and no python-ish duck-typing hacks.
Added
- examples and showcases from `classy_examples` repo
- static type analysis, formatting, linting
- Origin and Angle edges (Foundation and ESI alternatives to arc)
- Projection of vertices to geometry
- Import convention `import classy_blocks as cb` and direct imports of user-usable objects from `cb`, like `cb.Mesh, cb.Loft, cb.Arc`
- `Operation.faces` property that creates new faces on-the-fly for easier chaining of new operations
- A Frame object that simplifies addressing edges/wires/other stuff between pairs of vertices on a hexahedron
- ExtrudedRing.fill() method has been added to create cylinders inside rings
Changed
- Major package layout refactor
- Edge specification (Arc, Origin, Angle, Project, Spline, PolyLine objects)
- Reverted Face specification for operations
- The Block object is not directly available to the user as it makes no sense to do so
- Import convention: `import classy_blocks as cb` for examples
- Changed examples so that an example file runs directly instead of calling run.py (that created a lot of confusion)
- Box() is now an operation (previously Shape)
- simplified cylinder and sphere creation
- Chaining of elbows/cylinders/etc always with start_face parameters (instead of negative length)
Removed
- *Wall shapes will be created later with a different approach
- Examples with *Wall shapes will be recreated later with new approaches
- airfoil2d example requires blocking optimization so it will be recreated when that feature is available
- sphere example will be recreated when 'offset' is available
- block.from_points has been removed (use Loft)
- T-joint will be added when a skew transform is implemented