This example shows how to construct a circular pattern of Circles in a DraftSight drawing.
'-------------------------------------------------------------- ' Preconditions: ' 1. Create a VB.NET Windows console project. ' 2. Copy and paste this example into the VB.NET IDE. ' 3. Add a reference to: ' install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll. ' 4. Start DraftSight and open a drawing document. ' 5. Run the macro. ' ' Postconditions: ' 1. Constructs three Circles. ' 2. Creates a circular pattern using the Circles. ' 3. Zooms the drawing to fit. ' 4. Examine the drawing. '---------------------------------------------------------------- Imports DraftSight.Interop.dsAutomation Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Dim dsApp As Application Dim dsDoc As Document Dim dsModel As Model Dim dsSketchManager As SketchManager Dim dsCircle1 As Circle Dim dsCircle2 As Circle Dim dsCircle3 As Circle
'Connect to DraftSight dsApp = GetObject(, "DraftSight.Application") dsApp.AbortRunningCommand() ' abort any command currently running in DraftSight to avoid nested commands
'Get active document dsDoc = dsApp.GetActiveDocument() If Not dsDoc Is Nothing Then
'Get model space dsModel = dsDoc.GetModel()
'Get Sketch Manager dsSketchManager = dsModel.GetSketchManager()
'Circle parameters Dim center1X As Double, center2X As Double, center3X As Double center1X = 30.0# center2X = 60.0# center3X = 90.0#
Dim center1Y As Double, center2Y As Double, center3Y As Double center1Y = 30.0# center2Y = 60.0# center3Y = 90.0#
Dim center1Z As Double, center2Z As Double, center3Z As Double center1Z = 0.0# center2Z = 0.0# center3Z = 0.0#
Dim radius1 As Double, radius2 As Double, radius3 As Double radius1 = 10.0# radius2 = 10.0# radius3 = 10.0#
'Draw the Circles dsCircle1 = dsSketchManager.InsertCircle(center1X, center1Y, center1Z, radius1) dsCircle2 = dsSketchManager.InsertCircle(center2X, center2Y, center2Z, radius2) 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 Integer totalNumber = 4
Dim elementBasePointX As Double Dim elementBasePointY As Double Dim axisPointX As Double Dim axisPointY As Double elementBasePointX = 0.0# elementBasePointY = 0.0# axisPointX = 0.0# axisPointY = 0.0#
Dim orientElementsAboutAxis As Boolean orientElementsAboutAxis = True
'Prepare list of entity types Dim dsEntityTypes(0 To 2) As Integer dsEntityTypes(0) = dsObjectType_e.dsCircleType dsEntityTypes(1) = dsObjectType_e.dsCircleType dsEntityTypes(2) = dsObjectType_e.dsCircleType
'Prepare list of entities Dim dsEntities As DispatchWrapper() = New DispatchWrapper(2) {} dsEntities(0) = New DispatchWrapper(dsCircle1) dsEntities(1) = New DispatchWrapper(dsCircle2) dsEntities(2) = New DispatchWrapper(dsCircle3)
'Create circular pattern dsSketchManager.PatternCircular(dsBasePatternOn_e.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
End Module