Create Circular Pattern Example (VBA)
This example shows how to construct a circular pattern of Circles in a
DraftSight drawing.
'--------------------------------------------------------------
' Preconditions:
' 1. Create a VBA macro in a software product in which VBA is
' embedded.
' 2. Copy and paste this example into the Visual Basic IDE.
' 3. Add a reference to the DraftSight type library,
' install_dir\bin\dsAutomation.dll.
' 4. Start DraftSight and open a drawing document.
' 5. Run the macro.
'
' Postconditions:
' 1. Constructs three Circles.
' 2. Creates a circular pattern of the Circles.
' 3. Zooms the drawing to fit.
' 4. Examine the drawing.
'----------------------------------------------------------------
Option Explicit
Sub main()
Dim dsApp As DraftSight.Application
Dim dsDoc As DraftSight.Document
Dim dsModel As DraftSight.Model
Dim dsSketchManager As DraftSight.SketchManager
Dim dsCircle1 As DraftSight.Circle
Dim dsCircle2 As DraftSight.Circle
Dim dsCircle3 As DraftSight.Circle
'Connect to DraftSight
Set dsApp = GetObject(, "DraftSight.Application")
'Abort any command currently running in DraftSight
'to avoid nested commands
dsApp.AbortRunningCommand
'Get active document
Set dsDoc = dsApp.GetActiveDocument()
If Not dsDoc Is Nothing Then
'Get model space
Set dsModel = dsDoc.GetModel()
'Get Sketch Manager
Set dsSketchManager = dsModel.GetSketchManager()
'Circle parameters
Dim center1X As Double, center2X As Double, center3X As Double
center1X = 30#
center2X = 60#
center3X = 90#
Dim center1Y As Double, center2Y As Double, center3Y As Double
center1Y = 30#
center2Y = 60#
center3Y = 90#
Dim center1Z As Double, center2Z As Double, center3Z As Double
center1Z = 0#
center2Z = 0#
center3Z = 0#
Dim radius1 As Double, radius2 As Double, radius3 As Double
radius1 = 10#
radius2 = 10#
radius3 = 10#
'Draw the Circles
Set dsCircle1 = dsSketchManager.InsertCircle(center1X, center1Y, center1Z, radius1)
Set dsCircle2 = dsSketchManager.InsertCircle(center2X, center2Y, center2Z, radius2)
Set dsCircle3 = dsSketchManager.InsertCircle(center3X, center3Y, center3Z, radius3)
'Circular pattern parameters
Dim angleBetween As Double
angleBetween = 3.14159265358979 / 2 '90 degrees in radians
Dim fillAngle As Double
fillAngle = 4.71238898 '270 degrees in radians
Dim totalNumber As Long
totalNumber = 4
Dim elementBasePointX As Double
Dim elementBasePointY As Double
Dim axisPointX As Double
Dim axisPointY As Double
elementBasePointX = 0#
elementBasePointY = 0#
axisPointX = 0#
axisPointY = 0#
Dim orientElementsAboutAxis As Boolean
orientElementsAboutAxis = True
'Prepare list of entity types
Dim dsEntityTypes(0 To 2) As Long
dsEntityTypes(0) = dsObjectType_e.dsCircleType
dsEntityTypes(1) = dsObjectType_e.dsCircleType
dsEntityTypes(2) = dsObjectType_e.dsCircleType
'Prepare list of entities
Dim dsEntities(0 To 2) As Object
Set dsEntities(0) = dsCircle1
Set dsEntities(1) = dsCircle2
Set dsEntities(2) = dsCircle3
'Create circular pattern
dsSketchManager.PatternCircular dsBasePatternOn_AngleBetweenAndElementsNumber, angleBetween, fillAngle, totalNumber, elementBasePointX, elementBasePointY, axisPointX, axisPointY, orientElementsAboutAxis, dsEntityTypes, dsEntities
'Zoom to fit
dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing
Else
MsgBox "There are no open documents in DraftSight."
End If
End Sub