help with *surfacecreatenurbs command

timothy Lowe
timothy Lowe Altair Community Member
edited August 2023 in Community Q&A

I have been trying to create a NURBS surface in HyperMesh by reading the parameters from a file with a tcl script.

The *surfacecreatenurbs command doesn't seem to follow the conventional NURBS definition where the #knots = degree + #ControlPoints + 1.  The data in my file fits this convention and I thought this would be an easy thing to do.

The documentation for *surfacecreatenurbs states;

“To reduce input, the usual NURBS convention that for the curve with polynomial degree degree first and last degree+1 knots must have the same value is enforced internally. Input for this command should only contain one value. For all internal knot values, multiplicity should still be provided explicitly. All knot values must be provided in non-decreasing order.”

I am not sure how to interpret the above, but sounds like I should eliminate the first degree & last degree knot points since they are redundant and enforced internally.  But that doesn't work either.

The example they give, which does work, is as follows;

*createdoublearray 22 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 2 0 1 2 1

*surfacecreatenurbs 1 2 2 2 2 3 0 1 22<br />This doesn't really fit any convention that I am a where of.<br />

U parameter;&nbsp; #Knots = #Control points

V parameter;&nbsp; #knots = #Control points -1

Can anyone explain this?

Any suggestions on how to convert/translate a traditional NURBS definition into one that the *surfacecreatenurbs command will recognize? Or am I doing something else wrong?

Thank you

Answers

  • Rishabh Awasthi_20948
    Rishabh Awasthi_20948
    Altair Employee
    edited August 2023

    Hello Timothy 

    The data in your file needs to follow the arguments order for the double_array. 

     image

    Can you share the *createdoublearray arguments you used to create the NURB ?