Minimal surface mesh to NURBS

Hi Community,

I created a mesh of the Schwartz P minimal surface in Grasshopper based on three parameters: box size, box scale, and the number of mesh faces (see Schwarz_P_TPMS_box_scale.gh). My goal is to convert the mesh to NURBS and to split one patch to 6 quads like this.
six_quads

I tried to use first ToSubD and then ToNURBS but the resultant polysurfaces depend on the number of mesh faces and look really complex (see Schwarz_P_TPMS_box_scale.3dm, one row for 1 mesh face and the other for 5 mesh faces).

I found a past discussion (link) where @DanielPiker shared a NURBS version (see schwarz_P_Nurbs.3dm). The model is divided in a different manner and I don’t know how it is created.

Any help would be greatly appreciated!

Regards,
Ke Ma

Schwarz_P_TPMS_box_scale.gh (39.0 KB)
Schwarz_P_TPMS_box_scale.3dm (4.6 MB)
schwarz_P_Nurbs.3dm (281.0 KB)

Although the result of the face packing into patches in your file isn’t ideal everywhere, for something symmetrical like this, all you really need is one good patch. You have at least 2 here


You can do an array polar of 3 of these, using the diagonal shown in red as the axis, then reflect to get the rest


3 Likes

Thank you so much for your reply @DanielPiker!

I’m new to Rhino and Grasshopper so please pardon my silly questions: There are patches in the pictures you showed. Are they meshes? How can I get them (because in my file the mesh is one)? Is there a command to transform your mesh model you mentioned here

or mine

to something similar?

SchwarzP.gh (15.4 KB)

I took the mesh, ran ‘ToSubD’, then took that SubD and ran ‘ToNurbs’ with the Faces=Packed in the SubDOptions. Then in the object properties, turn off ‘Show surface Isocurve’, and explode it to get individual surface patches.

I tried to use first ToSubD and then ToNURBS but the resultant polysurfaces depend on the number of mesh faces and look really complex

Thank you so so much! Following your instructions, I successfully created the NURBS model.

1 Like