明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4793|回复: 11

[图元] [求助]如何“拆离”光栅图像参照???

[复制链接]
发表于 2010-7-27 18:35 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-7-28 8:42:05 编辑

  
AutoCAD 2007 + Visua C# 2005

插入光栅图像参照(菜单:“插入”->“光栅图像参照”)的效果:(Azul是图像名)

注意右键菜单的拆离




         
右键拆离的效果:



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面是通过代码删除实体后的效果:




图像已经不显示了,但图像状态显示为“未参照”。

附删除实体的代码:(写得比较简单)
  1. static public void DelImage()
  2.         {
  3.             Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  4.             Database db = doc.Database;
  5.             Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
  6.             Transaction t = tm.StartTransaction();
  7.             using (DocumentLock docLock = doc.LockDocument())
  8.             {
  9.                 BlockTable bt = (BlockTable)t.GetObject(db.BlockTableId, OpenMode.ForRead);
  10.                 BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead);
  11.                 foreach (ObjectId id in btr)
  12.                 {
  13.                     Entity ent = t.GetObject(id, OpenMode.ForWrite) as Entity;
  14.                     if (ent != null)
  15.                     {                        
  16.                         ent.Erase();
  17.                         ent.Dispose();
  18.                         
  19.                     }
  20.                     
  21.                 }
  22.                 t.Commit();
  23.                 t.Dispose();
  24.             }
  25.         }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

问题是如何用C#实现如上所示的右键拆离图像参照的效果...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2021-3-16 19:47 | 显示全部楼层
试试看,看界面有没有及时更新
 楼主| 发表于 2010-7-27 20:55 | 显示全部楼层
 没人在看吗?我觉得是不是在Dictionary里面也要删除图像才行?
自己去研究研究了,也等待高手解答和讨论。
发表于 2010-7-27 22:21 | 显示全部楼层

图直接上传吧,看不见

 楼主| 发表于 2010-7-28 08:45 | 显示全部楼层

[求助][求助]如何“拆离”光栅图像参照???

图像已经上传。。。

 

在firefox上看明明可以看到图的,怎么用ie看就是baidu了。

 楼主| 发表于 2010-7-28 19:40 | 显示全部楼层
还是没人看吗???

~~~~~~~~~~~

自己已解决!


附代码
  1.        [CommandMethod("Dict")]
  2.         public void SeeDict()
  3.         {
  4.             Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
  5.             Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
  6.             using (Transaction t = tm.StartTransaction())
  7.             {
  8.                 // open the dictionary
  9.                 Autodesk.AutoCAD.DatabaseServices.ObjectId imgDictID = RasterImageDef.GetImageDictionary(db);
  10.                 DBDictionary imgDict;
  11.                 if (imgDictID.OldId != 0)
  12.                 {
  13.                     imgDict = (DBDictionary)t.GetObject(imgDictID, OpenMode.ForWrite);
  14.                     imgDict.Erase();
  15.                     imgDict.Dispose();
  16.                 }
  17.                 t.Commit();
  18.             }
  19.         }
首先要插入光栅图像参照(可以插入多个,会全部拆离),才可以看到效果。

删除实体(一楼的代码)相当于选中图像然后按Delete键,在外部参照中的状态显示的是“未参照”,因为在Dictionary中没有Erase掉。

评分

参与人数 1明经币 +2 金钱 +10 贡献 +10 激情 +10 收起 理由
雪山飞狐_lzh + 2 + 10 + 10 + 10 【好评】表扬一下

查看全部评分

发表于 2010-7-28 19:47 | 显示全部楼层

if (imgDictID != ObjectId.Null)

这样好些?

 楼主| 发表于 2010-7-28 20:06 | 显示全部楼层

回复:(lzh741206)if (imgDictID != ObjectId.Null)...

 
 好像好些...
不知道这个OldId到底是什么意思
发表于 2010-9-17 13:08 | 显示全部楼层

试下,删除名为Azui的参照

                    imgDict = (DBDictionary)t.GetObject(imgDictID, OpenMode.ForRead);

                    DBObject obj = t.GetObject(imgDict.GetAt(“Azul"), OpenMode.ForWrite);

                    obj.Erase();

 楼主| 发表于 2010-9-17 13:51 | 显示全部楼层

回复:(lzh741206)试下,删除名为Azui的参照 ...

好的,解决了!多谢了!
发表于 2011-12-15 15:37 | 显示全部楼层
malasky 发表于 2010-9-17 13:51
好的,解决了!多谢了!

请问有没有ARX版本的插入光栅图片的代码 ?看到的是C#的  
或该怎么做?望指点  谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 21:22 , Processed in 0.259573 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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