evaluatorsAPI and documentation updates
latesttag points to Python v3.6
operations.refine_knotvectorfailing to work with Bezier-type geometries
control_pointsmodule for managing control points
Surface.set_ctrlptsnow accepts 2-dimensional control points.
loadmethods defined in
BSplinemodule in favor of
operations.add_dimensionAPI call to work with all
VolumeContainerbase class from
AbstractContainerand add missing methods
exchange.import_3dmin favor of rw3dm v2.0
elementsmodule (no API change)
rendermethod returns the figure object
vertex_spacingis set to 1 for consistency between the exchange and visualization modules
verticesproperty of the
Surfaceclass returns the exact list of vertices used in generation of the triangles
sixmodule functions and
backports_functools_lru_cachemodule under geomdl directory
typingdependency (no time to add all typing hints, see docs for input and output types)
operationsmodule (no API change)
elementsmodule to make it consistent between its classes (minor API change)
exchange_vtk.export_polydatato support tessellated surfaces and geometry containers
tessellationmodule (internal API change, user API is the same and comes with improvements)
trimmingmodule to fix different types of trim curves (open, multi-curve, etc.)
sense = 0means trim inside,
sense = 1means trim outside
alphaconfiguration directive to
VisMPLto control opacity of the evaluated points
geomdl.corebinaries for v5.0.2 and version bumped for user convenience
enum34since it was causing problems with Python 3
from geomdl import *
operations.degree_operationsfunction for degree elevation and reduction (still WIP)
abstractmodule and moved all abstract classes to their relevant modules
normalize_kv=Falseto disable knot vector normalization.
convertmodule to improve reusability and add support to volumes
exchangemodule to improve reusability
exchange.export_vmeshfor exporting NURBS volumes
utilitiesmodule and moved some functions to
VisMPL.VisSurfTriangleis now an alias for
fittingmodule for curve and surface global interpolation + approximation (fitting)
constructmodule for constructing surfaces and volumes + extracting surfaces and curves
linalgmodule (generated by splitting
VisVolumeclasses for volume visualization
exchangemodule code optimizations
Multitype of classes
MultiSurfaceclasses. They are now compatible with
exchange.export_yamlfunction (experimental, designed to be used with geomdl_cli)
operations.translate()function to make it compatible with multi curves and surfaces
evalptskeyword arguments to visualization config class
set_plot_typemethod to surface visualization classes
Tessellateclass for customization of the surface tessellation algorithms
Multi.MultiSurfaceconstructors to allow easy addition of the shapes to the container object
This release adds the functionality of finding control points involved in the evaluation of a curve/surface at the
specified parameter(s) using
This release moves some of the features from
BSpline module to other modules since it is getting bigger and it has a lot of responsibilities which can be "globalized" to ease extensibility.
normals, etc and moved the functionality to singular methods (
derivativesmethod is added as an abstract method to
Abstract.Surfacesince it is also a requirement for all
The following new and updated features are added with this release:
operations, it contains geometric operations that can be applied to curves and surfaces
VisMPL.VisSurfTriangle()class to use
sixpackage to maintain Python 2 and 3 interoperability for meta classes
orderproperty for curves and
deltaproperties for surfaces by removing excess conditional checks from their setters
NURBS.ctrlptswnow returns a tuple
This is the official release of NURBS-Python (geomdl) v4.0.0. The following list summarizes the new and the updated features.
exchangemodule and added new export file types
Evaluatormodule for changing evaluation algorithms at runtime
convertmodule for converting B-Spline objects to NURBS objects
This is the first beta version of NURBS-Python v4.x series.
NURBS class control points / weights getters and setters
Rearranged / updated some functions and properties to clean up the
NURBS class structure
Control points reading and CSV export functionality are moved to
Added more tests
Evaluation algorithms speed improvements
Added Plotly visualization module
Updated documentation and added more details
Added new export file formats
Added B-Spline to NURBS converters
4.x update might break
NURBS class API a little bit due to the updates in getters and setters but the fix would be very easy: Please see the
ctrlpts properties for details.
VisMPLmodule displays all figures in the correct aspect ratio
_reset_ctrlptsfunction resets the bounding box
delta_vproperties to Surface classes. This change allows different sampling in u- and v-directions
sample_sizein Multi classes.
sample_sizeproperty directly corresponds to
numargument in numpy.linspace function.
These changes may cause a small API break in your existing code, especially if you are visualizing using the
Please see the examples repository and check any example for the updated usage scenarios.
sample_size works very similar to
numpy.linspace, you define start and end positions with the number or samples to generate between them.
This property automatically sets the
delta property, so after setting
sample_size, there is no need to play with
rendermethod which fails to work after
frangefunction which sometimes fails to generate correct output with bigger delta values
The new version comes with performance improvements and documentation updates.
It also adds
bbox property for evaluation and storage of curve and surface bounding box.
compatibilitymodule for control points manipulation
translatewrapper to abstract Multi class
split()method for curve splitting at the given parameter and
decompose()method for Bézier decomposition
decomposemethod to curve classes for applying Bézier decomposition
translate()function to curve classes
save_objcan save single or multiple surfaces to a single .obj file
split(). This method splits the curve and returns 2 new instances as the split pieces of the initial curve. It doesn't modify the initial curve.
Multimodule is designed to operate on multiple curves and surfaces. Currently, it can only do multi curve and multi surface visualization (in 2D and 3D) on the same window. Documentation will come soon.
Abstractmodule provides a base for further development of the NURBS algorithms. It will become the base class for B-Spline and NURBS curves and surfaces represented in NURBS-Python. Unfortunately, the module is still WIP and it could remain like that for a while.
This version comes with stability updates and more tests to cover the majority of the module functionality. The documentation is also improved.
exchangemodule with the capability to save surfaces as .obj files
shapesmodule to automatically generate well-defined NURBS curves and surfaces
VisSurfaceclass to visualization module
Please note that updates to
VisMPL component might cause a small API break on the visualization module, and therefore it is marked as experimental from now on. Updates to visualization component do not affect NURBS evaluation components.
VisMPL has the following classes:
VisCurve2Dfor 2D curves
VisCurve3Dfor 3D curves
VisSurfWireframefor surfaces (uses
VisSurfTrianglefor surfaces (uses
VisSurfScatterfor surfaces (uses 3D
normalmethod of the
Surfacetype classes has been updated. It now returns a list containing 2 elements. First one is the starting point (or origin) of the normal vector and the second one is the normal vector itself.
binormalmethods to the
VisMPL, a visualization module which implements Matplotlib
Visualization module is an optional module for NURBS-Python. In other words, you don't need to import it to evaluate surfaces and curves.
The visualization module currently includes a base class
VisABC which can be used to create new visualization components, and
VisMPL component that implements Matplotlib for 2D and 3D plotting.
Please see the following for usage examples:
This is the first beta release of NURBS-Python after a huge set of new features and updates. Unfortunately, there has been some API changes between v2.x and v3.x series but these changes are not too big, so you might only need to change the import statements to make things working again.
The v2.x code is moved to
2.x branch. This version will not receive any updates, since I would like to focus on v3.x branch from now on.
The examples repository is also updated with some nice visualization examples using Matplotlib and demonstrating new TXT and CSV export features. Please check it out here: https://github.com/orbingol/NURBS-Python_Examples
Curve::evaluate_rational()method which causes erroneous NURBS curve evaluation
rotate_yfunctions to the Grid class
read_ctrlptsw()method to the