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

AutoCAD VBA错误451

  •  0
  • mpmcderm  · 技术社区  · 8 年前

    下面的代码应该遍历图形中的每一行,并获得起始点x、y和z的值,但我得到的是

    错误451

    我从其他有用的东西复制了这段代码,所以我在这里不知所措。

    Sub Get_Points()
    
         Dim ent As AcadEntity
         Dim name As String
         Dim x As Double
         Dim y As Double
         Dim z As Double
    
         For Each ent In ThisDrawing.ModelSpace
    
             If TypeOf ent Is AcadLine Then
    
                 name = ent.Handle
                 x = ent.StartPoint(0)
                 y = ent.StartPoint(1)
                 z = ent.StartPoint(1)
             End If
    
         Next
    
     End Sub
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   braX    8 年前

    您需要先将通用实体类型转换为特定实体类型,如下所示:

    Sub Get_Points()
         Dim ent As AcadEntity
         Dim acLine As AcadLine
         Dim name As String
         Dim x As Double
         Dim y As Double
         Dim z As Double
    
         For Each ent In ThisDrawing.ModelSpace
             If TypeOf ent Is AcadLine Then
                 Set acLine = ent
                 name = acLine.Handle
                 x = acLine.StartPoint(0)
                 y = acLine.StartPoint(1)
                 z = acLine.StartPoint(2)
             End If
             MsgBox name & vbCr & x & vbCr & y & vbCr & z
         Next
    
     End Sub
    

    (此外,您的 z 正在使用索引1,就像 y ,所以我也解决了这个问题)