Create a Block with Attributes in VBA to AutoCAD

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I am fairly new to VBA/Excel. I want to create a block, in this case, a circle that is inserted into the active AutoCad Document. I want to assign multiple Attributes to this block automatically, (it would refer to particular cells in an Excel Sheet). I have been able to create the block, but when I introduce the code for adding attributes, it fails. Could anyone point me int the right direction?
Option Explicit
Sub CreateBlock()
' this macro is run from Excel
Dim oAcad As Object
Dim oDoc As AcadDocument
Dim Sht1 As Worksheet
Dim Sht2 As Worksheet
Set Sht1 = Sheets("Generate")
Set Sht2 = Sheets("Sheet3")
Set oAcad = GetObject(, "Autocad.Application")
Set oDoc = oAcad.ActiveDocument
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Dim var As String
var = Range("C3").value
Set blockObj = oDoc.Blocks.Add(insertionPnt, var)
Dim AttributeObj As AcadAttribute
Dim height As Double
Dim mode As Long
Dim prompt As String
Dim tag As String
Dim value As String
height = 1
mode = acAttributeModeVerify
prompt = "new prompt"
tag = "new tag"
value = "New Value"
Dim InsertionPoint(0 To 2) As Double
InsertionPoint(0) = 5
InsertionPoint(1) = 5
InsertionPoint(2) = 0
Set AttributeObj = blockObj.AddAttribute(height, mode, prompt, InsertionPoint, tag, value)
Dim circleObj As AcadCircle
Dim Center(0 To 2) As Double
Dim radius As Double
Center(0) = 0
Center(1) = 0
Center(2) = 0
radius = 1
Set circleObj = blockObj.AddCircle(Center, radius)
Dim BlockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set BlockRefObj = oDoc.ModelSpace.InsertBlock(insertionPnt, var, 1#, 1#, 1#, 0)
ZoomExtents
MsgBox "This Block represents " & var
End Sub