Geometry Evaluation
This section describes geometry representation and discusses how to evaluate geometry using Creo Object TOOLKIT C++.
Geometry Traversal
•  A simple rectangular face has one contour and four edges.
•  A contour will traverse a boundary so that the part face is always on the right-hand side (RHS). For an external contour the direction of traversal is clockwise. For an internal contour the direction of traversal is counterclockwise.
•  If a part is extruded from a sketch that has a U-shaped cross section there will be separate surfaces at each leg of the U-channel.
•  If a part is extruded from a sketch that has a square-shaped cross section, and a slot feature is then cut into the part to make it look like a U-channel, there will be one surface across the legs of the U-channel. The original surface of the part is represented as one surface with a cut through it.
Geometry Terms
Following are definitions for some geometric terms:
•  Surface—An ideal geometric representation, that is, an infinite plane.
•  Face—A trimmed surface. A face has one or more contours.
•  Contour—A closed loop on a face. A contour consists of multiple edges. A contour can belong to one face only.
•  Edge—The boundary of a trimmed surface.
An edge of a solid is the intersection of two surfaces. The edge belongs to those two surfaces and to two contours. An edge of a datum surface can be either the intersection of two datum surfaces or the external boundary of the surface.
If the edge is the intersection of two datum surfaces it will belong to those two surfaces and to two contours. If the edge is the external boundary of the datum surface it will belong to that surface alone and to a single contour.
Traversing the Geometry of a Solid Block
Methods Introduced:
To traverse the geometry, follow these steps:
1. Starting at the top-level model, use pfcModelItemOwner::ListItems with an argument of pfcITEM_SURFACE.
2. Use pfcSurface::ListContours to list the contours contained in a specified surface.
3. Use pfcContour::ListElements to list the edges contained in the contour.
Curves and Edges
Datum curves, surface edges, and solid edges are represented in the same way in Creo Object TOOLKIT C++. You can get edges through geometry traversal or get a list of edges using the methods presented in the section ModelItem.
The t Parameter
The geometry of each edge or curve is represented as a set of three parametric equations that represent the values of x, y, and z as functions of an independent parameter, t. The t parameter varies from 0.0 at the start of the curve to 1.0 at the end of it.
The following figure illustrates curve and edge parameterization.
Image
Curve and Edge Types
Solid edges and datum curves can be any of the following types:
•  LINE—A straight line represented by the class interface pfcLine.
•  ARC—A circular curve represented by the class interface pfcArc.
•  SPLINE—A nonuniform cubic spline, represented by the class interface pfcSpline.
•  B-SPLINE—A nonuniform rational B-spline curve or edge, represented by the class interface pfcBSpline.
•  COMPOSITE CURVE—A combination of two or more curves, represented by the class interface pfcCompositeCurve. This is used for datum curves only.
See the section Geometry Representations for the parameterization of each curve type. To determine what type of curve a pfcEdge or pfcCurve object represents, use the method wfcWEdge::GetEdgeType or pfcCurveDescriptor::GetCurveType.
Because each curve class inherits from pfcGeomCurve, you can use all the evaluation methods in pfcGeomCurve on any edge or curve.
The following curve types are not used in solid geometry and are reserved for future expansion:
•  CIRCLE (pfcCircle)
•  ELLIPSE (pfcEllipse)
•  POLYGON (pfcPolygon)
•  ARROW (pfcArrow)
•  TEXT (pfcText)
Composite Curves
A composite curve is a curve that is made up of more than one segment and has no geometry of its own. A curve descriptor is a data object that describes the geometry of a curve or edge.
Methods Introduced:
Use the method wfcWCompositeCurveDescriptor::Create to create an instance of the object wfcWCompositeCurveDescriptor that contains information about the curve geometry of the specified composite curve.
In the curve descriptor, use the method wfcWCompositeCurveDescriptor::SetCompDirections to set the direction of the component for the composite curve. The valid values for the direction are defined by the enumerated type wfcCurveDirection and are as follows:
•  wfcCURVE_NO_FLIP
•  wfcCURVE_FLIP
Use the method wfcWCompositeCurveDescriptor::GetCompDirections to get the direction of the component of the specified composite curve.
Use the method wfcWCompositeCurve::GetCompDirections to get the direction of the component in a composite curve.
Evaluation of Curves and Edges
Methods Introduced:
The methods in pfcGeomCurve provide information about any curve or edge.
The method pfcGeomCurve::Eval3DData returns a pfcCurveXYZData object with information on the point represented by the input parameter t. The method pfcGeomCurve::EvalFromLength returns a similar object with information on the point that is a specified distance from the starting point.
The method pfcGeomCurve::EvalParameter returns the t parameter that represents the input pfcPoint3D object.
Both pfcGeomCurve::EvalLength and pfcGeomCurve::EvalLengthBetween return numerical values for the length of the curve or edge.
Use the method wfcWCurve::GetCurveData to retrieve the geometric representation data for the specified curve.
Use the methods wfcWCurve::GetColorType and wfcWCurve::SetColorType to get and set the color of the specified curve using the enumerated type pfcStdColor.
Use the methods wfcWCurve::GetLineStyle and wfcWCurve::SetLineStyle to get and set the linestyle of the specified curve using the enumerated type pfcStdLineStyle.
Solid Edge Geometry
Methods Introduced:
The methods pfcEdge::GetSurface1 and pfcEdge::GetSurface2 return the surfaces bounded by this edge. The methods pfcEdge::GetEdge1 and pfcEdge::GetEdge2 return the next edges in the two contours that contain this edge.
The method pfcEdge::EvalUV evaluates geometry information based on the UV parameters of one of the bounding surfaces.
The method pfcEdge::GetDirection returns a positive 1 if the edge is parameterized in the same direction as the containing contour, and –1 if the edge is parameterized opposite to the containing contour.
Use the method wfcWEdge::GetEdgeType to return the type of the specified edge.
Use the method wfcWEdge::GetEdgeVertexData to get a list of the edges and surfaces that meet at a specified solid vertex using the enumerated type wfcEdgeEndType. This method returns NULL if the specified edge is not visible in the current geometry.
Curve Descriptors
A curve descriptor is a data object that describes the geometry of a curve or edge. A curve descriptor describes the geometry of a curve without being a part of a specific model.
Methods Introduced:
The method pfcGeomCurve::GetCurveDescriptor returns a curve’s geometry as a data object.
The method pfcGeomCurve::GetNURBSRepresentation returns a Non-Uniform Rational B-Spline Representation of a curve.
Note
Use the method pfcGeomCurve::GetCurveDescriptor to get the geometric information for an edge, access the pfcCurveDescriptor object for one edge using .
The method wfcWSolid::GetCurve returns the curve handle for the specified curve Id.
The method wfcWCurve::GetCurveData retrieves the geometric representation data for the specified curve.
Contours
Methods Introduced:
Contours are a series of edges that completely bound a surface. A contour is not a pfcModelItem. You cannot get contours using the methods that get different types of pfcModelItem. Use the method pfcSurface::ListContours to get contours from their containing surfaces.
The method pfcContour::GetInternalTraversal returns a pfcContourTraversal enumerated type that identifies whether a given contour is on the outside or inside of a containing surface.
Use the method pfcContour::FindContainingContour to find the contour that entirely encloses the specified contour.
The method pfcContour::EvalArea provides the area enclosed by the contour.
The method pfcContour::EvalOutline returns the points that make up the bounding rectangle of the contour.
Use the method pfcContour::VerifyUV to determine whether the given pfcUVParams argument lies inside the contour, on the boundary, or outside the contour.
Note
To make the methods of wfcWContour available in pfcContour, cast pfcContour to wfcWContour. Refer to the section Casting of Creo Object TOOLKIT C++ pfc Classes to wfc Classes for more information on casting pfc classes to wfc classes.
Use the method wfcContourDescriptor::Create to create an instance of the object wfcContourDescriptor.This object contains information about a contour such as its traversal (internal or external) and identifiers of the edges that make up the contour.
Use the method wfcContourDescriptor::SetContourTraversal and wfcContourDescriptor::GetContourTraversal to set and get the type of contour traversal using the enumerated type pfcContourTraversal. The valid values are:
•  pfcCONTOUR_TRAV_INTERNAL—Specifies the traversal of the internal contours.
•  pfcCONTOUR_TRAV_EXTERNAL—Specifies the traversal of the external contours.
Use the method wfcContourDescriptor::SetEdgeIds and wfcContourDescriptor::GetEdgeIds to set and get an array of identifiers of the edges of the contour.
Surfaces
Using Creo Object TOOLKIT C++ you access datum and solid surfaces in the same way.
UV Parameterization
A surface in Creo is described as a series of parametric equations where two parameters, u and v, determine the x, y, and z coordinates. Unlike the edge parameter, t, these parameters need not start at 0.0, nor are they limited to 1.0.
The figure on the following page illustrates surface parameterization.
Image
Surface Types
Surfaces within Creo can be any of the following types:
•  PLANE—A planar surface represented by the class interface pfcPlane.
•  CYLINDER—A cylindrical surface represented by the class interface pfcCylinder.
•  CONE—A conic surface region represented by the class interface pfcCone.
•  TORUS—A toroidal surface region represented by the class interface pfcTorus.
•  REVOLVED SURFACE—Generated by revolving a curve about an axis. This is represented by the class interface pfcRevSurface.
•  RULED SURFACE—Generated by interpolating linearly between two curve entities. This is represented by the class interface pfcRuledSurface.
•  TABULATED CYLINDER—Generated by extruding a curve linearly. This is represented by the class interface pfcTabulatedCylinder.
•  COONS PATCH—A coons patch is used to blend surfaces together. It is represented by the class interface pfcCoonsPatch.
•  FILLET SURFACE—A filleted surface is found where a round or fillet is placed on a curved edge or an edge with a non-consistant arc radii. On a straight edge a cylinder is used to represent a fillet. This is represented by the class interface pfcFilletedSurface.
•  SPLINE SURFACE— A nonuniform bicubic spline surface that passes through a grid with tangent vectors given at each point. This is represented by the class interface pfcSplineSurface.
•  NURBS SURFACE—A NURBS surface is defined by basic functions (in u and v), expandable arrays of knots, weights, and control points. This is represented by the class interface pfcNURBSSurface.
•  CYLINDRICAL SPLINE SURFACE— A cylindrical spline surface is a nonuniform bicubic spline surface that passes through a grid with tangent vectors given at each point. This is represented by the class interface pfcCylindricalSplineSurface.
To determine which type of surface a pfcSurface object represents, access the surface type using pfcSurface::GetSurfaceType.
Surface Information
Methods Introduced:
The method pfcSurface::GetSurfaceType returns the type of the surface using the enumerated data type pfcSurfaceType and the valid values are:
•  pfcSURFACE_PLANE
•  pfcSURFACE_CYLINDER
•  pfcSURFACE_CONE
•  pfcSURFACE_TORUS
•  pfcSURFACE_RULED
•  pfcSURFACE_REVOLVED
•  pfcSURFACE_TABULATED_CYLINDER
•  pfcSURFACE_FILLET
•  pfcSURFACE_COONS_PATCH
•  pfcSURFACE_SPLINE
•  pfcSURFACE_NURBS
•  pfcSURFACE_CYLINDRICAL_SPLINE
•  pfcSURFACE_FOREIGN
•  pfcSURFACE_SPL2DER
The method pfcSurface::GetXYZExtents returns the XYZ points at the corners of the surface.
The method pfcSurface::GetUVExtents returns the UV parameters at the corners of the surface.
The method pfcSurface::GetOrientation returns the orientation of the surface using the enumerated data type pfcSurfaceOrientation and the valid values are:
•  pfcSURFACEORIENT_NONE—Surface that does not need orientation. For example, a solid surface needs orientation and therefore cannot be specified.
•  pfcSURFACEORIENT_OUTWARD—Surface that has oriented outward away from the solid model. du X dv points outward.
•  pfcSURFACEORIENT_INWARD—Surface that has oriented inward toward the solid model. du X dv points inward.
Evaluation of Surfaces
Surface methods allow you to use multiple surface information to calculate, evaluate, determine, and examine surface functions and problems.
Methods Introduced:
The method pfcSurface::GetOwnerQuilt returns the pfcQuilt object that contains the datum surface.
The method pfcSurface::EvalClosestPoint projects a three-dimensional point onto the surface. Use the method pfcSurface::EvalClosestPointOnSurface to determine whether the specified three-dimensional point is on the surface, within the accuracy of the part. If it is, the method returns the point that is exactly on the surface. Otherwise the method returns null.
The method pfcSurface::Eval3DData returns a pfcSurfXYZData object that contains information about the surface at the specified u and v parameters. The method pfcSurface::EvalParameters returns the u and v parameters that correspond to the specified three-dimensional point.
The method pfcSurface::EvalArea returns the area of the surface, whereas pfcSurface::EvalDiameter returns the diameter of the surface. If the diameter varies the optional pfcUVParams argument identifies where the diameter should be evaluated.
The method pfcSurface::EvalPrincipalCurv returns a pfcCurvatureData object with information regarding the curvature of the surface at the specified u and v parameters.
Use the method pfcSurface::VerifyUV to determine whether the pfcUVParams are actually within the boundary of the surface.
The methods pfcSurface::EvalMaximum and pfcSurface::EvalMinimum return the three-dimensional point on the surface that is the furthest in the direction of (or away from) the specified vector.
The method pfcSurface::ListSameSurfaces identifies other surfaces that are tangent and connect to the given surface.
The method wfcWSurface::GetNextSurface returns the next surface in the surface list. If no surface is present in the surface list, the method returns the value NULL.
Note
Obtain the next surface again, in case the model geometry has changed.
Surface Descriptors
A surface descriptor is a data object that describes the shape and geometry of a specified surface. A surface descriptor allows you to describe a surface in 3D without an owner ID.
Methods Introduced:
The method pfcSurface::GetSurfaceDescriptor returns a surfaces geometry as a data object.
The method pfcSurface::GetNURBSRepresentation returns a Non-Uniform Rational B-Spline Representation of a surface.
Use the method wfcWSurfaceDescriptor::SetContourData and wfcWSurfaceDescriptor::GetContourData to set and get the contour data information from an array of wfcContourDescriptors.
Use the method wfcWSurfaceDescriptor::SetSurfaceId and wfcWSurfaceDescriptor::GetSurfaceId to set and get the Id of the specified surface.
Axes, Coordinate Systems, and Points
Coordinate axes, datum points, and coordinate systems are all model items. Use the methods that return ModelItems to get one of these geometry objects. Refer to the section ModelItem for additional information.
Evaluation of ModelItems
Methods Introduced:
The method pfcAxis::GetSurf returns the revolved surface that uses the axis.
Use the method wfcWAxis::GetAxisData to return the geometric representation data for the specified axis as a object of the class pfcCurveDescriptor.
Use the method wfcWSolid::GetAxis to initialize the axis handle. Specify the axis Id as the input parameter for this method.
The method pfcCoordSystem::GetCoordSys returns the pfcTransform3D object (which includes the origin and x-, y-, and z- axes) that defines the coordinate system.
Use the method wfcWSolid::GetCsys to return the coordinate system handle as a object of the class wfcWCsys.
The method pfcPoint::GetPoint returns the xyz coordinates of the datum point.
Interference
Creo assemblies can contain interferences between components when constraint by certain rules defined by the user. The pfcInterference package allows the user to detect and analyze any interferences within the assembly. The analysis of this functionality should be looked at from two standpoints: global and selection based analysis.
Methods Introduced:
To compute all the interferences within an Assembly one has to call pfcCreateGlobalEvaluator with a pfcAssembly object as an argument. This call returns apfcGlobalEvaluator object. The pfcCretaeGlobalEvaluator can be used to extract an assembly object or to set an assembly object for the interference computation.
The methods pfcGlobalEvaluator::GetAssem and pfcGlobalEvaluator::SetAssem with pfcAssembly as an argument allow you to do exactly that.
The method pfcGlobalEvaluator::ComputeGlobalInterference determines the set of all the interferences within the assembly.
This method will return a sequence of pfcGlobalInterference objects or null if there are no interfering parts. Each object contains a pair of intersecting parts and an object representing the interference volume, which can be extracted by using pfcGlobalInterference::GetSelParts and pfcGlobalInterference::GetVolume respectively.
Analyzing Interference Information
Methods Introduced:
The method pfcSelectionPair::Create creates a pfcSelectionPair object using two pfcSelection objects as arguments.
A return from this method will serve as an argument to pfcCreateSelectionEvaluator, which will provide a way to determine the interference data between the two selections.
pfcSelectionEvaluator::GetSelections and pfcSelectionEvaluator::SetSelections will extract and set the object to be evaluated respectively.
pfcSelectionEvaluator::ComputeInterference determines the interfering information about the provided selections. This method will return the pfcInterferenceVolume object or null if the selections do no interfere.
pfcSelectionEvaluator::ComputeClearance computes the clearance data for the two selection. This method returns a pfcClearanceData object, which can be used to obtain and set clearance distance, nearest points between selections, and a boolean IsInterferening variable.
pfcSelectionEvaluator::ComputeNearestCriticalDistance finds a critical point of the distance function between two selections.
This method returns a pfcCriticalDistanceData object, which is used to determine and set critical points, surface parameters, and critical distance between points.
Analyzing Interference Volume
Methods Introduced:
The method pfcInterferenceVolume::ComputeVolume will calculate a value for interfering volume.
The method pfcInterferenceVolume::Highlight will highlight the interfering volume with the color provided in the argument to the function.
The method pfcInterferenceVolume::GetBoundaries will return a set of boundary surface descriptors for the interference volume.
Tessellation
You can calculate tessellation for different types of Creo geometry. The tessellation geometry is made up of:
•  Small lines—For edges and curves.
•  Triangles—For surfaces and solid models.
Surface Tessellation
Use the method wfcSurfaceTessellationInput::Create to create an instance of the object wfcSurfaceTessellationInput that contains information about the surface tessellation. Specify the following parameters as input arguments to create the surface tessellation:
•  AngleControl—Regulates the amount of additional improvement provided along curves with small radii. Specify a value from the range 0.0 to 1.0.
•  StepSize—Controls the fineness of the triangulations for all surfaces. The values range from five times of the model accuracy to the model size with a default value of (model size)/30.
•  Projection—Specifies the parameters used to calculate the UV projection for the texture mapping. The types of UV projection are defined in the enumerated type wfcSurfaceTessellationProjection and are as follows:
  wfcSRFTESS_DEFAULT_PROJECTION—Provides the UV parameters for the tessellation points that map to a plane whose U and V extents are [0,1] each.
  wfcSRFTESS_PLANAR_PROJECTION—Projects the UV parameters using a planar transform, where u=x, v=y, and z is ignored.
  wfcSRFTESS_CYLINDRICAL_PROJECTION—Projects the UV parameters using a cylindrical transform, where x=r*cos(theta), y=r*sin(theta), u=theta, v=z, and r is ignored.
  wfcSRFTESS_SPHERICAL_PROJECTION—Projects the UV parameters onto a sphere, where x=r*cos(theta)*sin(phi), y=r*sin(theta)*sin(phi), z=r*cos(phi), u=theta, v=phi, and r is ignored.
  wfcSRFTESS_NO_PROJECTION—Provides the unmodified UV parameters for the tessellation points.
