乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 5

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

[复制链接]

4

主题

30

帖子

6

银币

初来乍到

Rank: 1

铜币
46
发表于 2011-12-14 11:13:00 | 显示全部楼层 |阅读模式
近期学习vb.net,通过选择集得到当前图纸所有指定名称的图块的集合,现在遇到一个问题,就是找不到得到图块名称的属性。请教各位高人不吝赐教。
我本来的意思是要在选择集内循环,得到各个图块的名称、插入点、比例等信息,其他的都解决, 现在就是最重要的名字得不到
回复

使用道具 举报

4

主题

30

帖子

6

银币

初来乍到

Rank: 1

铜币
46
发表于 2011-12-14 21:14:00 | 显示全部楼层
我自己找到了一个方法,就是将实体转为acadentity,然后用com的方法就跟vba一样了,但总感觉.net肯定有自己的一套方法,不知道怎么弄啊
回复

使用道具 举报

2

主题

91

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2011-12-15 08:53:00 | 显示全部楼层
Dim BlockRef As AcadBlockReference '块实例
BlockRef.Name就是图块的名称
回复

使用道具 举报

4

主题

30

帖子

6

银币

初来乍到

Rank: 1

铜币
46
发表于 2011-12-15 10:18:00 | 显示全部楼层
'' 遍历选择集中的对象   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属性,让我很受伤
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2011-12-15 11:17:00 | 显示全部楼层
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,看你说得很多,感觉不明白你的意图.
回复

使用道具 举报

4

主题

30

帖子

6

银币

初来乍到

Rank: 1

铜币
46
发表于 2011-12-17 11:24:00 | 显示全部楼层
非常感谢sieben的回答
通过BlockTableRecord属性获取块参考BlockReference所对应的块记录BlockTableRecord的ObjectId,然后块记录的名字Name即是块参考的图块名
哎 我太笨了 没看懂上面的意思啊
我的cad是07的
Dim acEnt As BlockReference = acTrans.GetObject(acSSObj.ObjectId, _
                                                            OpenMode.ForWrite)
在这之后怎么得到块名呢?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 21:11 , Processed in 0.637624 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表