Package Documentation

Object: surface (The :surf Package)
Mixins: geometry-kernel-object-mixin, outline-specialization-mixin, base-object

Description

A generalized NURBS surface. Usually used as a mixin in more specific surfaces.


Input Slots (optional)

brep-tolerance number

Overall tolerance for the internal brep representation of this surface. Defaults to nil. Note that a value of nil indicates for SMLib a value of 1.0e-05 of the longest diagonal length of the brep.


built-from gdl surface

Specify this if you want this surface to be a clone of an existing surface (note - this uses a shared underlying surface object, it does not make a copy)


color-decimal [from geometry-kernel-object-mixin] vector of three real numbers

The RGB color of this object as imported from an external format (e.g. IGES) or as specified in :display-controls. Defaults to the foreground color specified in *colors-default*. This message should not normally be overridden in user application code.


end-caps-on-brep? boolean

Indicates whether to attempt automatic endcaps on conversion of this surface to a brep. Note that this might change in future to a keyword value for :min, :max, or :both to provide more control.


hidden? [from vanilla-mixin*] boolean

Indicates whether the object should effectively be a hidden-object even if specified in :objects. Default is nil.


iges-level [from geometry-kernel-object-mixin] integer

Synonym for the layer.


image-file [from base-object] pathname or string

Points to a pre-existing image file to be displayed instead of actual geometry for this object. Defaults to nil


layer [from geometry-kernel-object-mixin] integer

The primary IGES-compatible level (layer) on which this object resides. Defaults to the first of the levels. This slot can be overridden in user code to specify a new layer which will be written out when this object is exported with the IGES output-format.


levels [from geometry-kernel-object-mixin] list of integers

The IGES-compatible levels (layers) on which this object resides. GDL does not currently support writing out multiple levels (layers) through the IGES writer ; only the first of these will be output if the object is exported with the IGES output-format (please contact Genworks if you need all levels (layers) to be written out).


obliqueness [from base-object] 3x3 orthonormal matrix of double-float numbers

This is synonymous with the orientation.


onclick-function [from base-object] lambda function of zero arguments, or nil

If non-nil, this function gets invoked when the user clicks the object in graphics front-ends which may or may not support this functionality (see viewport-html-div).


rational? boolean

Returns non-nil iff this surface is rational, i.e. all weights are not 1.


root [from vanilla-mixin*] gdl instance

The root-level node in this object's ``tree'' (instance hierarchy).


safe-children [from vanilla-mixin*] list of gdl instances

All objects from the :objects specification, including elements of sequences as flat lists. Any children which throw errors come back as a plist with error information


sew-and-orient-brep? boolean

Indicates whether brep representation should undergo a sew-and-orient operation. Defaults to nil.


strings-for-display [from vanilla-mixin*] string or list of strings

