其中一个是匿名,过滤的时候就用的匿名
BlockReference.Name 匿名
EffectiveName
http://blog.csdn.net/hisinwang/article/details/78764581
http://adndevblog.typepad.com/autocad/2012/05/ide ... from-the-block-reference.html
AutoCAD .Net 获取块参照块名
<CommandMethod("GetBlockName")> _
Public Sub GetBlockName()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim options As New PromptEntityOptions(vbLf & "Select block reference")
options.SetRejectMessage(vbLf & "Select only block reference")
options.AddAllowedClass(GetType(BlockReference), False)
Dim ret As PromptEntityResult = doc.Editor.GetEntity(options)
If ret.Status <> PromptStatus.OK Then
Return
End If
Using tr As Transaction = db.TransactionManager.StartTransaction()
Dim blkRef As BlockReference = TryCast(tr.GetObject(ret.ObjectId, OpenMode.ForRead), BlockReference)
Dim blkRecdId As ObjectId = ObjectId.Null
If blkRef.IsDynamicBlock Then
blkRecdId = blkRef.DynamicBlockTableRecord
Else
blkRecdId = blkRef.BlockTableRecord
End If
Dim block As BlockTableRecord = TryCast(tr.GetObject(blkRecdId, OpenMode.ForRead), BlockTableRecord)
doc.Editor.WriteMessage(block.Name + vbLf)
End Using
End Sub
程序代码: |
Imports System.Collections.Generic
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Namespace EntitySelection
Public Class Commands
<CommandMethod("SDB")> _
Public Shared Sub SelectDynamicBlocks()
Dim doc As Object = Application.DocumentManager.MdiActiveDocument
Dim ed As Object = doc.Editor
Dim pso As New PromptStringOptions(vbLf & "Name of dynamic block to search for")
pso.AllowSpaces = True
Dim pr As Object = ed.GetString(pso)
If pr.Status <> PromptStatus.OK Then
Return
End If
Dim blkName As String = pr.StringResult
Dim blkNames As New List(Of String)()
blkNames.Add(blkName)
Dim tr As Object = doc.TransactionManager.StartTransaction()
Using tr
Dim bt As BlockTable = CType(tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead),BlockTable)
' Start by getting access to&nbs