田草博客
日志搜索


 标题   内容 评论


网友交流QQ群:11740834 需注明申请加入原因

微信 公众号:ByCAD

邮箱:tiancao1001x126.com
ByCAD,微信公众号
首页 | 普通 | 电脑 | AutoCAD | VB/VB.NET | FLash | 结构 | 建筑 | 电影 | BIM | 规范 | 软件
-电信用户-|-网通用户-
-博客论坛-|-软件下载-
-网站导航-|-规范下载-
-BelovedFLash欣赏-

用户登陆
用户:
密码:
 

站点日历
73 2020 - 6 48
 123456
78910111213
14151617181920
21222324252627
282930


站点统计

最新评论



合并至一个Dwg 物流建筑设计规范.GB51157-2016.pdf
未知 AutoCAD 动态块有两个快名   [ 日期:2017-02-13 ]   [ 来自:本站原创 ]  HTML
AutoCAD 动态块有两个快名

其中一个是匿名,过滤的时候就用的匿名

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