This example shows how to transform a Circle to a Region.
'-------------------------------------------------------------- ' 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. ' 5 Open the Immediate window. ' 6. Run the macro. ' ' Postconditions: ' 1. A Circle is constructed in the drawing document. ' 2. The Circle is transformed to a Region. ' 3. Whether the Region is visible and its perimeter value are printed ' to the Immediate window. '---------------------------------------------------------------- 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 dsCircle As DraftSight.Circle Dim dsSelectionManager As DraftSight.SelectionManager Dim dsRegion As DraftSight.Region Dim centerX, centerY, centerZ, radius As Double Dim status As Boolean Dim perimeter As Double
' 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 dsDoc Is Nothing Then MsgBox "There are no open documents in DraftSight." Exit Sub End If
' Get model space Set dsModel = dsDoc.GetModel()
' Get Sketch Manager Set dsSketchManager = dsModel.GetSketchManager()
' Circle parameters centerX = 1# centerY = 2# centerZ = 0# radius = 5#
' Construct Circle Set dsCircle = dsSketchManager.InsertCircle(centerX, centerY, centerZ, radius)
' Select Circle status = dsCircle.Select(True)
If status Then
' Get selected Circle Set dsSelectionManager = dsDoc.GetSelectionManager() Dim dsObj(0) As Object Dim dsType As Long Set dsObj(0) = dsSelectionManager.GetSelectedObject(dsSelectionSetType_Current, 0, dsType)
' Make sure that the Circle object was retrieved If Not dsObj(0) Is Nothing Then
' Transform Circle to Region Dim regionObjs As Variant Dim regionObj As Variant dsSketchManager.InsertRegion dsObj, regionObjs Set regionObj = regionObjs(0)
' Cast to Region Set dsRegion = regionObj
' Is Region visible? status = dsRegion.Visible Debug.Print ("Is Region visible? " & status)
' Get perimeter of Region dsRegion.GetPerimeter perimeter Debug.Print ("Perimeter of Region: " & perimeter) Else
Debug.Print ("Circle object was not retrieved.") Debug.Print (" ")
End If
End If
End Sub