Create Table Example (VBA)
This example shows how to change the transparency of the active Layer, create
a TableStyle and Table, and change the background colors of the top row and a cell
in the Table.
'-------------------------------------------------------------
' 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. Open the Immediate window.
' 5. Start DraftSight and open a new document.
' 6. Run the macro.
'
' Postconditions:
' 1. Gets the transparency object for the active Layer and prints its
' transparency percentage to the Immediate window.
' 2. Changes the transparency percentage of the active Layer and prints
' its new percentage to the Immediate window.
' 3. Creates and activates a new TableStyle named Sample Table Style.
' 4. Inserts a Table and applies the Sample Table Style TableStyle.
' 5. Gets the transparency object for the Table.
' 6. Prints whether the transparency object for the Table is ByLayer.
' 7. If not, then changes and updates the transparency object
' of the Table to ByLayer.
' 8. Changes the top row's background color.
' 9. Changes the background color of the cell in the second row
' and second column to match the top row's background color.
'10. Prints the name of the TableStyle to the Immediate window.
'11. Examine the drawing and the Immediate window.
'----------------------------------------------------------------
Option Explicit
Sub main()
Dim dsApp As DraftSight.Application
'Connect to DraftSight application
Set dsApp = GetObject(, "DraftSight.Application")
'Abort any command currently running in DraftSight
'to avoid nested commands
dsApp.AbortRunningCommand
'Get active document
Dim dsDoc As DraftSight.Document
Set dsDoc = dsApp.GetActiveDocument()
If dsDoc Is Nothing Then
MsgBox ("There are no open documents in DraftSight.")
Return
End If
'Get how transparency is defined
Dim dsLayerManager As DraftSight.LayerManager
Dim dsLayer As DraftSight.Layer
Set dsLayerManager = dsDoc.GetLayerManager
Set dsLayer = dsLayerManager.GetActiveLayer
Debug.Print "Transparency percentage for active Layer: " & dsLayer.Transparency
'Set new transparency percentage for the active Layer
dsLayer.Transparency = 50
Debug.Print "New transparency percentage for active Layer: " & dsLayer.Transparency
'Get the TableStyle Manager
Dim dsTableStyleManager As DraftSight.TableStyleManager
Set dsTableStyleManager = dsDoc.GetTableStyleManager
'Create the TableStyle
Dim dsTableStyle As DraftSight.TableStyle
Dim sampleTableStyle As String
Dim status As Long
sampleTableStyle = "Sample Table Style"
dsTableStyleManager.CreateTableStyle sampleTableStyle, dsTableStyle, status
'Set the TableStyle styles
'Create the Table in a downward direction
dsTableStyle.HeaderOrientation = dsTableHeaderOrientation_Down
'Set the Colors for the Table backgrounds
Dim dsColorHeader As DraftSight.Color
Dim dsColorData As DraftSight.Color
Dim dsColorTitle As DraftSight.Color
Set dsColorHeader = dsTableStyle.GetBackgroundColor(dsTableCellType_Header)
dsColorHeader.SetNamedColor dsNamedColor_e.dsNamedColor_Cyan
dsTableStyle.SetBackgroundColor dsTableCellType_Header, dsColorHeader
Set dsColorData = dsTableStyle.GetBackgroundColor(dsTableCellType_Data)
dsColorData.SetNamedColor dsNamedColor_e.dsNamedColor_Green
dsTableStyle.SetBackgroundColor dsTableCellType_Data, dsColorData
Set dsColorTitle = dsTableStyle.GetBackgroundColor(dsTableCellType_Title)
dsColorTitle.SetNamedColor dsNamedColor_e.dsNamedColor_White
dsTableStyle.SetBackgroundColor dsTableCellType_Title, dsColorTitle
'Activate the TableStyle
dsTableStyle.Activate
'Get the model document
Dim dsModel As DraftSight.Model
Set dsModel = dsDoc.GetModel
'Get the Sketch Manager
Dim dsSketchManager As DraftSight.SketchManager
Set dsSketchManager = dsModel.GetSketchManager
'Insert the Table
Dim dsTable As DraftSight.Table
Dim x As Double
x = 6
Dim y As Double
y = 6
Dim row As Long
row = 4
Dim col As Long
col = 5
Dim rowHeight As Double
rowHeight = 2
Dim colWidth As Double
colWidth = 4
Set dsTable = dsSketchManager.InsertTable(x, y, row, col, rowHeight, colWidth, dsTableCellType_Title, dsTableCellType_Header, dsTableCellType_Data)
'Get transparency object for Table
Dim dsTransparency As DraftSight.Transparency
Set dsTransparency = dsTable.Transparency
'Find out if Table's transparency is ByLayer
Debug.Print "Transparency defined ByLayer: " & dsTransparency.IsByLayer
'If not, then change Table's transparency to ByLayer and
'update Table's transparency object
If Not dsTransparency.IsByLayer Then
dsTransparency.SetByLayer
Debug.Print "Transparency now ByLayer: " & dsTransparency.IsByLayer
'Update Table's transparency object
dsTable.Transparency = dsTransparency
End If
'Change Table's top row's background color
dsColorTitle.SetNamedColor (dsNamedColor_Yellow)
dsTable.SetBackgroundColor dsTableCellType_Title, dsColorTitle
'Change background color of cell in second row and
'second column to match the top row's background color
dsTable.SetCellBackgroundColor 1, 1, dsColorTitle
'Get the name of the TableStyle for the just-inserted Table
Debug.Print ("TableStyle applied to this table: " & dsTableStyle.Name)
dsApp.Zoom dsZoomRange_Fit, Nothing, Nothing
End Sub