2015-10-20 238 views
1

我目前使用VB在AutoCAD中添加功能。从AutoCAD获取ObjectId

我试图让我的文本对象的ObjectId一个手柄,我想知道是否有办法让我查看的ObjectId直接从AutoCAD(也许在某种类型的属性观众的?)

任何关于如何做到这一点的帮助或建议都会有所帮助,请提前致谢。

回答

4

任何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 
+0

我看到实体的快速样品循环,我之所以这样问,是因为我想从我的VB我在AutoCAD中获取特定的文本对象的句柄(对于编辑),我认为objectId是这样做的方式,但显然不是,你知道我可以做到这一点吗? –

+0

你可以选择它(ThisDrawing.Utility.GetEntity)或者在所有实体上做一个循环来选择你需要的东西(ThisDrawing.ModelSpace.Item collection) –

+0

我明白了,你认为你可以用一些语法来帮助我循环遍历整个图纸(纸张空间布局),可以捕捉具有特定文本值的任何对象? –