Hide menu
Loading...
Searching...
No Matches

Base class for geometrical surfaces. More...

Inheritance diagram for cadex.Geom.Surface:
cadex.Geom.Geometry cadex.BaseObject cadex.Geom.BSplineSurface cadex.Geom.BezierSurface cadex.Geom.ElementarySurface cadex.Geom.OffsetSurface cadex.Geom.SweptSurface cadex.Geom.ConicalSurface cadex.Geom.CylindricalSurface cadex.Geom.Plane cadex.Geom.SphericalSurface cadex.Geom.ToroidalSurface cadex.Geom.SurfaceOfLinearExtrusion cadex.Geom.SurfaceOfRevolution

Public Member Functions

 Surface (global::System.IntPtr cPtr, bool cMemoryOwn)
 
cadex.Geom.SurfaceType Type ()
 Returns a surface type.
 
cadex.Geom.Continuity Continuity ()
 Returns a continuity type of the surface.
 
cadex.Geom.Point Value (double theParameterU, double theParameterV)
 Evaluates a point on the surface.
 
cadex.Geom.Direction Normal (double theParameterU, double theParameterV)
 
bool IsUPeriodic ()
 Returns true if the surface is periodic in U direction.
 
bool IsVPeriodic ()
 Returns true if the surface is periodic in V direction.
 
double UMin ()
 Returns a minimum parameter of a definition domain in U direction.
 
double UMax ()
 Returns a maximum parameter of a definition domain in U direction.
 
double VMin ()
 Returns a minimum parameter of a definition domain in V direction.
 
double VMax ()
 Returns a maximum parameter of a definition domain in V direction.
 
void Domain (out double theUMin, out double theUMax, out double theVMin, out double theVMax)
 Returns a definition domain.
 
bool IsTrimmed ()
 Returns whether surface is trimmed or not.
 
void SetTrim (double theUFirst, double theULast, double theVFirst, double theVLast)
 Trims surface with [theUFirst, theULast] x [theVFirst, theVLast] section.
 
void Transform (cadex.Geom.Transformation theTransformation)
 Applies transformation matrix to this object.
 
cadex.Geom.Surface Transformed (cadex.Geom.Transformation theTransformation)
 Returns a copy this object after applying transformation.
 
void D0 (double theParameterU, double theParameterV, cadex.Geom.Point theValue)
 
void D1 (double theParameterU, double theParameterV, cadex.Geom.Point theValue, cadex.Geom.Vector theD1U, cadex.Geom.Vector theD1V)
 
void D2 (double theParameterU, double theParameterV, cadex.Geom.Point theValue, cadex.Geom.Vector theD1U, cadex.Geom.Vector theD1V, cadex.Geom.Vector theD2U, cadex.Geom.Vector theD2V, cadex.Geom.Vector theD2UV)
 
bool DN (double theParameterU, double theParameterV, uint theDerivativeOrder, cadex.Geom.Point theValue, cadex.Collections.VectorList theD)
 
void Curvature (double theParameterU, double theParameterV, cadex.Geom.Direction thePrincipalMaxDirection, cadex.Geom.Direction thePrincipalMinDirection)
 
void Curvature (double theParameterU, double theParameterV, cadex.Geom.Direction thePrincipalMaxDirection, cadex.Geom.Direction thePrincipalMinDirection, out double theMaxCurvature, out double theMinCurvature)
 
void Mirror (cadex.Geom.Point thePoint)
 
void Mirror (cadex.Geom.Axis1d theAxis)
 
void Mirror (cadex.Geom.Axis3d theAxis)
 
cadex.Geom.Surface Mirrored (cadex.Geom.Point theRef)
 
cadex.Geom.Surface Mirrored (cadex.Geom.Axis1d theAxis)
 
cadex.Geom.Surface Mirrored (cadex.Geom.Axis3d theAxis)
 
void Rotate (cadex.Geom.Axis1d theAxis, double theAngle)
 
