Geometry Evaluation
This section describes geometry representation and discusses how to evaluate geometry using Creo Object TOOLKIT Java.
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 pfcModelItem.ModelItemOwner.ListItems with an argument of ModelItemType.ITEM_SURFACE.
2. Use pfcGeometry.Surface.ListContours to list the contours contained in a specified surface.
3. Use pfcGeometry.Contour.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 Java. 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 interfacepfcGeometry.Line.
•  ARC—A circular curve represented by the class interfacepfcGeometry.Arc.
•  SPLINE—A nonuniform cubic spline, represented by the class interfacepfcGeometry.Spline.
•  B-SPLINE—A nonuniform rational B-spline curve or edge, represented by the class interface pfcGeometry.BSpline.
•  COMPOSITE CURVE—A combination of two or more curves, represented by the class interfacepfcGeometry.CompositeCurve. 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 pfcGeometry.Edge or pfcGeometry.Curve object represents, use the Java instanceof operator.
Because each curve class inherits from pfcGeometry.GeomCurve, you can use all the evaluation methods in GeomCurve on any edge or curve.
The following curve types are not used in solid geometry and are reserved for future expansion:
•  CIRCLE (pfcGeometry.Circle)
•  ELLIPSE (pfcGeometry.Ellipse)
•  POLYGON (pfcGeometry.Polygon)
•  ARROW (pfcGeometry.Arrow)
•  TEXT (pfcGeometry.Text)
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 WCompositeCurveDescriptor_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 wfcGeometry.WCompositeCurveDescriptor.SetCompDirections to set the direction of the component for the composite curve. The valid values for the direction are defined by the enumerated type CurveDirection and are as follows:
•  CURVE_NO_FLIP
•  CURVE_FLIP
Use the method wfcGeometry.WCompositeCurveDescriptor.GetCompDirections to get the direction of the component of the specified composite curve.
Use the method wfcGeometry.WCompositeCurve.GetCompDirections to get the direction of the component in a composite curve.
Evaluation of Curves and Edges
Methods Introduced:
The methods in GeomCurve provide information about any curve or edge.
The method pfcGeometry.GeomCurve.Eval3DData returns a CurveXYZData object with information on the point represented by the input parameter t. The method pfcGeometry.GeomCurve.EvalFromLength returns a similar object with information on the point that is a specified distance from the starting point.
The method pfcGeometry.GeomCurve.EvalParameter returns the t parameter that represents the input Point3D object.
Both pfcGeometry.GeomCurve.EvalLength and pfcGeometry.GeomCurve.EvalLengthBetween return numerical values for the length of the curve or edge.
Use the method wfcGeometry.WCurve.GetCurveData to retrieve the geometric representation data for the specified curve.
Use the methods wfcGeometry.WCurve.GetColorType and wfcGeometry.WCurve.SetColorType to get and set the color of the specified curve using the enumerated class type pfcBase.StdColor.
Use the methods wfcGeometry.WCurve.GetLineStyle and wfcGeometry.WCurve.SetLineStyle to get and set the linestyle of the specified curve using the enumerated class type pfcBase.StdLineStyle.
Solid Edge Geometry
Methods Introduced:
The methods pfcGeometry.Edge.GetSurface1 and pfcGeometry.Edge.GetSurface2 return the surfaces bounded by this edge. The methods pfcGeometry.Edge.GetEdge1 and pfcGeometry.Edge.GetEdge2 return the next edges in the two contours that contain this edge.
The method pfcGeometry.Edge.EvalUV evaluates geometry information based on the UV parameters of one of the bounding surfaces.
The method pfcGeometry.Edge.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 wfcGeometry.WEdge.GetEdgeType to return the type of the specified edge.
Use the method wfcGeometry.WEdge.GetEdgeVertexData to get a list of the edges and surfaces that meet at a specified solid vertex using the enumerated type wfcGeometry.EdgeEndType. 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:
  • pfcGeometry.GeomCurve.GetCurveDescriptor
  • pfcGeometry.GeomCurve.GetNURBSRepresentation
  • Note
    To get geometric information for an edge, access the CurveDescriptor object for one edge using pfcGeometry.GeomCurve.GetCurveDescriptor.
  • wfcSolid.WSolid.GetCurve
  • The method pfcGeometry.GeomCurve.GetCurveDescriptor returns a curve’s geometry as a data object.
    The method pfcGeometry.GeomCurve.GetNURBSRepresentation returns a Non-Uniform Rational B-Spline Representation of a curve.
    The method wfcSolid.WSolid.GetCurve 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 ModelItem. You cannot get contours using the methods that get different types of ModelItem. Use the method pfcGeometry.Surface.ListContours to get contours from their containing surfaces.
    The method pfcGeometry.Contour.GetInternalTraversal returns a ContourTraversal enumerated type that identifies whether a given contour is on the outside or inside of a containing surface.
    Use the method pfcGeometry.Contour.FindContainingContour to find the contour that entirely encloses the specified contour.
    The method pfcGeometry.Contour.EvalArea provides the area enclosed by the contour.
    The method pfcGeometry.Contour.EvalOutline returns the points that make up the bounding rectangle of the contour.
    Use the method pfcGeometry.Contour.VerifyUV to determine whether the given UVParams 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.
    Use the method wfcGeometry.wfcGeometry.ContourDescriptor_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 methods wfcGeometry.ContourDescriptor.SetContourTraversal and wfcGeometry.ContourDescriptor.GetContourTraversal to set and get the type of contour traversal using the enumerated class type pfcGeometry.ContourTraversal. The valid values are:
    •  CONTOUR_TRAV_INTERNAL—Specifies the traversal of the internal contours.
    •  CONTOUR_TRAV_EXTERNAL—Specifies the traversal of the external contours.
    Use the method wfcGeometry.ContourDescriptor.SetEdgeIds and wfcGeometry.ContourDescriptor.GetEdgeIds to set and get an array of identifiers of the edges of the contour.
    Surfaces
    Using Creo Object TOOLKIT Java 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 pfcGeometry.Plane.
    •  CYLINDER—A cylindrical surface represented by the class interface IGeometry.Cylinder.
    •  CONE—A conic surface region represented by the class interface pfcGeometry.Cone.
    •  TORUS—A toroidal surface region represented by the class interfacepfcGeometry.Torus.
    •  REVOLVED SURFACE—Generated by revolving a curve about an axis. This is represented by the class interface pfcGeometry.RevSurface.
    •  RULED SURFACE—Generated by interpolating linearly between two curve entities. This is represented by the class interface pfcGeometry.RuledSurface.
    •  TABULATED CYLINDER—Generated by extruding a curve linearly. This is represented by the class interfacepfcGeometry.TabulatedCylinder.
    •  COONS PATCH—A coons patch is used to blend surfaces together. It is represented by the class interfacepfcGeometry.CoonsPatch.
    •  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 interfacepfcGeometry.FilletedSurface.
    •  SPLINE SURFACE— A nonuniform bicubic spline surface that passes through a grid with tangent vectors given at each point. This is represented by the classinterfacepfcGeometry.SplineSurface.
    •  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 interfacepfcGeometry.NURBSSurface.
    •  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 interfacepfcGeometry.CylindricalSplineSurface.
    To determine which type of surface a pfcGeometry.Surface object represents, access the surface type using pfcGeometry.Geometry.GetSurfaceType.
    Surface Information
    Methods Introduced:
    Methods Introduced:
    The method pfcGeometry.Surface.GetSurfaceType returns the type of the surface using the enumerated data type pfcSurface.SurfaceType and the valid values are:
    •  SURFACE_PLANE
    •  SURFACE_CYLINDER
    •  SURFACE_CONE
    •  SURFACE_TORUS
    •  SURFACE_RULED
    •  SURFACE_REVOLVED
    •  SURFACE_TABULATED_CYLINDER
    •  SURFACE_FILLET
    •  SURFACE_COONS_PATCH
    •  SURFACE_SPLINE
    •  SURFACE_NURBS
    •  SURFACE_CYLINDRICAL_SPLINE
    •  SURFACE_FOREIGN
    •  SURFACE_SPL2DER
    The method pfcGeometry.Surface.GetXYZExtents returns the XYZ points at the corners of the surface.
    The method pfcGeometry.Surface.GetUVExtents returns the UV parameters at the corners of the surface.
    The method pfcGeometry.Surface.GetOrientation returns the orientation of the surface using the enumerated data type pfcSurface.SurfaceOrientation and the valid values are:
    •  SURFACEORIENT_NONE—Surface that does not need orientation. For example, a solid surface needs orientation and therefore cannot be specified.
    •  SURFACEORIENT_OUTWARD—Surface that has oriented outward away from the solid model. du X dv points outward.
    •  SURFACEORIENT_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 pfcGeometry.Surface.GetOwnerQuilt returns the Quilt object that contains the datum surface.
    The method pfcGeometry.Surface.EvalClosestPoint projects a three-dimensional point onto the surface. Use the method pfcGeometry.Surface.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 pfcGeometry.Surface.Eval3DData returns a SurfXYZData object that contains information about the surface at the specified u and v parameters. The method pfcGeometry.Surface.EvalParameters returns the u and v parameters that correspond to the specified three-dimensional point.
    The method pfcGeometry.Surface.EvalArea returns the area of the surface, whereas pfcGeometry.Surface.EvalDiameter returns the diameter of the surface. If the diameter varies the optional UVParams argument identifies where the diameter should be evaluated.
    The method pfcGeometry.Surface.EvalPrincipalCurv returns a CurvatureData object with information regarding the curvature of the surface at the specified u and v parameters.
    Use the method pfcGeometry.Surface.VerifyUV to determine whether the UVParams are actually within the boundary of the surface.
    The methods pfcGeometry.Surface.EvalMaximum and pfcGeometry.Surface.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 pfcGeometry.Surface.ListSameSurfaces identifies other surfaces that are tangent and connect to the given surface.
    The method wfcGeometry.WSurface.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 pfcGeometry.Surface.GetSurfaceDescriptor returns a surfaces geometry as a data object.
    The method pfcGeometry.Surface.GetNURBSRepresentation returns a Non-Uniform Rational B-Spline Representation of a surface.
    Use the method wfcGeometry.WSurfaceDescriptor.SetContourData and wfcGeometry.WSurfaceDescriptor.GetContourData to set and get the contour data information from an array of wfcGeometry.ContourDescriptors.
    Use the method wfcGeometry.WSurfaceDescriptor.SetSurfaceId and wfcGeometry.WSurfaceDescriptor.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 pfcGeometry.Axis.GetSurf returns the revolved surface that uses the axis.
    Use the method wfcGeometry.WAxis.GetAxisData to return the geometric representation data for the specified axis as a object of the class pfcGeometry.CurveDescriptor.
    Use the method wfcSolid.WSolid.GetAxis to initialize the axis handle. Specify the axis Id as the input parameter for this method.
    The method pfcGeometry.CoordSystem.GetCoordSys returns the Transform3D object (which includes the origin and x-, y-, and z- axes) that defines the coordinate system.
    Use the method wfcSolid.WSolid.GetCsys to return the coordinate system handle as a object of the class wfcWCsys.
    The method pfcGeometry.Point.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 com.ptc.pfc.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 pfcInterference.pfcInterference.CreateGlobalEvaluator with a Assembly.Assembly object as an argument. This call returns a GlobalEvaluator object. The GlobalEvaluator can be used to extract an assembly object or to set an assembly object for the interference computation.
    The methods pfcInterference.GlobalEvaluator.GetAssem and pfcInterference.GlobalEvaluator.SetAssem with pfcAssembly.Assembly as an argument allow you to do exactly that.
    The method pfcInterference.GlobalEvaluator.ComputeGlobalInterference determines the set of all the interferences within the assembly.
    This method will return a sequence of pfcInterference.GlobalInterference 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 pfcInterference.GlobalInterference.GetSelParts and pfcInterference.GlobalInterference.GetVolume respectively.
    Analyzing Interference Information
    Methods Introduced:
    The method pfcSelect.pfcSelect.SelectionPair_Create creates a Select.SelectionPair object using two pfcSelect.Selection objects as arguments.
    A return from this method will serve as an argument to pfcInterference.pfcInterference.CreateSelectionEvaluator, which will provide a way to determine the interference data between the two selections.
    pfcInterference.SelectionEvaluator.GetSelections and pfcInterference.SelectionEvaluator.SetSelections will extract and set the object to be evaluated respectively.
    pfcInterference.SelectionEvaluator.ComputeInterference determines the interfering information about the provided selections. This method will return the pfcInterference.InterferenceVolume object or null if the selections do no interfere.
    pfcInterference.SelectionEvaluator.ComputeClearance computes the clearance data for the two selection. This method returns a pfcInterference.ClearanceData object, which can be used to obtain and set clearance distance, nearest points between selections, and a boolean IsInterferening variable.
    pfcInterference.SelectionEvaluator.
    ComputeNearestCriticalDistance
    finds a critical point of the distance function between two selections.
    This method returns a pfcInterference.CriticalDistanceData object, which is used to determine and set critical points, surface parameters, and critical distance between points.
    Analyzing Interference Volume
    Methods Introduced:
    The method pfcInterference.InterferenceVolume.ComputeVolume will calculate a value for interfering volume.
    The method pfcInterference.InterferenceVolume.Highlight will highlight the interfering volume with the color provided in the argument to the function.
    The method pfcInterference.InterferenceVolume.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 wfcGeometry.wfcGeometry.SurfaceTessellationInput_Create to create an instance of the object wfcGeometry.SurfaceTessellationInput 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 class type wfcGeometry.SurfaceTessellationProjection and are as follows:
      SRFTESS_DEFAULT_PROJECTION—Provides the UV parameters for the tessellation points that map to a plane whose U and V extents are [0,1] each.
      SRFTESS_PLANAR_PROJECTION—Projects the UV parameters using a planar transform, where u=x, v=y, and z is ignored.
      SRFTESS_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.
      SRFTESS_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.
      SRFTESS_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 wfcGeometry.SurfaceTessellationInput.GetAngleControl and wfcGeometry.SurfaceTessellationInput.SetAngleControl to get and set the value of the angle control used for surface tessellation.
    Use the methods wfcGeometry.SurfaceTessellationInput.GetStepSize and wfcGeometry.SurfaceTessellationInput.SetStepSize to get and set the maximum value for the step size used for the surface tessellation.
    Use the methods wfcGeometry.SurfaceTessellationInput.GetProjection and wfcGeometry.SurfaceTessellationInput.SetProjection to get and set the parameters used to calculate the UV projection for the texture mapping using the enumerated class type wfcGeometry.SurfaceTessellationProjection.
    Use the methods wfcGeometry.SurfaceTessellationInput.GetCsysData and wfcGeometry.SurfaceTessellationInput.SetCsysData to get and set the coordinate system data for the surface tessellation.
    Use the methods wfcGeometry.SurfaceTessellationInput.GetChordHeight and wfcGeometry.SurfaceTessellationInput.SetChordHeight to get and set the chord height used for surface tessellation.
    Use the method wfcGeometry.WSurface.GetTessellation to calculate the tessellation of a given surface. Specify the object wfcGeometry.SurfaceTessellationInput as the input argument for this method. This method returns an object wfcGeometry.Tessellation that contains the tessellation data.
    The method wfcGeometry.Tessellation.GetFacetVertexIndices returns a sequence of facet vertices for the specified surface tessellation data.
    Use the method wfcGeometry.Tessellation.GetUVParams to obtain the UV parameters for each of the tessellation vertices
    Use the method wfcGeometry.Tessellation.GetVectors to obtain the normal vectors for each of the tessellation vertices
    Use the method wfcGeometry.Tessellation.GetVertices to obtain the vertices for the tessellation for a specified surface.
    Curve and Edge Tessellation
    Use the method wfcGeometry.WCurve.GetCurveTessellation to retrieve the curve tessellation for a datum curve as a wfcGeometry.CurveTessellation pointer. It returns the number of tessellation points.
    Use the method wfcGeometry.WEdge.GetEdgeTessellation to retrieve the edge tessellation for the specified edge. This method returns a pointer to the class wfcGeometry.EdgeTessellation.
    Part and Assembly Tessellation
    From Creo 3.0 M110 onward, the method wfcPart.WPart.Tessellate has been deprecated. Use the method wfcSolid.WSolid.Tessellate instead. The method wfcWSolid::Tessellate tessellates each surface of the specified model. On parts, wfcSolid.WSolid.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 wfcGeometry.SurfaceTessellationData.GetFacetVertexIndices to obtain an array of facet vertices in the tessellated surface of the specified part.
    Use the method wfcGeometry.SurfaceTessellationData.GetNormals to get an array of normal vectors present in the tessellated surface of the specified part.
    Use the method wfcGeometry.SurfaceTessellationData.GetNumberOfFacets to obtain the number of facets present in the tessellated surface of the specified part.
    Use the method wfcGeometry.SurfaceTessellationData.GetNumberOfVertices to obtain the number of vertices present in the tessellated surface of the specified part.
    Use the method wfcGeometry.SurfaceTessellationData.GetSurface to get the surface which has been tessellated in the specified part.
    Use the method wfcGeometry.SurfaceTessellationData.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 wfcGeometry.WPoint.GetCoordinates to retrieve the X, Y, and Z coordinates of the specified point.
    The method wfcSolid.WSolid.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 WSolid.ProjectionInfo object.
    Note
    The method wfcSolid.WSolid.ProjectPoint is supported only for parts.
    The method wfcSolid.ProjectionInfo.GetSurface returns the surface on which the specified point has been projected.
    Use the method wfcSolid.ProjectionInfo.GetUVParam to get the UV point on the surface where the specified point has been projected.
    Use the method wfcPart.WPart.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 wfcGeometry.WPoint.FindIntolerance to determine if two points are co-incident, that is, whether the distance between two points is within theCreo tolerances.
    Use the method wfcGeometry.WPoint.GetCoordinates to retrieve the X, Y and Z coordinates of the specified point.
    The method wfcGeometryWPointTolerance.GetTolerance retrieves the amount by which the distance between two points exceeds tolerance.
    The method wfcGeometryWPointTolerance.GetWithinTolerance returns true if distance between points is within tolerance and false if not.
    Geometry of Coordinate System Datums
    Methods Introduced:
    The method wfcGeometry.WCsysData_Create creates a datum 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 wfcGeometry.WCsysData.GetOrigin and wfcGeometry.WCsysData.SetOrigin to get and set the origin of the coordinate system using the pfcBase.Vector3D object.
    Use the methods wfcGeometry.WCsysData.GetXAxis and wfcGeometry.WCsysData.SetXAxis to get and set the X–axis of the coordinate system using the pfcBase.Vector3D object.
    Use the methods wfcGeometry.WCsysData.GetYAxis and wfcGeometry.WCsysData.SetYAxis to get and set the Y–axis of the coordinate system using the pfcBase.Vector3D object.
    Use the methods wfcGeometry.WCsysData.GetZAxis and wfcGeometry.WCsysData.SetZAxis to get and set the Z–axis of the coordinate system using the pfcBase.Vector3D 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 wfcGeometry.wfcGeometry.EdgeDescriptor_Create creates a data object that contains information about the edges in a solid surface.
    The method wfcGeometry.EdgeDescriptor.GetId returns the ID of the specified edge. Use the method wfcGeometry.EdgeDescriptor.SetId to set ID of the edge.
    The method wfcGeometry.EdgeDescriptor.GetEdgeSurface1 retrieves all the information of the first surface of an edge as a EdgeSurfaceData object. Use the method wfcGeometry.EdgeDescriptor.SetEdgeSurface1 to set the parameters of the first surface of an edge.
    The method wfcGeometry.EdgeDescriptor.GetEdgeSurface2 retrieves all the information of the second surface of an edge as a EdgeSurfaceData object. Use the method wfcGeometry.EdgeDescriptor.SetEdgeSurface2 to set the parameters of the second surface of an edge.
    The method wfcGeometry.wfcGeometry.EdgeSurfaceData_Create to create a data object that contains information about the surface adjacent to an edge.
    The method wfcGeometry.EdgeSurfaceData.GetEdgeSurfaceId returns the ID of the specified surface. Use the method wfcGeometry.EdgeSurfaceData.SetEdgeSurfaceId to set the ID of the specified surface.
    The method wfcGeometry.EdgeSurfaceData.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 wfcGeometry.EdgeSurfaceData.SetDirection to set the direction of the edge along the specified surface.
    The method wfcGeometry.EdgeSurfaceData.GetUVParamsSequence returns an array of UV points data for the curve. Use the method wfcGeometry.EdgeSurfaceData.SetUVParamsSequence to set the UV points for the curve.
    The method wfcGeometry.EdgeSurfaceData.GetUVCurveData returns an array of UV curve data for the specified surface. Use the method wfcGeometry.EdgeSurfaceData.SetUVCurveData to set the parameters for the UV curve.
    The method wfcGeometry.EdgeDescriptor.GetXYZCurveData returns a data object that contains information about the geometry type for the XYZ curve. Use the method wfcGeometry.EdgeDescriptor.SetXYZCurveData to set the geometry type for the XYZ curve.
    Geometry of Quilts
    Use the method wfcGeometry.WQuilt.IsBackupGeometry to identify if the specified quilt belongs to the invisible Copy Geometry backup feature.
    Use the method wfcGeometry.WQuilt.GetVolume to get the volume of a closed quilt.
    The method wfcSolid.WSolid.GetQuilt returns a data object which contains information about the quilt for the specified quilt Id.
    Use the method wfcGeometry.wfcGeometry.QuiltData_Create to create an instance of the object wfcGeometry.QuiltData 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 wfcGeometry.QuiltData.SetQuiltId and wfcGeometry.QuiltData.GetQuiltId to set and get the quilt id.
    Use the method wfcGeometry.QuiltData.GetSurfaceDescriptors and to access information about a quilt surface from an array of wfcWSurfaceDescriptors. Use the method wfcGeometry.QuiltData.SetSurfaceDescriptorsto set the values for the surface descriptor.
    Geometry of Surfaces
    The method wfcPart.WPart.GetVolumeInfo analyzes and returns the number of connected volumes of a part and the surfaces that bound the volume as a VolumeSurfaceInfo 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 wfcPart.VolumeSurfaceInfo.GetNumberOfVolumes returns the number of volumes in the part.
    The method wfcPart.VolumeSurfaceInfo.GetSurfaceInfos returns the information of the bounding surfaces as a BoundingSurfaceInfos object.
    Use the method wfcPart.BoundingSurfaceInfo.GetNumberOfSurfaces returns the number of surfaces that bound the connected volumes.
    The method wfcPart.BoundingSurfaceInfo.GetSurfaceIds returns the IDs of the surfaces that bound the connected volumes.
    Geometry of datums
    Method Introduced:
    The method wfcGeometry.CsysDatumObject_Create creates a coordinate system datum object using wfcGeometry.WCsysDataobject input parameter.
    Use the methods wfcGeometryCsysDatumObject.GetCsysData and wfcGeometryCsysDatumObject.SetCsysData to get and set the coordinate system data using the wfcGeometry.WCsysData object.
    The method wfcGeometry.CurveDatumObject_Create creates a curve datum object using pfcGeometry.CurveDescriptor object input argument.
    Use the methods wfcGeometry.CurveDatumObject.GetCurve and wfcGeometry.CurveDatumObject.SetCurve to get and set the curve using the pfcGeometry.CurveDescriptor object.
    The method wfcGeometry.PlaneDatumObject_Create creates a plane datum object using wfcGeometry.WPlaneData object input argument.
    Use the methods wfcGeometry.PlaneDatumObject.GetPlaneData and wfcGeometry.PlaneDatumObject.SetPlaneData to get and set the plane using the wfcGeometry.WPlaneData object.
    The method wfcGeometry.WPlaneData_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 wfcGeometry.WPlaneData.GetOrigin and wfcGeometry.WPlaneData.SetOrigin to get and set the origin of the plane using the pfcBase.Point3D object.
    Use the methods wfcGeometry.WPlaneData.GetXAxis and wfcGeometry.WPlaneData.SetXAxis to get and set the X-axis of the plane using the pfcBase.Vector3D object.
    Use the methods wfcGeometry.WPlaneData.GetYAxis and wfcGeometry.WPlaneData.SetYAxis to get and set the Y-axis of the plane using the pfcBase.Vector3D object.
    Use the methods wfcGeometry.WPlaneData.GetZAxis and wfcGeometry.WPlaneData.SetZAxis to get and set the Z-axis of the plane using the pfcBase.Vector3D object.
    Tracing a Ray
    Method Introduced:
    The method wfcModel.WModel.ComputeRayIntersections returns a list of intersections between a ray and a model as a Selections 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 Ray object.
    The method wfcModel.wfcModel.Ray_Create creates a data object that contains information related to the ray. Use the method wfcModel.Ray.SetPoint to set the starting point for the ray. The method wfcModel.Ray.GetPoint returns the starting point of the ray.
    The method wfcModel.Ray.SetVector sets the direction vector for the ray. Use the method wfcModel.Ray.GetVector to get the direction vector.
    Measurement
    Use the method wfcSelect.WSelection.EvaluateAngle to measure the angle between two geometry items expressed as wfcSelect.WSelection objects. Both objects must be straight, solid edges.
    Use the method wfcGeometry.WContour.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 wfcSelect.WSelection.EvaluateDiameter to get the diameter of the specified surface. Specify only revolved surfaces such as, cylinder, cone, and so on for this method.