By Adam Nagy
Each face has an evaluator that can be used to check the min and max parametric values on it. If you calculate the middle of that, then you can get to the center of the Face.
Here is a VBA sample that places a WorkPoint at the calculated center of the currently selected Face of the PartDocument.
Sub GetFaceCenter() Dim d As PartDocument Set d = ThisApplication.ActiveDocument Dim f As Face Set f = d.SelectSet(1) Dim s As SurfaceEvaluator Set s = f.Evaluator Dim b As Box2d Set b = s.ParamRangeRect ' Get center parameter Dim p(1) As Double p(0) = b.MinPoint.x + (b.MaxPoint.x - b.MinPoint.x) / 2 p(1) = b.MinPoint.y + (b.MaxPoint.y - b.MinPoint.y) / 2 ' Convert param to point Dim pt(2) As Double Call s.GetPointAtParam(p, pt) ' Add a workpoint Dim t As TransientGeometry Set t = ThisApplication.TransientGeometry Dim wpt As Point Set wpt = t.CreatePoint(pt(0), pt(1), pt(2)) Call d.ComponentDefinition.WorkPoints.AddFixed(wpt) End Sub
This is what I got for the various faces in one of the sample part documents: