【问题标题】:Get ObjectId from AutoCAD从 AutoCAD 获取 ObjectId
【发布时间】:2015-10-22 02:53:43
【问题描述】:

我目前正在使用 VB 向 AutoCAD 添加功能。

我正在尝试处理我的文本对象的 ObjectId,我想知道是否有办法让我直接从 Autocad 中查看 ObjectId(可能在某些类型的属性查看器中?)

任何有关我如何做到这一点的帮助或建议都会有所帮助,在此先感谢您。

【问题讨论】:

    标签: vb.net autocad objectid


    【解决方案1】:

    任何 AutoCAD 实体的 ObjectId 仅供编程使用,没有 UI 功能可以看到它(除非您开发插件)。

    此外,实际 ID 号会从一个会话更改为另一个会话。它只是一个用于更快地打开和操作内存中的实体的数字。 ObjectId 未保存到 .dwg 文件中。如果您关闭并打开绘图,所有 ID 都会不同。

    现在句柄是持久的(保存到 .dwg 文件中)并且不会在会话之间更改。

    注意:在某些情况下,句柄也会发生变化,例如在 BEDIT 命令期间块内的实体。

    这是一个使用 VBA/ActiveX 遍历实体的快速示例

    Public Sub LoopMText()
        For i = 0 To ThisDrawing.ModelSpace.Count - 1
            If TypeOf ThisDrawing.ModelSpace.Item(i) Is AcadMText Then
                Dim t As AcadMText
                Set t = ThisDrawing.ModelSpace.Item(i)
                If t.TextString = "something here" Then
                    ' do something...
                End If
            End If
        Next
    End Sub
    

    【讨论】:

    • 我明白了,我问的原因是因为我想从我的 VB(用于编辑)中获取我的 AutoCAD 中特定文本对象的句柄,我认为 objectId 将是这样做的方法这但显然不是,你知道我可以做到这一点吗?
    • 您可以通过单击它来选择它(ThisDrawing.Utility.GetEntity)或在所有实体上循环以选择您需要的东西(ThisDrawing.ModelSpace.Item 集合)
    • 我明白了,您认为您可以帮助我使用一些语法来循环遍历整个绘图(图纸空间布局),以捕获具有特定文本值的任何对象吗?
    • 见上面编辑的答案,没有完全测试它......对不起,很着急。
    • VBA 很好,我应该可以使用它。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多