Determines how the name of objects of this type will be printed in most places. This defaults to the name-for-display (generally the part's name as specified in its parent), followed by an index number if the part is an element of a sequence.


tessellation-parameters plist of keyword symbols and numbers

This controls tessellation for the brep of this surface. The keys are as follows:

  • :min-number-of-segments
  • :max-3d-edge-factor
  • :min-parametric-ratio
  • :max-chord-height
  • :max-angle-degrees
  • :min-3d-edge
  • :min-edge-ratio-uv
  • :max-aspect-ratio
and the defaults come from the following parameters:
   (list 
       :min-number-of-segments *tess-min-number-of-segments*
       :max-3d-edge-factor *tess-max-3d-edge-factor*
       :min-parametric-ratio *tess-min-parametric-ratio*
       :max-chord-height *tess-max-chord-height*
       :max-angle-degrees *tess-max-angle-degrees*
       :min-3d-edge *tess-min-3d-edge*
       :min-edge-ratio-uv *tess-min-edge-ratio-uv*
       :max-aspect-ratio *tess-max-aspect-ratio*)


tolerance number

Approximation tolerance for display purposes.


visible-children [from vanilla-mixin*] list of gdl instances

Additional objects to display in Tatu tree. Typically this would be a subset of hidden-children. Defaults to NIL.



Input Slots (optional, defaulting)

center [from base-object] 3d point

Indicates in global coordinates where the center of the reference box of this object should be located.


display-controls [from base-object] plist

May contain keywords and values indicating display characteristics for this object. The following keywords are recognized currently:

:color
color keyword from the *color-table* parameter, or an HTML-style hexidecimal RGB string value, e.g. "#FFFFFF" for pure white. Defaults to :black.
:line-thickness
an integer, defaulting to 1, indicating relative line thickness for wireframe representations of this object.
:dash-pattern
(currently PDF/PNG/JPEG only). This is a list of two or three numbers which indicate the length, in pixels, of the dashes and blank spaces in a dashed line. The optional third number indicates how far into the line or curve to start the dash pattern.


isos plist with keys :n-u and :n-v

The number of isoparametric curves to be displayed in each direction. This value comes from the value of :isos on the display-controls if that exists, and defaults to *isos-default* otherwise.


orientation [from base-object] 3x3 matrix of double-float numbers

Indicates the absolute Rotation Matrix used to create the coordinate system of this object. This matrix is given in absolute terms (i.e. with respect to the root's orientation), and is generally created with the alignment function. It should be an orthonormal matrix, meaning each row is a vector with a magnitude of one (1.0).



Computed Slots

bounding-box [from base-object] list of two 3d points

The left front bottom and right rear top corners, in global coordinates, of the rectangular volume bounding the tree of geometric objects rooted at this object.


height [from base-object] number

Z-axis dimension of the reference box. Defaults to zero.


length [from base-object] number

Y-axis dimension of the reference box. Defaults to zero.


width [from base-object] number

X-axis dimension of the reference box. Defaults to zero.



Hidden Objects

brep gdl brep object

This is the brep representation of this surface.


swapped-uv-surface gdl surface object

This surface object swaps the role of u and v- directional parameters, i.e. old-surface(u,v) = new-surface(v,u).



Hidden Objects (sequence)

u-iso-curves sequence of curve objects

The isoparametric curves in the U direction.


v-iso-curves sequence of curve objects

The isoparametric curves in the V direction.



GDL Functions

area number

Returns the area of the surface.

keyword arguments:
desired-accuracy Number, Default Value: 1.0e-6
Desired accuracy of result. Should not be smaller than 0.00000001 (10e-08)

b-spline-data

List of lists 3D points, List of lists numbers, List of numbers, List of numbers, Integer, and Integer. Returns six values which are the control points, the weights, the u-knots, the v-knots, the u-degree, and the v-degree of the surface.


curve-intersection-point surface point

Returns the first point of intersection between this surface and the curve given as an argument.

arguments:
curve GDL Curve object
The curve to intersect with this surface
keyword arguments:
3d-tolerance Number, Default Value: *3d-tolerance-default*
The tolerance to use for intersecting

curve-intersection-points list of surface points

Returns the point(s) of intersection between this surface and the curve given as an argument.

arguments:
curve GDL Curve object
The curve to intersect with this surface
keyword arguments:
3d-tolerance Number, Default Value: *3d-tolerance-default*
The tolerance to use for intersecting

domain plist

Returns plist containing :min and :max indicating min and max UV points for parameter space for this surface.


dropped-point surface point

Returns the given 3D point dropped normally to this surface, as close as possible to the given 3D point.

arguments:
point 3D Point
The point to be dropped
keyword arguments:
3d-tolerance The tolerance used for dropping, Default Value: *3d-tolerance-default*

dropped-points list of surface points

Returns the given 3D point dropped normally to this surface.

arguments:
point 3D Point
The point to be dropped
keyword arguments:
3d-tolerance The tolerance used for dropping, Default Value: *3d-tolerance-default*

local-bounding-box

Returns a bbox object, answering xmin, ymin, zmin, xmax, ymax, and zmax, for a box containing the convex hull (i.e. the control points) of this surface and oriented according to the given center and orientation.


maximum-distance-to-curve plist

The returned plist contains information about the maximum distance from this surface to the curve given as the argument.

arguments:
curve GDL Curve object

maximum-distance-to-surface plist

The returned plist contains information about the maximum distance from this surface to the surface given as the argument.

arguments:
surface GDL Surface object

minimum-distance-to-curve plist

The returned plist contains information about the minimum distance from this surface to the curve given as the argument.

arguments:
curve GDL Curve object

minimum-distance-to-surface plist

The returned plist contains information about the minimum distance from this surface to the surface given as the argument.

arguments:
surface GDL Surface object

normal 3d vector

The surface normal vector at the given u and v values. Three other values are also returned: The 3D point, the U tangent, and the V tangent at the given parameter value.


offset-point 3d point

Returns the surface point at the given parameters offset along the surface normal at that point by the given distance.

arguments:
u Number
The U parameter for the surface point
v Number
The V parameter for the surface point
distance Number
The distance for offsetting

on? boolean

Returns non-nil if the given UV (2D) point lies within the parameter space of this surface. Currently this function works only on the basis surface ; it does not observe trimming island or holes.


point 3d point

The point on the surface corresponding to the given u and v parameter values.


projected-point surface point

Returns the first result of the given point projected along the given vector intersected with the surface.

arguments:
point 3D Point
The point to be projected
vector 3D Vector
The vector along which to project

projected-points list of surface points

Returns the given point projected along the given vector intersected with the surface.

arguments:
point 3D Point
The point to be projected
vector 3D Vector
The vector along which to project

radius-of-curvature number

Returns the Gaussian curvature on the surface at the given parameter values. Three additional values are returned, which are the Normal Curvature at the point, the first Fundamental Principle Curvature, and the second Fundamental Principle Curvature.

note:
This function might be updated to provide a clearer idea of actual radius of curvature; at the time of this writing it is not clear what the relationship is between the four returned values and actual radius of curvature.
arguments:
u Number
The U parameter for the surface point
v Number
The V parameter for the surface point

u-max number

Returns maximum U component of the surface parameter space.


u-min number

Returns minimum U component of the surface parameter space.


v-max number

Returns maximum V component of the surface parameter space.


v-min number

Returns minimum V component of the surface parameter space.


Package Documentation