vb.net 如何得到当前图块的名字啊
近期学习vb.net,通过选择集得到当前图纸所有指定名称的图块的集合,现在遇到一个问题,就是找不到得到图块名称的属性。请教各位高人不吝赐教。我本来的意思是要在选择集内循环,得到各个图块的名称、插入点、比例等信息,其他的都解决, 现在就是最重要的名字得不到
我自己找到了一个方法,就是将实体转为acadentity,然后用com的方法就跟vba一样了,但总感觉.net肯定有自己的一套方法,不知道怎么弄啊 Dim BlockRef As AcadBlockReference '块实例
BlockRef.Name就是图块的名称 '' 遍历选择集中的对象 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属性,让我很受伤 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,看你说得很多,感觉不明白你的意图.
非常感谢sieben的回答
通过BlockTableRecord属性获取块参考BlockReference所对应的块记录BlockTableRecord的ObjectId,然后块记录的名字Name即是块参考的图块名
哎 我太笨了 没看懂上面的意思啊
我的cad是07的
Dim acEnt As BlockReference = acTrans.GetObject(acSSObj.ObjectId, _
OpenMode.ForWrite)
在这之后怎么得到块名呢?
页:
[1]