cadex.Geom.Surface Rotated (cadex.Geom.Axis1d theAxis, double theAngle)
 
void Translate (cadex.Geom.Vector theVector)
 
cadex.Geom.Surface Translated (cadex.Geom.Vector theVector)
 
void Scale (cadex.Geom.Point thePoint, double theScale)
 
cadex.Geom.Surface Scaled (cadex.Geom.Point thePoint, double theScale)
 
- Public Member Functions inherited from cadex.Geom.Geometry
 Geometry (global::System.IntPtr cPtr, bool cMemoryOwn)
 
- Public Member Functions inherited from cadex.BaseObject
 BaseObject (global::System.IntPtr cPtr, bool cMemoryOwn)
 
void Dispose ()
 
bool IsNull ()
 
ulong Id ()
 Return unique identifier of public object.
 
bool IsEqual (cadex.BaseObject theObj)
 
override int GetHashCode ()
 
override bool Equals (System.Object o)
 

Static Public Member Functions

static new bool CompareType (cadex.BaseObject theObject)
 
- Static Public Member Functions inherited from cadex.Geom.Geometry
static bool CompareType (cadex.BaseObject theObject)
 
static cadex.Geom.Geometry Cast (cadex.BaseObject theBase)
 

Protected Member Functions

override void Dispose (bool disposing)
 

Detailed Description

Base class for geometrical surfaces.

Surfaces in 3D space are used to represent boundaries of a body (e.g. solid or sheet body). Each face must refer to a surface.

Types

Refer to Surface Types for the list of supported surface types. Type() returns a surface type as enumeration value which can be used to downcast to a respective subclass type, for instance:

Surface aSurface = ...;
if (aSurface.Type() == Geom::ShapeType::Cylinder) {
const CylindricalSurface& aCylSurf = static_cast<const CylindricalSurface&> (aSurface);
double aRadius = aCylSurf.Radius();
...
}
Defines a cylindrical surface.
Definition CylindricalSurface.cs:40
double Radius()
Returns radius.
Definition CylindricalSurface.cs:89
Base class for geometrical surfaces.
Definition Surface.cs:96
cadex.Geom.SurfaceType Type()
Returns a surface type.
Definition Surface.cs:134

Parametric Definition

Surface is defined using parametric definition as \(\mathbf{S}(u,v)\) where \(\mathbf{S}\) is a 3D radius-vector \((x,y,z)\) and \((u, v)\) are parameters from a definition domain \([u_{min}, u_{max}]\times[v_{min}, v_{max}]\).

UMin(), UMax() and VMin(), VMax(), and Domain() return parametric definition range. Parametric range can be bounded (e.g. \([0, 1]\times[0, 1]\) for Bezier surface), unbounded (e.g. \((-\infty, +\infty)\times(-\infty, +\infty)\) for a plane), or semi-unbounded (e.g. \([0, 2\pi]\times(-\infty, +\infty)\) for cylindrical surface).

Evaluation

At any parameter u and v within a definition domain, the surface can be evaluated as follows:

  • Value() and D0() return a 3D point;
  • D1(), D2() and DN() return a derivative of a respective order;
  • Curvature() returns a curvature;
  • Normal() returns a normal to the surface (i.e. perpendicular to a tangential plane).

The following example demonstrates computation of a point on a sphere at parameters \(u=\frac{\pi}{4}\), \(v=\frac{\pi}{6}\):

CylindricalSurface aSphere = ...;
Point aPoint = aSphere.Value (M_PI / 4, M_PI / 6);
Defines a 3D point.
Definition Point.cs:17

If the surface is periodic in U and/or V (IsUPeriodic() and/or IsVPeriodic() return true) then the surface can be evaluated at any parameter U and/or V, otherwise behavior is undefined (e.g. an exception can be thrown or a weird value can be returned).

Continuity

Continuity() returns continuity (C0, C1, C2, CN) of the surface, minimum of U- and V- continuities, where C0 indicates continuity of the surface only, C1 - of its first derivative and so on.

Transformation

