*surfacecreatenurbs
Create a NURBS surface using input parameters.
Syntax
*surfacecreatenurbs udegree vdegree uk_count vk_count up_count vp_count ratnl double_array number_of_doubles
Type
HyperMesh Tcl Modify Command
Description
This command creates generic NURBS type surface using input parameters.
Inputs
- udeg
- Polynomial degree of u parameter.
- vdeg
- Polynomial degree of v parameter.
- uk_count
- Number of u parameter NURBS knots.
- vk_count
- Number of v parameter NURBS knots.
- up_count
- Number of NURBS control points in u parametric direction.
- vp_count
- Number of NURBS control points in v parametric direction.
- ratnl
- Parameter that specifies whether weights are used in addition to control points. Valid values are:
- double_array
- The ID of the double array that contains the value of the knots, control points and weights (if ratnl is 1). The double array is created using the *createdoublearray command. This should always be set to 1.
- number_of_doubles
- Integer indicating the size (number of doubles) in the double array created using *createdoublearray.
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.
Values in double_array array should be arranged as follows:
First uk_count entries - u parameter knot values.
Next vk_count entries - v parameter knot values.
Next up_count×vp_count×3 values are x, y, z values of control points.
If ratnl is not zero then next up_count×vp_count entries are NURBS weights values.
The poles and weights (if present) are arranged as a sequence of rows of a rectangular grid where one row corresponds to a constant v value and increasing u values.
Examples
To create a ruled surface connecting two parabolas:
*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
To create a ruled surface connecting two circular arcs:
*createdoublearray 28 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 2 0 1 2 1 1 1 0.707 0.707 1 1
*surfacecreatenurbs 1 2 2 2 2 3 1 1 28
Errors
if { [ catch {command_name...} ] } {
# Handle error
}
Version History
10.0