明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3264|回复: 5

vb.net 如何得到当前图块的名字啊

[复制链接]
发表于 2011-12-14 11:13:01 | 显示全部楼层 |阅读模式
近期学习vb.net,通过选择集得到当前图纸所有指定名称的图块的集合,现在遇到一个问题,就是找不到得到图块名称的属性。请教各位高人不吝赐教。
我本来的意思是要在选择集内循环,得到各个图块的名称、插入点、比例等信息,其他的都解决, 现在就是最重要的名字得不到
 楼主| 发表于 2011-12-14 21:14:07 | 显示全部楼层
我自己找到了一个方法,就是将实体转为acadentity,然后用com的方法就跟vba一样了,但总感觉.net肯定有自己的一套方法,不知道怎么弄啊
发表于 2011-12-15 08:53:26 | 显示全部楼层
Dim BlockRef As AcadBlockReference '块实例
BlockRef.Name就是图块的名称
 楼主| 发表于 2011-12-15 10:18:32 | 显示全部楼层
  '' 遍历选择集中的对象   Step through the objects in the selection set
            For Each acSSObj As SelectedObject In acSSet
                '' 检查以确定返回的 SelectedObject 对象是有效的     Check to make sure a valid SelectedObject object was returned
                If Not IsDBNull(acSSObj) Then
                    '' 以写的方式打开选择的对象   Open the selected object for write
                    '锁定文档,否则出错
                    Dim docLock As DocumentLock = Application.DocumentManager.MdiActiveDocument.LockDocument

                    Dim acEnt As BlockReference = acTrans.GetObject(acSSObj.ObjectId, _
                                                            OpenMode.ForWrite)
                    If Not IsDBNull(acEnt) Then

                        acEnt.Layer = "ONDOCS_FRAME_LAYER"
                        ptMin(indexft) = acEnt.GeometricExtents().MinPoint.ToArray
                        ptMax(indexft) = acEnt.GeometricExtents().MaxPoint.ToArray
                        attrinsertpnt(indexft) = acEnt.GeometricExtents().MinPoint.ToArray

                        xscal(indexft) = acEnt.ScaleFactors.X    'x方向缩放系数

                        Dim ent As AcadEntity = acEnt.AcadObject '需要改造,应该直接可以得到
                       .....................
部分代码如上,acEnt对象无name属性,让我很受伤
发表于 2011-12-15 11:17:20 | 显示全部楼层
1,AutoCAD 2008之后
public string Name { get; }    Autodesk.AutoCAD.DatabaseServices.BlockReference 的成员
2,AutoCAD 2007之前
public virtual Autodesk.AutoCAD.DatabaseServices.ObjectId BlockTableRecord { set; get; }
    Autodesk.AutoCAD.DatabaseServices.BlockReference 的成员
通过BlockTableRecord属性获取块参考BlockReference所对应的块记录BlockTableRecord的ObjectId,然后块记录的名字Name即是块参考的图块名
3,看你说得很多,感觉不明白你的意图.
 楼主| 发表于 2011-12-17 11:24:19 | 显示全部楼层
非常感谢sieben的回答
通过BlockTableRecord属性获取块参考BlockReference所对应的块记录BlockTableRecord的ObjectId,然后块记录的名字Name即是块参考的图块名
哎 我太笨了 没看懂上面的意思啊
我的cad是07的
Dim acEnt As BlockReference = acTrans.GetObject(acSSObj.ObjectId, _
                                                            OpenMode.ForWrite)
在这之后怎么得到块名呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 18:54 , Processed in 0.190621 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表