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