CAD 二次开发----- 块
- /// <summary>
- /// 插入一个块参照到CAD图形中
- /// </summary>
- /// <param name="spaceId">模型空间Id</param>
- /// <param name="layer">要插入的图层名</param>
- /// <param name="blockName">块名</param>
- /// <param name="postion">插入点</param>
- /// <param name="scale">缩放比例</param>
- /// <param name="rotateAngle">旋转角度</param>
- /// <returns></returns>
- public static ObjectId InsertBlockTableRecord(this ObjectId spaceId, string layer, string blockName, Point3d postion, Scale3d scale, double rotateAngle)
- {
- ObjectId blockRefId;//存储要插入的块参照的Id
- Database db = spaceId.Database;//获取数据库对象
- BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
- if (!bt.Has(blockName))
- return ObjectId.Null;//如果没有blockName的块,程序返回
- //以写的方式打开空间
- BlockTableRecord space = spaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
- //创建块参照的插入点
- BlockReference br = new BlockReference(postion, bt[blockName]);
- br.ScaleFactors = scale;
- br.Layer = layer;
- br.Rotation = rotateAngle;
- blockRefId = space.AppendEntity(br);
- db.TransactionManager.AddNewlyCreatedDBObject(br, true);
- space.DowngradeOpen();
- return blockRefId;//返回添加的块参照的ID
- }
- /// <summary>
- /// 插入一个块参照到CAD图形中
- /// </summary>
- /// <param name="spaceId">模型空间Id</param>
- /// <param name="layer">要插入的图层名</param>
- /// <param name="blockName">块名</param>
- /// <param name="postion">插入点</param>
- /// <param name="scale">缩放比例</param>
- /// <param name="rotateAngle">旋转角度</param>
- /// <returns></returns>
- public static ObjectId InsertBlockTableRecord(this ObjectId spaceId, string layer, string blockName, Point3d postion, Scale3d scale, double rotateAngle)
- {
- ObjectId blockRefId;//存储要插入的块参照的Id
- Database db = spaceId.Database;//获取数据库对象
- BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
- if (!bt.Has(blockName))
- return ObjectId.Null;//如果没有blockName的块,程序返回
- //以写的方式打开空间
- BlockTableRecord space = spaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
- //创建块参照的插入点
- BlockReference br = new BlockReference(postion, bt[blockName]);
- br.ScaleFactors = scale;
- br.Layer = layer;
- br.Rotation = rotateAngle;
- blockRefId = space.AppendEntity(br);
- db.TransactionManager.AddNewlyCreatedDBObject(br, true);
- space.DowngradeOpen();
- return blockRefId;//返回添加的块参照的ID
- }
- 在CAD中插入一个块参照
- /// <summary>
- /// 创建一个块,添加到数据库中
- /// </summary>
- /// <param name="db"></param>
- /// <param name="blockName"></param>
- /// <param name="ents"></param>
- /// <returns></returns>
- public static ObjectId AddBlockTableRecord(this Database db, string blockName, List<Entity> ents)
- {
- BlockTable bt = (BlockTable)db.BlockTableId.GetObject(OpenMode.ForRead);
- if (!bt.Has(blockName))
- {
- BlockTableRecord btr = new BlockTableRecord();
- btr.Name = blockName;
- //将列表中的实体加入到新建的BlockTableRecord
- ents.ForEach(ent => btr.AppendEntity(ent));
- bt.UpgradeOpen();//切换块为写的状态
- bt.Add(btr);
- db.TransactionManager.AddNewlyCreatedDBObject(btr, true);
- bt.DowngradeOpen();//切换块为读的状态
- }
- return bt[blockName];
- }
CAD 二次开发----- 块的更多相关文章
- CAD 二次开发----- 块(一)
1.块定义与块参照两个概念 块定义类似于模具,而块参照类似于模具浇筑出来的模型,在图形中只需用块定义来保存块的实际几何组成,而仅用插入点和比例因子来存储块定义,因为块参照的几何形状与快参照完全一样,仅 ...
- Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试
CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...
- CAD二次开发
用C#有一段时间了,由于单位需要,开始接触CAD二次开发,网上一搜,加入CAD开发的群,零零碎碎看了一些文章和博客,没有系统地的知识,能解决一些小问题.最近开始系统学习,再次推荐两本书,一本事纸质版的 ...
- 推荐两个不错的CAD二次开发(.Net)手册
推荐两个不错的CAD二次开发(.Net)手册 http://www.mjtd.com/helpcenter/netguide/index.html http://www.ceesky.com/book ...
- CAD 二次开发 -- 自动加载开发的DLL
CAD二次开发可以采用写扩展DLL的方式实现.该DLL的函数可以被CAD调用. 但是调用前,必须用命令netload 将该dll加载到CAD. 其实可以修改注册表,当CAD软件启动后,自动加载扩展DL ...
- C#进行CAD二次开发环境配置
最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...
- CAD二次开发中浮动面板不浮动的问题
CAD二次开发中创建了一个浮动面板,想让它创建出来后以浮动状态显示, 但是DockSides.None设置完后,面板还是不浮动.搞了很久,最后原来是 需要先设置Visible,再设置DockSides ...
- CAD二次开发起步
1 环境搭建(VS 2017 + CAD 2019) CAD版本一般要比VS版本晚两年以上,比如我现在使用VS2017,则CAD要用2019版,至于CAD2018能不能用没试验过,有兴趣的小伙伴可以试 ...
- CAD二次开发控件,dwg控件,网页DWG控件,手机浏览编辑DWG控件
梦想绘图插件5.2(MxDraw5.2) 是国内最强,最专业的CAD开发插件(控件),不需要AutoCAD就能独立运行. 控件使用VC 2010开发,具有30万行代码规模,最早从2007年第一个版本完 ...
随机推荐
- 【cl】工程导入
File>Open 导入成功
- 单片机小白学步系列(十四) 点亮第一个LED的程序分析
本篇我们将分析上一篇所写的程序代码.未来学习单片机的大部分精力,我们也将放在程序代码的编写上. 可是不用操心.我会很具体的介绍每一个程序的编写思路和各种注意事项等. 之前我们写的程序例如以下: #in ...
- UVA - 10061 How many zero's and how many digits ?
n!=x*b^y, 当x为正整数时,最大的y就是n!末尾0的个数了, 把n,b分别拆成素因子相乘的形式: 比如, n=5,b=16 n=5,b=2^4, 非常明显,末尾0的个数为0 10进制时,n!= ...
- AWS之VPC、Subnet与CIDR
什么是CIDR? CIDR是英文Classless Inter-Domain Routing的缩写,中文是无类别域间路由,是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP ...
- Android开机动画、logo、字样的定制过程【转】
本文转载自:http://blog.csdn.net/yinhaide/article/details/43668401 Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式 ...
- C语言 - 头文件使用案例
源代码分门别类管理,通过头文件. 放置一些函数声明,变量声明,常量定义,宏定义. hotel.h #ifndef HOTEL_H_INCLUDED #define HOTEL_H_INCLUDED # ...
- php和nodejs
整个故事正如好莱坞大片的经典剧情走向:两位昔日好友如今分道扬镳,甚至被迫陷入了你死我活的斗争当中.刚开始的分歧并不严重,无非是一位老友对于另一位伙伴长久以来占据.但又绝口不提的业务领域产生了点兴趣.而 ...
- O - Masha and Bears
Problem description A family consisting of father bear, mother bear and son bear owns three cars. Fa ...
- guice基本使用,guice整合guice-servlet,web scope注解(六)
guice servlet提供了几个比较有用的web scope,类似与传统servlet 的session,request这些提供的范围等. guice servlet 提供的web scope 如 ...
- Java I/O streams
I/O Streams Byte Streams 输入输出以字节为单位,所有的使用字节流的类都继承自 InputStream 和 OutputStream. Byte Streams 属于 low-l ...