在下面的代码中,我在删除并重新插入一些文本后重新生成。在删除文本或重新生成之前(在下一次运行之前的代码末尾),程序正在读取extmin变量,这意味着插入的文本高度比上一次低一个文本高度。目标是始终将其插入extmin下方相同的y维度。
如果我在图形中手动执行删除和重新生成并运行代码,它将按我所希望的方式工作。在代码中执行这些功能似乎是无效的。
提前感谢
下面列出了部分代码。。。
- Dim minext As Variant
- minext = ThisDrawing.GetVariable("EXTMIN")
- Dim min(0 To 2) As Double
- min(0) = minext(0)
- min(1) = minext(1)
- min(2) = minext(2)
- Dim ip(0 To 2) As Double
- ip(0) = min(0)
- ip(1) = min(1) + negret(h * 1.3)
- ip(2) = 0
-
- ' Check for Text String at coordinates and delete - Option 2
- Dim objDataBase As AcadDatabase
- Dim objBlock As AcadBlock
- Dim Ent As AcadEntity
- Dim c As Integer
- Dim i As Integer
- Dim entCollection As Collection
- Dim varHandle As Variant
- Set entCollection = New Collection
-
- For Each objBlock In ThisDrawing.Blocks
- c = objBlock.Count
- For i = 0 To c - 1
- If TypeOf objBlock.Item(i) Is AcadEntity Then
- If objBlock.Item(i).Layer = "FILEPATHTEXT" Then
- entCollection.Add (objBlock.Item(i).Handle)
-
- End If
-
- End If
-
- Next
-
- On Error Resume Next
- For Each varHandle In entCollection
- Set Ent = ThisDrawing.HandleToObject(CStr(varHandle))
- Ent.Delete
-
- Next
-
- On Error GoTo 0
-
- Next
-
- ' Regen after deletion
- ThisDrawing.SendCommand "ZOOM" & vbCr & "EXTENTS"
- ThisDrawing.Regen acActiveViewport
-
- ' Add Text String
- Dim dir As String
- dir = ThisDrawing.GetVariable("DWGPREFIX")
- Dim fil As String
- fil = ThisDrawing.GetVariable("DWGNAME")
-
- Dim objText2 As AcadText
- Dim textString As String
- textString = dir & fil
- Set objText2 = ThisDrawing.ModelSpace.AddText(textString, ip, h)
|