s305040093 发表于 2011-12-14 11:13:01

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

近期学习vb.net,通过选择集得到当前图纸所有指定名称的图块的集合,现在遇到一个问题,就是找不到得到图块名称的属性。请教各位高人不吝赐教。
我本来的意思是要在选择集内循环,得到各个图块的名称、插入点、比例等信息,其他的都解决, 现在就是最重要的名字得不到

s305040093 发表于 2011-12-14 21:14:07

我自己找到了一个方法,就是将实体转为acadentity,然后用com的方法就跟vba一样了,但总感觉.net肯定有自己的一套方法,不知道怎么弄啊

ps122hb 发表于 2011-12-15 08:53:26

Dim BlockRef As AcadBlockReference '块实例
BlockRef.Name就是图块的名称

s305040093 发表于 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属性,让我很受伤

sieben 发表于 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,看你说得很多,感觉不明白你的意图.

s305040093 发表于 2011-12-17 11:24:19

非常感谢sieben的回答
通过BlockTableRecord属性获取块参考BlockReference所对应的块记录BlockTableRecord的ObjectId,然后块记录的名字Name即是块参考的图块名
哎 我太笨了 没看懂上面的意思啊
我的cad是07的
Dim acEnt As BlockReference = acTrans.GetObject(acSSObj.ObjectId, _
                                                            OpenMode.ForWrite)
在这之后怎么得到块名呢?
页: [1]
查看完整版本: vb.net 如何得到当前图块的名字啊