乐筑天下

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

获取栅格图形名称

[复制链接]

1

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
16
发表于 2011-11-9 09:44:00 | 显示全部楼层 |阅读模式
请问我从图面上选择了一个 Autodesk..DatabaseServices.Image 类型的实体,请问用程序如何获取该image图形的名称和位置点?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2011-11-9 11:15:00 | 显示全部楼层
你选择的应该是 Autodesk.AutoCAD.DatabaseServices.RasterImage 而不是 Autodesk.AutoCAD.DatabaseServices.Image 吧?
回复

使用道具 举报

1

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
16
发表于 2011-11-9 11:30:00 | 显示全部楼层
我选择的栅格图形就是 Autodesk.AutoCAD.DatabaseServices.Image类型呢
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2011-11-10 12:43:00 | 显示全部楼层
名称是Name属性可以读取,Path可以读取路径,里面也包含了名称
位置点应该是Position属性,是一个Point3d类型
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2011-11-10 12:52:00 | 显示全部楼层
要先转换成rasterimage对象
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2011-11-10 12:54:00 | 显示全部楼层
  1. public void Test5()
  2.         {
  3.             Document doc = Application.DocumentManager.MdiActiveDocument;
  4.             Database db = doc.Database;
  5.             Editor ed = doc.Editor;            
  6.             PromptEntityOptions selectOptions = new PromptEntityOptions("\n选择光栅图像");
  7.             selectOptions.SetRejectMessage("\n只能选择光栅图像");
  8.             selectOptions.AddAllowedClass(typeof(Image),false);
  9.             PromptEntityResult selectResult = ed.GetEntity(selectOptions);
  10.             if (selectResult.Status != PromptStatus.OK) return;
  11.             Transaction tr = doc.TransactionManager.StartTransaction();            
  12.             using (tr)
  13.             {
  14.                 RasterImage imageSelected = tr.GetObject(selectResult.ObjectId, OpenMode.ForRead) as RasterImage;
  15.                 ed.WriteMessage("\n图像名称:{0}\n图像路径:{1}\n图像位置:{2},{3},{4}", imageSelected.Name, imageSelected.Path, imageSelected.Position.X.ToString(), imageSelected.Position.Y.ToString(), imageSelected.Position.Z.ToString());
  16.             }
  17.         }

回复

使用道具 举报

1

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
16
发表于 2011-11-10 14:52:00 | 显示全部楼层
楼上的请问你是用的cad什么版本? 我用的07版本,把image转换成RasterImage后,RasterImage 是空值啊
附代码如下:
回复

使用道具 举报

1

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
16
发表于 2011-11-10 14:53:00 | 显示全部楼层
  1. /// 删除选择的块和图片
  2.         ///
  3.         ///
  4.         public static int ClearBlockAndImage()
  5.         {
  6.            Document doc = Application.DocumentManager.MdiActiveDocument;
  7.            Database db = doc.Database;
  8.            Editor ed = doc.Editor;  
  9.             int count = 0;
  10.             ObjectIdCollection colInputEntIds;
  11.             PromptSelectionOptions promptSelRess = new PromptSelectionOptions();
  12.             promptSelRess.MessageForAdding = "请选择对象";
  13.             PromptSelectionResult promptSelRes;
  14.             promptSelRes = Editor.GetSelection(promptSelRess);
  15.             if (promptSelRes.Status != PromptStatus.OK)
  16.             {
  17.                 return 0;
  18.             }
  19.             colInputEntIds = new ObjectIdCollection(promptSelRes.Value.GetObjectIds());
  20.             using (doc.LockDocument())
  21.             {
  22.                 using (Transaction tran = db.TransactionManager.StartTransaction())
  23.                 {
  24.                     try
  25.                     {
  26.                         foreach (ObjectId id in colInputEntIds)
  27.                         {
  28.                             //实体类型判断
  29.                             Entity ent = tran.GetObject(id, OpenMode.ForRead) as Entity;
  30.                             if (ent is BlockReference)// || ent is Autodesk.AutoCAD.DatabaseServices.Image)
  31.                             {
  32.                                 ent.UpgradeOpen();
  33.                                 ent.Erase();
  34.                                 count++;
  35.                             }
  36.                             if (ent is Autodesk.AutoCAD.DatabaseServices.Image)
  37.                             {
  38.                                 RasterImage imageSelected = tran.GetObject(id, OpenMode.ForRead) as RasterImage;
  39.                                 count++;
  40.                             }
  41.                         }
  42.                         tran.Commit();
  43.                     }
  44.                     catch (System.Exception se)
  45.                     {
  46.                         ed.WriteMessage("\n" + se.Message + "\n");
  47.                     }
  48.                 }
  49.                 return count;
  50.             }
  51.         }
回复

使用道具 举报

29

主题

503

帖子

8

银币

中流砥柱

Rank: 25

铜币
619
发表于 2011-11-10 16:16:00 | 显示全部楼层
并不是转换后是空值,而是你的判断ent is Autodesk.AutoCAD.DatabaseServices.Image有误,你试试我下面这段代码就知道,其实你选择的光栅图像对应的类型应该是rasterimage
  1. [CommandMethod("t6")]
  2.         public void Test6()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Database db = doc.Database;
  6.             Editor ed = doc.Editor;
  7.             PromptEntityOptions selectOptions = new PromptEntityOptions("\n选择对象");            
  8.             PromptEntityResult selectResult = ed.GetEntity(selectOptions);
  9.             if (selectResult.Status != PromptStatus.OK) return;
  10.             Transaction tr = doc.TransactionManager.StartTransaction();
  11.             using (tr)
  12.             {
  13.                 Entity ent = tr.GetObject(selectResult.ObjectId, OpenMode.ForRead) as Entity;
  14.                 ed.WriteMessage("\n你选择的对象为{0}", ent.GetType().ToString());
  15.             }
  16.         }
回复

使用道具 举报

1

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
16
发表于 2011-11-10 17:10:00 | 显示全部楼层
刚用你的代码试了,我选择的对象就是Autodesk.AutoCAD.DatabaseServices.Image类型,我要获取的就是这个image类型的名称,最后再进行删除,如直接根据image的objectid去erase的话只是把image卸载掉,并没有从图面上拆除
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 17:36 , Processed in 0.350649 second(s), 72 queries .

© 2020-2025 乐筑天下

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