Now that you have created a dialog box, you can modify and add code.
- Open the code for ThisDrawing, if it is not already open.
- Update
the following lines in the Declarations section:
Public trad As Double ' Updated
Public tspac As Double ' Updated
Public tsides As Integer ' Add
Public tshape As String ' Add
Because the code in the form accesses trad and tspac, you update their definitions to make them public. Private variables are available only in the module in which they are defined, so the variables need to be changed to public. Additionally, you have added tsides for the number of polygon tile sides and tshape for the user's choice of tile shape, which is either circle or polygon.
- Go
to the gpuser subroutine.
Remove the two lines that obtain the radius of the tiles and the
spacing between the tiles, because this information comes from the
form. Specifically, remove the following:
trad = ThisDrawing.Utility. _
GetDistance(sp, "Radius of tiles: ")
tspac = ThisDrawing.Utility. _
GetDistance(sp, "Spacing between tiles: ")
- Add
the lines that load and display the form. Add the following lines
in place of the lines removed in step 3:
Load gpDialog
gpDialog.Show
- Add
a subroutine to the end of the code file that draws either the circular tiles
or the polygon tiles:
'Draw the tile with the designated shape
Sub DrawShape(pltile)
Dim angleSegment As Double
Dim currentAngle As Double
Dim angleInRadians As Double
Dim currentSide As Integer
Dim varRet As Variant
Dim aCircle As AcadCircle
Dim aPolygon As AcadLWPolyline
ReDim points(1 To tsides * 2) As Double
'Branch based on the type of shape to draw
Select Case tshape
Case "Circle"
Set aCircle = ThisDrawing.ModelSpace. _
AddCircle(pltile, trad)
Case "Polygon"
angleSegment = 360 / tsides
currentAngle = 0
For currentSide = 0 To (tsides - 1)
angleInRadians = dtr(currentAngle)
varRet = ThisDrawing.Utility.PolarPoint(pltile, _
angleInRadians, trad)
points((currentSide * 2) + 1) = varRet(0)
points((currentSide * 2) + 2) = varRet(1)
currentAngle = currentAngle + angleSegment
Next currentSide
Set aPolygon = ThisDrawing.ModelSpace. _
AddLightWeightPolyline(points)
aPolygon.Closed = True
End Select
End Sub
This subroutine uses a Select Case statement to branch control of the program based on the type of shape to draw. The tshape variable is used to determine the type of shape.
- Next,
go to the drow subroutine.
Find the two occurrences of the following line:
Set cir = ThisDrawing.ModelSpace.AddCircle(pltile, trad)
Change these lines to draw the appropriate shape tile, as follows:
DrawShape (pltile) ' Updated