其中一个是匿名,过滤的时候就用的匿名
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 
 
 
				 用户登陆
 用户登陆 站点日历
 站点日历 站点统计
 站点统计 最新评论
 最新评论 
 
 AutoCAD 动态块有两个快名   [ 日期:2017-02-13 ]   [ 来自:
 AutoCAD 动态块有两个快名   [ 日期:2017-02-13 ]   [ 来自: