2016-06-06 2 views
0

Я пытаюсь получить уровень, местоположение, значение, высоту, ширину и стиль для каждого значения DBText в текущем открытом чертеже. До сих пор мне удалось получить только objectID.Извлечение всех значений dxf для всех DBText

Function SelectAllText(dbIn As Database) As ObjectIdCollection 
    Using doclock = Application.DocumentManager.MdiActiveDocument.LockDocument 
     Dim retIDs As New ObjectIdCollection 
     Using tr As Transaction = dbIn.TransactionManager.StartTransaction 
      Dim bt As BlockTable = dbIn.BlockTableId.GetObject(OpenMode.ForRead) 
      For Each btrID As ObjectId In bt 
       Dim btr As BlockTableRecord = TryCast(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForRead), BlockTableRecord) 
       For Each TRefID As ObjectId In btr 
        Dim te = TryCast(tr.GetObject(TRefID, OpenMode.ForRead), DBText), 
         tid = te.ObjectId 
        retIDs.Add(tid) 
       Next 
      Next 
     End Using 
     Return retIDs 
    End Using 
End Function 
+0

Я вижу, что вы редактировали вопрос, пока я печатал ответ ... теперь я не уверен, что вам нужно здесь вы ... может рассмотреть вопрос о расширении вопроса. Приветствия. –

+1

Ваш ответ работает отлично. Я редактировал свой пост, пытаясь обеспечить ясность, поскольку он был отклонен. – Wayne

ответ

1

approache вы предложили должны работать, в основном таким же образом: переборе базы данных> BlockTable> BlockTableRecord (ModelSpace)> Все Сущности.

С ObjectId каждого DBText вы можете:

Dim acText as DBText = tr.GetObject(dbTextId, OpenMode.ForRead) 
Dim positionPoint as Point3d = acText.Position 
Dim height as Double = acText.Height 
Dim content as String = acText.TextString 
Смежные вопросы