[求助]如何“拆离”光栅图像参照???
本帖最后由 作者 于 2010-7-28 8:42:05 编辑AutoCAD 2007 + Visua C# 2005
插入光栅图像参照(菜单:“插入”->“光栅图像参照”)的效果:(Azul是图像名)
注意右键菜单的拆离
右键拆离的效果:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面是通过代码删除实体后的效果:
图像已经不显示了,但图像状态显示为“未参照”。
附删除实体的代码:(写得比较简单)
static public void DelImage()
{
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
Transaction t = tm.StartTransaction();
using (DocumentLock docLock = doc.LockDocument())
{
BlockTable bt = (BlockTable)t.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt, OpenMode.ForRead);
foreach (ObjectId id in btr)
{
Entity ent = t.GetObject(id, OpenMode.ForWrite) as Entity;
if (ent != null)
{
ent.Erase();
ent.Dispose();
}
}
t.Commit();
t.Dispose();
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题是如何用C#实现如上所示的右键拆离图像参照的效果...
试试看,看界面有没有及时更新 没人在看吗?我觉得是不是在Dictionary里面也要删除图像才行?<br/>自己去研究研究了,也等待高手解答和讨论。<br/> <p>图直接上传吧,看不见</p>
[求助][求助]如何“拆离”光栅图像参照???
<p>图像已经上传。。。</p><p> </p>
<p>在firefox上看明明可以看到图的,怎么用ie看就是baidu了。</p> 还是没人看吗???
~~~~~~~~~~~
自己已解决!
附代码
public void SeeDict()
{
Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
using (Transaction t = tm.StartTransaction())
{
// open the dictionary
Autodesk.AutoCAD.DatabaseServices.ObjectId imgDictID = RasterImageDef.GetImageDictionary(db);
DBDictionary imgDict;
if (imgDictID.OldId != 0)
{
imgDict = (DBDictionary)t.GetObject(imgDictID, OpenMode.ForWrite);
imgDict.Erase();
imgDict.Dispose();
}
t.Commit();
}
}
首先要插入光栅图像参照(可以插入多个,会全部拆离),才可以看到效果。
删除实体(一楼的代码)相当于选中图像然后按Delete键,在外部参照中的状态显示的是“未参照”,因为在Dictionary中没有Erase掉。
<p>if (imgDictID != ObjectId.Null)</p>
<p>这样好些?</p>
回复:(lzh741206)if (imgDictID != ObjectId.Null)...
<br/> 好像好些...<br/>不知道这个OldId到底是什么意思 <p>试下,删除名为Azui的参照</p>
<p> imgDict = (DBDictionary)t.GetObject(imgDictID, OpenMode.ForRead); </p>
<p> DBObject obj = t.GetObject(imgDict.GetAt(“Azul"), OpenMode.ForWrite); </p>
<p> obj.Erase();</p>
回复:(lzh741206)试下,删除名为Azui的参照 ...
好的,解决了!多谢了! malasky 发表于 2010-9-17 13:51 static/image/common/back.gif好的,解决了!多谢了!
请问有没有ARX版本的插入光栅图片的代码 ?看到的是C#的
或该怎么做?望指点谢谢
页:
[1]
2