2015-10-20 231 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

我明白了,你認爲你可以用一些語法來幫助我循環遍歷整個圖紙(紙張空間佈局),可以捕捉具有特定文本值的任何對象? –