GetWidth Example

Using Programming Languages other than VBA

Sub Example_GetWidth()
	' The following code prompts you to select a lightweight
	' polyline, then displays the width of each segment of the
	' selected polyline. 
	Dim returnObj As AcadObject
	Dim basePnt As Variant
	Dim retCoord As Variant
	Dim StartWidth As Double
	Dim EndWidth As Double
	Dim i, j As Long
	Dim nbr_of_segments As Long
	Dim nbr_of_vertices As Long
	Dim segment As Long
	Dim message_string
	On Error Resume Next
	ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select a polyline"
	' Make sure the user selected a polyline.
	If Err <> 0 Then
		If returnObj.EntityName <> "AcDbPolyline" Then
			MsgBox "You did not select a polyline"
		End If
		Exit Sub
	End If

	' Obtain the coordinates of each vertex of the selected polyline.
	' The coordinates are returned in an array of points.
	retCoord = returnObj.Coordinates

	segment = 0
	i = LBound(retCoord)				 ' Start index of coordinates array
	j = UBound(retCoord)				 ' End index of coordinates array
	nbr_of_vertices = ((j - i) \ 2) + 1  ' Number of vertices in the polyline

	' Determine the number of segments in the polyline.
	' A closed polyline has as many segments as it has vertices.
	' An open polyline has one fewer segment than it has vertices.
	' Check the Closed property to determine if the polyline is closed.

	If returnObj.Closed Then
		nbr_of_segments = nbr_of_vertices
		nbr_of_segments = nbr_of_vertices - 1
	End If

	' Get the width of each segment of the polyline
	Do While nbr_of_segments > 0
		' Get the width of the current segment
		returnObj.GetWidth segment, StartWidth, EndWidth
		message_string = "The segment that begins at " & retCoord(i) & "," & retCoord(i + 1) _
			& " has a start width of " & StartWidth & " and an end width of " & EndWidth
		MsgBox message_string, , "GetWidth Example"
		' Prepare to obtain width of next segment, if any
		i = i + 2
		segment = segment + 1
		nbr_of_segments = nbr_of_segments - 1

End Sub