* #788 Add __repr__ and __str__ methods to Matrix
* Shortened code with join & improved test
* Renamed variable and fixed use of join
* Replaced __getitem__ with transposed_list
* Optimized repr and removed str methods
* Cleanup comment
* Increased geom.py code coverage to near 100%
* Reformatted with black 19.10b0 defaults
* Remove the typing import
* Face.toPln method added
* solver: set xtol_abs
* Constraint: handle infinite faces
Infinite faces have their center at 1e99, which was causing overflows in
the solver and also was not what the user intended when creating the
Shape. They are now converted to the expected values.
* Use nlopt in place of scipy.optimize
* report the results of optimization
* Deps update and OCP 7.5 -> 7.5.1
* Rewrite cost and gradient
* Check solve results
* Implement importBrep
* Implement rw to/from stream
* Implement toVtkPolyData
* Implemented VTP export
* Added normals calculation
* use VTK for rendering in jupyter
* Added orientation marker
* Assy rendering in notebooks
* Implement export to vtkjs
* Store the env in the cqgi result
* VTK-based cq directive
* Support show_object and assy
* assy vrml export via vtk
* Use vtk in the docs
* Add slot dxf file
* Add vtk.js to the static files
* Use single renderer
* Ignore cq_directive code coverage
* Ignore missing docutils stubs
* Implement select
* Disable interaction dynamically
* Mention VTP in the docs
* Add path to the test reqs
* Added AreaNthSelector
Added AreaNthSelector that is useful for nested features selection. Especially to select one of coplanar nested wires for subsequent extrusion, cutting or filleting.
* LengthNthSelector
* Explicitly marked _NthSelector class and _NthSelector.key(..) method as abstract using standard abc package
* AreaNthSelector ignores "bad" Wires
AreaNthSelector.key raises ValueError if temporary face creation fails for a wire for any reason (non-planar, non-closed). That causes _NthSelector that it inherits to ignore such wires. Done so for consistency with RadiusNthSelector that ignores anything it can not get radius from.
Co-authored-by: Marcus Boyd <mwb@geosol.com.au>
* Return Instances of the Type of self from Fluent Methods
* Updated `Workplane.workplane()`, `Workplane.copyWorkplane()`, `Workplane.newObject()` to return instances of a type that's based on the input parameters (such as `self`).
* Updated type hints to reflect that return types of fluent methods depend on the type of method arguments.
* Added a unit test to verify fluent methods in a derived class return instances of the derived class.
* Fix Workpane MyPy Errors
* Fixed type hints in `sweep()` and `_selectObjects()`.
* Fix `test_cadquery.py` Formatting
* Ran `black` on `test_cadquery.py`.
* Renamed `TypeVar` `WorkplaneT` to `T`
* Renamed `WorkplaneT` to `T` in `cq.py`.
* Reformat with Black
* Re-formatted `cq.py` with `black`.
* Re-format with the Right Version of Black (19.10b0)
* Re-formatted `cq.py` with `black` 19.10b0.
* findSolid returns None when no solids found
Removed a line in the findSolid docstring about raising an error if no
solids found. Added exceptions to several methods that were previously
failing with AttributeErrors when they tried to treat the None object as
a solid.
* findSolid needed type hint Optional on it's return value
* Type hint and test Workplane.findFace
* Rewrite to raise ValueError in findSolid
* I forgot about findFace again
* add exceptions to docstrings
* Added forConstruction option to Workplane.offset2D
* Added Workplane.offset2D example
Co-authored-by: Adam Urbańczyk <adam-urbanczyk@users.noreply.github.com>
* Fixed the `testSplineTangentMagnitudeBelowToleranceThrows` unit test. It was failing since `spline()`'s parameter `tolerance` seems to have been renamed to `tol`.