CAD二次开发:用C#在AutoCAD中插入栅格图像
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using System.Windows.Forms;
using System.IO;
using Acad = Autodesk.AutoCAD.ApplicationServices.Application;[assembly: CommandClass(typeof(CsMgdAcad1.YxglCommands))]namespace CsMgdAcad1
{/// <summary>/// Summary description for YxglCommands./// </summary>public class YxglCommands{public YxglCommands(){//// TODO: Add constructor logic here//}[CommandMethod("RASTER_SAMPLE")]public static void RasterSampleCommand(){Document doc = Acad.DocumentManager.MdiActiveDocument;OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "JPeg Files|*.jpg|Gif Files|*.gif|PNG Files|*.png";ofd.FilterIndex = 0;ofd.Title = "Select Image File";if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK){string filename = ofd.FileName;using (Transaction trans = doc.TransactionManager.StartTransaction()){ObjectId idModel = SymbolUtilityServices.GetBlockModelSpaceId(doc.Database);BlockTableRecord ms = trans.GetObject(idModel, OpenMode.ForWrite) as BlockTableRecord;RasterImageDef imageDef = AddImageDef(doc.Database, trans, filename);if (imageDef != null){RasterImage image = new RasterImage();image.ImageDefId = imageDef.ObjectId;ObjectId imageId = ms.AppendEntity(image);if (imageId.IsNull)throw new Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.NullObjectId);trans.AddNewlyCreatedDBObject(image, true);RasterImage.EnableReactors(true);image.AssociateRasterDef(imageDef);Point3d origin = (Point3d)Acad.GetSystemVariable("VIEWCTR");image.Orientation = new CoordinateSystem3d(origin, Vector3d.XAxis, Vector3d.YAxis);}trans.Commit();}}}public static RasterImageDef AddImageDef(Database db, Transaction trans, string imageFilespec){if (!File.Exists(imageFilespec))throw new FileNotFoundException(imageFilespec);ObjectId idImageDict = RasterImageDef.GetImageDictionary(db);if (idImageDict.IsNull)idImageDict = RasterImageDef.CreateImageDictionary(db);if (idImageDict.IsNull)throw new InvalidOperationException("failed to get or create image dictionary");DBDictionary imageDictionary = trans.GetObject(idImageDict, OpenMode.ForRead) as DBDictionary;if (imageDictionary == null)throw new InvalidOperationException("Failed to open image dictionary");RasterImageDef imageDef = new RasterImageDef();try{imageDef.SourceFileName = imageFilespec;imageDef.Load();String name = RasterImageDef.SuggestName(imageDictionary, imageFilespec);imageDictionary.UpgradeOpen();ObjectId idEntry = imageDictionary.SetAt(name, imageDef);if (idEntry.IsNull)throw new InvalidOperationException("Failed to add image definition to image dictionary");trans.AddNewlyCreatedDBObject(imageDef, true);return imageDef;}catch{imageDef.Dispose();throw;}}}
}

CAD二次开发:用C#在AutoCAD中插入栅格图像相关推荐

  1. 使用C#中的AutoCAD .NET API对CAD二次开发,获取动态块可见性值

    使用C#中的AutoCAD .NET API对CAD二次开发,获取动态块可见性值 0.效果 1.获取选择集,得到ObjectId 2.将ObjectId转换为BlockReference对象并获取其D ...

  2. 使用C#中的AutoCAD .NET API对CAD二次开发,获取块的属性

    使用C#中的AutoCAD .NET API对CAD二次开发,获取块的属性 /// <summary> /// 获得块对象的所有属性 /// </summary> public ...

  3. python能二次开发cad么_2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)

    本项目使用手动创建,意为不使用SDK模板. 从Visual Studio的"文件"下拉菜单中,选择"新建"->"项目...". 在出现 ...

  4. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  5. intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题

    CAD二次开发对于毕业没多久,又是半路出家的我来说,是一个很大的挑战,遇到过很多难以解决的问题,这次在CAD二次开发遇到一个很苦恼的问题:判断 一个由线段组成的闭合区域中,是否存在着相互之间相交的线段 ...

  6. CAD 二次开发 图层操作(1)创建图层

    CAD二次开发的资料比较少,除了李冠亿先生的<深居浅出AutoCAD二次开发>这本书之外,目前没有找到合适的参考资料.现将自己工作中用的的一些方法贴出来.方便各位网友快速入门. #regi ...

  7. CAD 二次开发 图层操作(3)取得指定图层下的所有对象id

    对于CAD二次开发的人来说,可能需要对某一图层下的实体(点,线,面域,块,三维实体)进行不同的操作.下面的方法,即可实现获取指定图层名称下的所有实体ID. 输入参数为图层名称: 返回值为:对象主键集合 ...

  8. c# cad二次开发 ribbon界面 给CAD加个菜单栏

    c# cad二次开发 ribbon界面 给CAD加个菜单栏 using System; using System.Collections.Generic; using System.Text; usi ...

  9. CAD二次开发资料汇总

    欢迎加入建筑信息化开发交流群,获取开发资料 群号:711844216 一.背景 对工程出身的朋友来说,CAD就像一位朋友,常伴吾身,为了提高效率,于是小伙伴门开始尝试CAD二次开发,刚入门,资料去哪找 ...

最新文章

  1. 读阮一峰对《javascript语言精粹》的笔记,我有疑问。
  2. Java学习之字符串
  3. TCP/IP协议簇分层详解---转
  4. 参数(条件表)灵活配置GS01/GS02/GS03
  5. Apache Spark探秘:三种分布式部署方式比较
  6. apache.camel_Apache Camel 2.21发布–新增功能
  7. Android学习笔记---android平台中利用,SAX解析xml
  8. 爬虫文件存储-2:MongoDB
  9. 软件破解技术之API替换
  10. 以下7种硬件测试的种类,不知道的赶紧收藏了!
  11. 空间|时间|对象 圈人 + 目标人群透视 - 暨PostgreSQL 10与Greenplum的对比和选择
  12. 逍遥安卓模拟器卡android,逍遥安卓模拟器怎么设置不卡 逍遥模拟器不流畅解决方法...
  13. REMOTE HOST IDENTIFICATION HAS CHANGED问题解决
  14. B端大数据量查询优化方案
  15. virtualbox 虚拟机 win7 激活后开机黑屏,只有横杠
  16. python综合应用题、显示数据_Python综合应用题
  17. 七问七答 买到假戴森吹风机我该怎么办?
  18. 兰州大学计算机科学技术考研科目,兰州大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  19. java套打pdf做模版itext填数据
  20. 腾讯2020校园招聘正式批市场研究 | 群面(2019.10.17)

热门文章

  1. 工作之余如何有效学习提升
  2. python来历_python的由来
  3. Fabric 超级账本学习【1】Fabcar网络调用Fabric-Java-SDK进行简单开发 FabCar
  4. 务实java基础之集合总结
  5. wps 制作 组织结构图
  6. 跳转谷歌相册选择图片及视频
  7. 【简写】编程领域简写
  8. Java性能调优杀手锏JMH
  9. 元宇宙也“炒房”?多个二手交易网站屏蔽元宇宙关键词
  10. 千万不要尝试波段操作