.
•  CsysData—Specifies the coordinate system data, including the transformation matrix, origin, and axes information.
•  ChordHeight—Specifies the maximum distance between a chord and a surface.
Use the methods wfcSurfaceTessellationInput::GetAngleControl and wfcSurfaceTessellationInput::SetAngleControl to get and set the value of the angle control used for surface tessellation.
Use the methods wfcSurfaceTessellationInput::GetStepSize and wfcSurfaceTessellationInput::SetStepSize to get and set the maximum value for the step size used for the surface tessellation.
Use the methods wfcSurfaceTessellationInput::GetProjection and wfcSurfaceTessellationInput::SetProjection to get and set the parameters used to calculate the UV projection for the texture mapping using the enumerated value wfcSurfaceTessellationProjection.
Use the methods wfcSurfaceTessellationInput::GetCsysData and wfcSurfaceTessellationInput::SetCsysData to get and set the coordinate system data for the surface tessellation.
Use the methods wfcSurfaceTessellationInput::GetChordHeight and wfcSurfaceTessellationInput::SetChordHeight to get and set the chord height used for surface tessellation.
Use the method wfcWSurface::GetTessellation to calculate the tessellation of a given surface. Specify the object wfcSurfaceTessellationInput as the input argument for this method. This method returns an object wfcTessellation that contains the tessellation data.
The method wfcTessellation::GetFacetVertexIndices returns a sequence of facet vertices for the specified surface tessellation data.
Use the method wfcTessellation::GetUVParams to obtain the UV parameters for each of the tessellation vertices
Use the method wfcTessellation::GetVectors to obtain the normal vectors for each of the tessellation vertices
Use the method wfcTessellation::GetVertices to obtain the vertices for the tessellation for a specified surface.
Curve and Edge Tessellation
Use the method wfcWCurve::GetCurveTessellation to retrieve the curve tessellation for a datum curve as a wfcCurveTessellation pointer.
Use the method wfcWEdge::GetEdgeTessellation to retrieve the edge tessellation for a specified edge as a wfcEdgeTessellation pointer. .
Part and Assembly Tessellation
From Creo 3.0 M110 onward, the method wfcWPart::Tessellate has been deprecated. Use the method wfcWSolid::Tessellate instead. The method wfcWSolid::Tessellate tessellates each surface of the specified model. On parts, wfcWSolid::Tessellate acts on all surfaces whereas on assemblies, this method acts only on surfaces that belong to the assembly, that is, it does not tessellate surfaces of the assembly components. Specify the ChordHeight, AngleControl and IncludeQuilts as input parameters to this method. For more information on ChordHeight, AngleControl and IncludeQuilts, refer to the section Surface Tessellation.
Use the method wfcSurfaceTessellationData::GetFacetVertexIndices to obtain an array of facet vertices in the tessellated surface of the specified part.
Use the method wfcSurfaceTessellationData::GetNormals to get an array of normal vectors present in the tessellated surface of the specified part.
Use the method wfcSurfaceTessellationData::GetNumberOfFacets to obtain the number of facets present in the tessellated surface of the specified part.
Use the method wfcSurfaceTessellationData::GetNumberOfVertices to obtain the number of vertices present in the tessellated surface of the specified part.
Use the method wfcSurfaceTessellationData::GetSurface to get the surface which has been tessellated in the specified part.
Use the method wfcSurfaceTessellationData::GetVertexVectors to get an array of vertex vectors present in the tessellated surface of the specified part.
Geometry Objects
Geometry of Points
Use the method wfcWPoint::GetCoordinates to retrieve the X, Y, and Z coordinates of the specified point.
The method wfcWSolid::ProjectPoint projects a point normal on the solid with in the specified maximum distance, and returns the surface where the point is projected along with the UV parameters of the surface as a wfcProjectionInfo object.
Note
The method wfcWSolid::ProjectPoint is supported only for parts.
The method wfcProjectionInfo::GetSurface returns the surface on which the specified point has been projected.
Use the method wfcProjectionInfo::GetUVParam to get the UV point on the surface where the specified point has been projected.
Use the method wfcWPart::FindGeometry to determine the surfaces or edges on which the specified point is located.
Note
This method does not return the neighboring surfaces, if the specified point lies on an edge.
Use the method wfcWPoint::FindIntolerance to determine if two points are co-incident, that is, whether the distance between two points is within the Creo tolerances.
Use the method wfcWPoint::GetCoordinates to retrieve the X, Y and Z coordinates of the specified point.
The method wfcWPointTolerance::GetTolerance retrieves the amount by which the distance between two points exceeds tolerance.
The method wfcWPointTolerance::GetWithinTolerance returns true if distance between points is within tolerance and false if not.
Geometry of Coordinate System Datums
Methods Introduced:
The method wfcWCsysData::Create creates a data object that contains information about the coordinate system. The input arguments are:
•  XAxis—Specifies the X-axis of the coordinate system.
•  YAxis—Specifies the Y-axis of the coordinate system.
•  ZAxis—Specifies the Z-axis of the coordinate system.
•  Origin—Specifies the origin of the coordinate system.
Use the methods wfcWCsysData::GetOrigin and wfcWCsysData::SetOrigin to get and set the origin of the coordinate system using the pfcVector3D object.
Use the methods wfcWCsysData::GetXAxis and wfcWCsysData::SetXAxis to get and set the X–axis of the coordinate system using the pfcVector3D object.
Use the methods wfcWCsysData::GetYAxis and wfcWCsysData::SetYAxis to get and set the Y–axis of the coordinate system using the pfcVector3D object.
Use the methods wfcWCsysData::GetZAxis and wfcWCsysData::SetZAxis to get and set the Z–axis of the coordinate system using the pfcVector3D object.
Geometry of Solid Edges
The methods described in this section allow you get and set the parameters of edges in a part. The geometric edges form a contour, which further forms the surface of a part. Thus, the edges define the extent of a surface. Every edge in a part has two surfaces adjacent to it.
The method wfcEdgeDescriptor::Create creates a data object that contains information about the edges in a solid surface.
The method wfcEdgeDescriptor::GetId returns the ID of the specified edge. Use the method wfcEdgeDescriptor::SetId to set ID of the edge.
The method wfcEdgeDescriptor::GetEdgeSurface1 retrieves all the information of the first surface of an edge as a wfcEdgeSurfaceData object. Use the method wfcEdgeDescriptor::SetEdgeSurface1 to set the parameters of the first surface of an edge.
The method wfcEdgeDescriptor::GetEdgeSurface2 retrieves all the information of the second surface of an edge as a wfcEdgeSurfaceData object. Use the method wfcEdgeDescriptor::SetEdgeSurface2 to set the parameters of the second surface of an edge.
The method wfcEdgeSurfaceData::Create to create a data object that contains information about the surface adjacent to an edge.
The method wfcEdgeSurfaceData::GetEdgeSurfaceId returns the ID of the specified surface. Use the method wfcEdgeSurfaceData::SetEdgeSurfaceId to set the ID of the specified surface.
The method wfcEdgeSurfaceData::GetDirection identifies whether an edge is parameterized along or against the direction of the specified surface. Each edge belongs to two surfaces. The edge will be in the same direction as one surface, and in the opposite direction of the other surface. Use the method wfcEdgeSurfaceData::SetDirection to set the direction of the edge along the specified surface.
The method wfcEdgeSurfaceData::GetUVParamsSequence returns an array of UV points data for the curve. Use the method wfcEdgeSurfaceData::SetUVParamsSequence to set the UV points for the curve.
The method wfcEdgeSurfaceData::GetUVCurveData returns an array of UV curve data for the specified surface. Use the method wfcEdgeSurfaceData::SetUVCurveData to set the parameters for the UV curve.
The method wfcEdgeDescriptor::GetXYZCurveData returns a data object that contains information about the geometry type for the XYZ curve. Use the method wfcEdgeDescriptor::SetXYZCurveData to set the geometry type for the XYZ curve.
Geometry of Quilts
The method wfcWSolid::GetQuilt returns a data object which contains information about the quilt for the specified quilt Id.
Use the method wfcWQuilt::IsBackupGeometry to identify if the specified quilt belongs to the invisible Copy Geometry backup feature.
Use the method wfcWQuilt::GetVolume to get the volume of a closed quilt.
Use the method wfcQuiltData::Create to create an instance of the object wfcQuiltData that contains information about the quilt data. Specify the quilt ID and a pointer to the surface descriptor as the input arguments for this method.
Use the methods wfcQuiltData::SetQuiltId and wfcQuiltData::GetQuiltId to set and get the quilt id.
Use the method wfcQuiltData::GetSurfaceDescriptors to access information about a quilt surface from an array of wfcWSurfaceDescriptors. Use the method wfcQuiltData::SetSurfaceDescriptors to set the values for the surface descriptor.
Geometry of Surfaces
The method wfcWPart::GetVolumeInfo analyzes and returns the number of connected volumes of a part and the surfaces that bound the volume as a wfcVolumeSurfaceInfo object. Connect volumes are disjoint components of a solid. It comprises of all the shells and voids that lie in the same maximal ambient shell. The maximal ambient shell is an external shell and is not located inside any other shell.
The method wfcVolumeSurfaceInfo::GetNumberOfVolumes returns the number of volumes in the part.
The method wfcVolumeSurfaceInfo::GetSurfaceInfos returns the information of the bounding surfaces as a wfcBoundingSurfaceInfos object.
Use the method wfcBoundingSurfaceInfo::GetNumberOfSurfaces returns the number of surfaces that bound the connected volumes.
The method wfcBoundingSurfaceInfo::GetSurfaceIds returns the IDs of the surfaces that bound the connected volumes.
Geometry of datums
Use the method wfcDatumObject::GetDatumObjectType to get the type of the datum object. The valid values for the datum object type are defined by the enumerated type wfcDatumObjectType and are as follows:
•  wfcDATUM_CURVE—Specifies that the datum object is a curve.
•  wfcDATUM_PLANE—Specifies that the datum object is a plane.
•  wfcDATUM_CSYS—Specifies that the datum object is a coordinate system.
Use the method wfcDatumData::Create to create an instance of the object wfcDatumData that contains information about the datum data. Specify the Name, Id and the DatumObject as the input parameters to this method.
Use the methods wfcDatumData::SetDatumObject and wfcDatumData::GetDatumObject to set and get the datum object as on object of the class wfcDatumObject.
Use the methods wfcDatumData::SetId and wfcDatumData::GetId to set and get the datum Id for the specified datum.
Use the methods wfcDatumData::SetId and wfcDatumData::GetId to set and get the name of the datum.
The method wfcCsysDatumObject::Create creates a coordinate system datum object using wfcWCsysData object input argument.
Use the methods wfcCsysDatumObject::GetCsysData and wfcCsysDatumObject::SetCsysData to get and set the coordinate system data using the wfcWCsysData object.
The method wfcCurveDatumObject::Create creates a curve datum object using pfcCurveDescriptor object input argument.
Use the methods wfcCurveDatumObject::GetCurve and wfcCurveDatumObject::SetCurve to get and set the curve using the pfcCurveDescriptor object.
The method wfcPlaneDatumObject::Create creates a plane datum object using wfcWPlaneData object input argument.
Use the methods wfcPlaneDatumObject::GetPlaneData and wfcPlaneDatumObject::SetPlaneData to get and set the plane using the wfcWPlaneData object.
The method wfcWPlaneData::Create creates a data object that contains information about the plane data. The input arguments are:
•  XAxis—Specifies the X-axis of the coordinate system.
•  YAxis—Specifies the Y-axis of the coordinate system.
•  ZAxis—Specifies the Z-axis of the coordinate system.
•  Origin—Specifies the origin of the coordinate system.
Use the methods wfcWPlaneData::GetOrigin and wfcWPlaneData::SetOrigin to get and set the origin of the plane using the pfcPoint3D object.
Use the methods wfcWPlaneData::GetXAxis and wfcWPlaneData::SetXAxis to get and set the X-axis of the plane using the pfcVector3D object.
Use the methods wfcWPlaneData::GetYAxis and wfcWPlaneData::SetYAxis to get and set the Y-axis of the plane using the pfcVector3D object.
Use the methods wfcWPlaneData::GetZAxis and wfcWPlaneData::SetZAxis to get and set the Z-axis of the plane using the pfcVector3D object.
Tracing a Ray
Method Introduced:
The method wfcWModel::ComputeRayIntersections returns a list of intersections between a ray and a model as a pfcSelections object. The method finds intersections in both directions from the start point of the ray, and assigns each intersection a depth—the distance from the ray start point in the direction defined. The intersections in the reverse direction have a negative depth. The intersections are ordered from the negative depth to the positive depth. The input arguments are:
•  ApertureRadius—Specifies the aperture value in pixels. If you give a value less than –1.0, the value is taken from the Creo configuration file option pick_aperture_radius. If that option is not set, the function uses the default value of 7.0.
•  Ray—Specifies the ray. A ray is specified in terms of a start location and direction vector as a wfcRay object.
The method wfcRay::Create creates a data object that contains information related to the ray. Use the method wfcRay::SetPoint to set the starting point for the ray. The method wfcRay::GetPoint returns the starting point of the ray.
The method wfcRay::SetVector sets the direction vector for the ray. Use the method wfcRay::GetVector to get the direction vector.
Measurement
Method Introduced:
Use the method wfcWSelection::EvaluateAngle to measure the angle between two geometry items expressed as wfcWSelection objects. Both objects must be straight, solid edges.
Use the method wfcWContour::Eval3DOutline to find the 3D bounding box for the inside surface of the specified outer contour. This method takes into account the internal voids present.
Use the method wfcWSelection::EvaluateDiameter to get the diameter of the specified surface. Specify only revolved surfaces such as, cylinder, cone, and so on for this method.