This pattern design is based on an hexagonal grid. A consists of two steps: in the first one the hexagons are divided into triangles, and for a subset of them the triangles are further divided into four triangles using a triangle subdivision.
In the second step, each triangle is used to generate a inner hole with filleted edges and a size driven by a point attractor.
NURBS vs SubD Meshes
The rendering shows the NURBS geometry, generated using simple functions (Loft and Fillet Edge), with a final morphing operation.
In this case using NURBS is quite straightforward, but the computation is quite intensive - the morph alone takes more than 30 seconds, and the solid fillets much longer than that.
Left: NURBS geometry; right: SubD equivalent geometry
Alternatively, it is possible to use SubD meshes: in this case the modeling process needs to be redone in order to generate a clean topology. By using appropriate edge loops it is possible to create a final geometry which is quite close to the NURBS one, but the computation time is orders of magnitude faster.
Top: NURBS pattern; bottom: SubD pattern
In general, it is almost always possible to decide whether it's better to use NURBS or Meshes. There is no right or wrong answer, and sometimes the best solution is a combination of the two methods, for example by using SubD meshes during the design exploration and NURBS to finalize the geometry for production.