The surface can be modified using the following operations:

  • translation (Translate() and Translated());
  • rotation (Rotate() and Rotated());
  • mirroring (Mirror() and Mirrored());
  • scaling (Scale() and Scaled());
  • arbitrary transformation using 3x4 matrix (Transform() and Transformed()).
Warning
As the surface data is shared via internal pointer modification of the surface may affect other users of the surface (e.g. a face referring to it). So you might want to use method returning a modified copy of the surface (such as Transformed()).
See also
Surfaces, Curve, ModelData.Face.
Examples
exploring/brep_geometry/Program.cs, exploring/brep_geometry/main.cxx, exploring/brep_topology/Program.cs, and exploring/brep_topology/main.cxx.

Member Function Documentation

◆ Dispose()

override void cadex.Geom.Surface.Dispose ( bool disposing)
inlineprotectedvirtual

Reimplemented from cadex.Geom.Geometry.

◆ DN()

bool cadex.Geom.Surface.DN ( double theParameterU,
double theParameterV,
uint theDerivativeOrder,
cadex.Geom.Point theValue,
cadex.Collections.VectorList theD )
inline

Returns true if calculation was passed succsesfully, the returned vectors gives the value of the derivative for the order of derivation theDerivativeOrder. Otherwise returns false. Throws exception if the continuity of the surface is not CN.

Parameters:

  • theDerivativeOrder must belong to range [0, 3].
  • theD should have enough size to store 2 for D1(), 5 for D2() or 9 for D3() derivatives.

◆ Domain()

void cadex.Geom.Surface.Domain ( out double theUMin,
out double theUMax,
out double theVMin,
out double theVMax )
inline

Returns a definition domain.

See also
UMin(), UMax(), VMin(), VMax().

◆ IsUPeriodic()

bool cadex.Geom.Surface.IsUPeriodic ( )
inline

Returns true if the surface is periodic in U direction.

Examples include sphere, torus or a surface of revolution

◆ IsVPeriodic()

bool cadex.Geom.Surface.IsVPeriodic ( )
inline

Returns true if the surface is periodic in V direction.

Examples include torus or a V-periodic B-Spline.

◆ Transform()

void cadex.Geom.Surface.Transform ( cadex.Geom.Transformation theTransformation)
inline

Applies transformation matrix to this object.

Results depends on the actual surface type.

See also
Transformed().

◆ Transformed()

cadex.Geom.Surface cadex.Geom.Surface.Transformed ( cadex.Geom.Transformation theTransformation)
inline

Returns a copy this object after applying transformation.

The contents of this object is not modified.

See also
Transform().

◆ UMax()

double cadex.Geom.Surface.UMax ( )
inline

Returns a maximum parameter of a definition domain in U direction.

See also
UMin(), Domain().
Examples
exploring/brep_geometry/Program.cs, and exploring/brep_geometry/main.cxx.

◆ UMin()

double cadex.Geom.Surface.UMin ( )
inline

Returns a minimum parameter of a definition domain in U direction.

See also
UMax(), Domain().
Examples
exploring/brep_geometry/Program.cs, and exploring/brep_geometry/main.cxx.

◆ Value()

cadex.Geom.Point cadex.Geom.Surface.Value ( double theParameterU,
double theParameterV )
inline

Evaluates a point on the surface.

theParameterU must be within [UMin(), UMax()] if the surface is not U-periodic. theParameterV must be within [VMin(), VMax()] if the surface is not V-periodic.

◆ VMax()

double cadex.Geom.Surface.VMax ( )
inline

Returns a maximum parameter of a definition domain in V direction.

See also
VMin(), Domain().
Examples
exploring/brep_geometry/Program.cs, and exploring/brep_geometry/main.cxx.

◆ VMin()

double cadex.Geom.Surface.VMin ( )
inline

Returns a minimum parameter of a definition domain in V direction.

See also
VMax(), Domain().
Examples
exploring/brep_geometry/Program.cs, and exploring/brep_geometry/main.cxx.