sanderson 发表于 2022-7-6 22:25:19

简单的问题

在下面的代码中,我在删除并重新插入一些文本后重新生成。在删除文本或重新生成之前(在下一次运行之前的代码末尾),程序正在读取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)
页: [1]
查看完整版本: 简单的问题