首先,在这里搜索许多标题栏更新的示例。您最好换一种方式,从Autocad中驱动excel。这可以是一个简单的获取单元格并放置atribute。同样,我相信您可以从excel中驱动Autocad。我已经发布了一个vba块属性更新代码,可能是有用的,因为我不确定从excel驱动。基本上有两种方法可以找到要更改的正确属性,即使用其标记名或使用其位置顺序,第二种方法是这里的示例,第一个属性从0开始。请参见attrib(0)
大多数excel/Autocad示例都使用lisp,特别是用Vlisp编写的代码,其方法非常相似。
获取Excel。lsp是我使用的还有其他的,它确实有一些方法可以让excel控制,我从来没有这样做过。
- Public Sub ModifyPitSchedule1()
- ' adds single pt
- Dim SS As AcadSelectionSet
- Dim objENT As AcadEntity
- Dim Count, Cntr As Integer
- Dim Newpitname As String
- Dim pitname As String
- Dim FilterDXFCode(0) As Integer
- Dim FilterDXFVal(0) As Variant
- Dim PitNameSelect As AcadObject
- Dim basepnt, pt1, pt2, pt3 As Variant
- Dim attribs As Variant
- 'On Error Resume Next
- Newpitname = "1" 'dummy to pass then return changed
- BLOCK_NAME = "SCHEDTEXT"
- pitname = Getpitname(Newpitname)
- MsgBox "pitname selected is " & pitname
- FilterDXFCode(0) = 0
- FilterDXFVal(0) = "INSERT"
- 'FilterDXFCode(1) = 2
- 'FilterDXFVal(1) = "SCHEDTEXT"
- Set SS = ThisDrawing.SelectionSets.Add("pit1sel")
- SS.Select acSelectionSetAll, , , FilterDXFCode, FilterDXFVal
- For Cntr = 0 To SS.Count - 1
- If SS.Item(Cntr).Name = BLOCK_NAME Then
-
- attribs = SS.Item(Cntr).GetAttributes
-
- If attribs(0).TextString = pitname Then
- pt1 = ThisDrawing.Utility.GetPoint(, " pick first point")
- txtx1 = CStr(FormatNumber(pt1(0), 3))
- TXTY1 = CStr(FormatNumber(pt1(1), 3))
-
- attribs(1).TextString = txtx1
- attribs(2).TextString = TXTY1
-
- attribs(1).Update
- attribs(2).Update
- ' ThisDrawing.Application.Update
- ' try this
- Cntr = SS.Count
-
- Else: End If
-
- Else: End If
- Next Cntr
- ThisDrawing.SelectionSets.Item("pit1sel").Delete
- End Sub
获取Excel。拉链 |