代码之家  ›  专栏  ›  技术社区  ›  Liz

BlockInsert VBA AutoCad上没有数据库错误

  •  1
  • Liz  · 技术社区  · 12 年前

    我使用的是AutoCAD 2013,我想从另一个文件导入块。我写了下面的代码:

    Dim Zero(0 To 2) As Double
    Dim i As Integer
    For i = 0 To 2
        Zero(i) = 0
    Next i
    
    Dim BlockRef As AcadBlockReference
    FileToInsert = "D:\blocks.dwg"
    Set BlockRef = ThisDrawing.ModelSpace.InsertBlock(Zero, FileToInsert, 1#, 1#, 1#, 0)
    

    但我得到以下错误:

    Run-time error '-2145386390 (8020006a)'
    No database
    

    我发现这很奇怪,因为一周前同样的代码也起了作用,从那以后我再也没有接触过任何文件。。。 如果我打开blocks.dwg,其中有几个块,就像它们应该的那样。

    如果我注释掉代码的这部分,同样的错误似乎会转移到下一部分

    Set ... = ThisDrawing.ModelSpace. ...
    

    我非常感谢你的帮助, 佩拉

    1 回复  |  直到 12 年前
        1
  •  0
  •   Maxence    10 年前

    如果图形已包含块,则需要调用 InsertBlock 仅具有块名称。类似于:

    Dim exist as Boolean
    exist = False
    For i = 0 To ThisDrawing.Blocks.Count - 1
      If StrComp(ThisDrawing.Blocks.Item(i).Name, "blocks", vbTextCompare) = 0  Then
        exist = True
        Exit For
      End If  
    Next i
    ThisDrawing.ModelSpace.InsertBlock(point, IIf(exist, "blocks", "D:\blocks.dwg"), 1, 1, 1, 0)