Regarding NURBS modeling of a stent using 8 control points

Hello,I was trying to model a stent (biomedical device) centerline using NURBS with 8 control points as shown in the figure.But,as I try to do this in Rhino using Curve->Free form->Control points, the curve also passes through control points 2 and 5 too(apart from the start and end points 0 and 7 ,respectively) .I tried to change the weights of the control points 2 and 5 ,but it still passes from those 2 points .Since,I am a newbie to the use of these nurbs ,so would be really helpful if anyone can guide me regarding the problem.

Hi Sachin,

not sure if i understand correctly, but assuming the curve starts from 0, and has to pass through the mid point - then you can make half the curve with 4 control points, and move middle two points to get the shape you need, and the mirror it (twice). Is this what you are trying to do?:

Usually it’s best to move control points rather than change the weights to modify a shape. raja has shown a good example of how to make the curve. Any particular reason for the control point arrangement in the first post?

Hi Sachin - it is hard to see how that point arrangement can possibly result in the curve shape you show.


Maybe playing with the weights ? (7.3 KB)

( Sorry, I’m not a GH expert )

Hello .Thanks for your replies.

Basically ,I’m following a research paper and trying to understand the way they have parametrized the stent center line. The image that I had posted is the one from that particular literature. In short ,they have fixed the control points,the knot vector, and the degree and only used the weights of the three control points ( the other part being the reflection of the first part ) as decision variables,for the design optimization problem in hand .The below is the para from the said literature:

“The centerline of a single stent segment is represented
as a NURBS curve. A control polygon with eight nodes is
developed from the stent dimensions detailed above (Fig.).
Further exploitation of the anti-symmetry of an individual
stent segment means that control points 4−7 may be generated
by reflecting nodes 3−0 through the central reflection
point. Furthermore, the weights associated with the control
nodes 0−4 are numerically equal to weights 7−4, thereby
reducing the number of weights to be specified for a given
curve to four.”

Now, it seems like the curve does pass through the mid-point (229,458) .So,if we first draw the lower half n reflect it than we will have to make (229,458) as an end point(i.e control point)

Try drawing the curve as a degree 7 curve and set the weights of cvs 1 - 6 to 0.01 for a place to start.

1 Like

Hi Sachin,

Can you post a link to the paper?

– Dale

The article talks about using the weights as a mean of controlling the shape.

Attached is a simple RhinoScript that will generate the shape. You can change the weights, in the script, and re-run the script to see how they effect the shape.

TestStent.rvb (1.5 KB)

For more information on RhinoScript, see the following:

1 Like

Earlier, I was not paying heed to the degree which was causing the problem,need to learn about NURBS more.
Further, on researching more about the topic ,I came to know about Isogeometric analysis (IGA) which has been used in the paper. IGA is a new trend which combines design and analysis,i.e .CAD AND FEA ,thereby saving a lot of time.

“Normals are extended from the centerline at a specified
thickness, which may vary along the stent” .
Two parameters, tmid and tend, control thickness variation along the segment’s longitudinal direction according to the kinematically admissible Hermitian
t (d) = tend + t(3d2 − 2d3) 0 ≤ d ≤ 1
t = tmid − tend (3)
where d is the normalized distance along the segment’s NURBS curve between its endpoint and midpoint. This form ensures there are no discontinuities in thickness at the segment midpoint or at the interface of segments in the overall stent.

So, what I can infer is ,after the centerline is generated ,then normals are drawn a variable thickness from the centerline curve .Thickness being defined by a specific hermite function

Can anyone suggest the simplest way of doing this using Rhino or any other software suggestions are welcome too :smile:

Well, at the basic Rhino tools level, you can do this with a simple centerline curve, 3 circles (ends and middle) and a Sweep1Rail. If you have History enabled, you can then edit the curve and the circle diameters and see the stent tube update.

I had more fun creating a parametric definition of this procedure with Grasshopper - see quick video. You can then play with the parameters in real-time. It’s certainly also possible to hook up some other stuff to actually measure the result, such as volume, curve smoothness, etc.

I have no idea how this corresponds mathematically with your formulas - although it’s also certainly possible to program the curves with the math parameters you want - this was more of a visual experiment. I got the smoothest results with a degree 5 curve and 7 control points.

–Mitch (22.4 KB)

1 Like

Actually,the cross section isn’t circular .First a 2-D section is developed
as I had posted earlier and then it is extruded to get the 3d stent i.e a
tapered extrusion of the section shown in my previous comment.

Mitch is right to let grasshopper do all the parametric stuff. since its a biomedical stuff I assume you will need to extract its mathematical data to carry a simulation or analysis ? Rhino+GH is a good choice but I have no idea about this medical field whether GH have all the necessary component to suit your need… I think this situation is more than just building a model… perhaps more about building model for analysis purpose.

by the way, abit off topic, im curious what kind of software is used for medical research? is Rhino also a common software for surgeon and doctor?

The cross section can be anything you want, I just used circles as an example, because I didn’t see any references to anything other than a 2D plan view in your posts - maybe I missed something. (no I didn’t read the research papers) . Also the terminology of “extrusion” as you are using it with “tapered extrusion” I am assuming translates to a Sweep of varying cross-section. In a (Rhino) Extrusion, the section curve remains in a constant orientation throughout the object, whereas a Sweep will try to keep the cross-section profile oriented to the rail curve as it moves along the curve. A Sweep can also have multiple profiles, an extrusion cannot.

Anyway, looks like you’re looking for an parametric equation-driven solution to this rather than a geometric one, perhaps best solved with a Python or C# script inside a Grasshopper component if you want real-time updates, the math there is out of my realm.


Yes, you are right,there are several complicated steps in FEM analysis ,not
sure if it can be done in Abaqus.In the research work that I am
following,they have used Strand7 software which has a fully functional
programming API. For this
work, all the programming was carried out in C#. I am a Mechanical guy ,so
don’e have previous experience of Biomedical field either,rather, more
interested in learning Iso-geometrical analysis procedure ,and may even
change the biomedical device later if analysis becomes an issue. I was
avoiding coding would be better to generate the given shape. Thanks for
your suggestion.

They have used Strand7 software which has a fully functional programming
API and all the programming was carried out in C# .I was trying to draw
the shape using GUI approach ,but I guess coding would be easier for
drawing the normals from the centerline and generate the required curve
and then extrude it. Thanks for your suggestion Mitch.

I believe then Grasshopper is the right tool for you, you can go to this website
grasshopper was created by David Rutten and he is very active in that forum to help anybody. also you can find tons of PDF tutorial and useful videos.
and some master spend their time developing add on for grasshopper. who knows you might find some that suits your need.

you seem to have a very good understanding about algoritm and Math so learning grasshopper will be no problem :smile:
also, Grasshopper is made so that normal people like me can use it without having to learn computer language.



Thanks mate.I’l try grasshpopper for sure :smile: