Table of contents
Collapse the table of content
Expand the table of content

Path.Points Method (Visio)

office 365 dev account|Last Updated: 6/12/2017
1 Contributor

Returns an array of points that defines a polyline that approximates a Path or Curve object within a given tolerance.


expression . Points( Tolerance , xyArray() )

expression A variable that represents a Path object.


NameRequired/OptionalData TypeDescription
ToleranceRequiredDoubleSpecifies how close the returned array of points must approximate the true path.
xyArray()RequiredDoubleOut parameter. Returns an array of alternating x and y values specifying points along a path's or curve's stroke.

Return Value



Use the Points method of the Path or Curve object to obtain an array of x,y coordinates specifying points along the path or curve within a given tolerance. The tolerance and returned x,y values are expressed in internal drawing units (inches).

If you used the Paths property of a Shapes object to obtain the Path or Curve object being queried, the coordinates are expressed in the parent's coordinate system. If you used the PathsLocal property of a Shape object to obtain the Path or Curve object, the coordinates are expressed in the local coordinate system.

If Microsoft Visio is unable to achieve the requested tolerance, Visio approximates the points as close to the requested tolerance as possible. Generally speaking, the lower the tolerance, the more points Visio returns. Visio doesn't accept a tolerance of zero (0).

The array returned includes both the starting and ending points of the path or curve even if it is closed.


This Microsoft Visual Basic for Applications (VBA) macro places a shape on the page, retrieves its Paths collection, and then uses the Points method of the Path object to return an array of points that defines a polyline approximating the Path object.

Public Sub Points_Example() 

 Dim vsoShape As Visio.Shape 
 Dim adblXYPoints() As Double 
 Dim strPointsList As String 
 Dim intOuterLoopCounter As Integer 
 Dim intInnerLoopCounter As Integer 

 Set vsoShape = ActivePage.DrawOval(1, 1, 4, 4) 

 For intOuterLoopCounter = 1 To vsoShape.Paths.Count 

 vsoShape.Paths(intOuterLoopCounter).Points 0.1, adblXYPoints 
 For intInnerLoopCounter = LBound(adblXYPoints) To UBound(adblXYPoints) 
 strPointsList = strPointsList &; adblXYPoints(intInnerLoopCounter) &; Chr(10) 
 Next intInnerLoopCounter 

 Next intOuterLoopCounter 

 Debug.Print strPointsList 

End Sub
© 2018 Microsoft