AutoCAD从2010版开始出现了规则重定义,我们知道在AutoCAD中有自定义实体,和自定义实体相比,规则重定义没有增加新的实体类型,它允许改变AutoCAD标准实体的颜色、形状、颜色等信息。使视图中显示出来。规则重定义有多重类型,下面列举出个规则重定义类别,并加以说明。

重定义规则类型

重定义规则说明

ObjectOverrule

数据库对象重定义,可以重定义数据库对象的基本行为。

DrawableOverrule

可视化对象规则重定义,可重定义可视化对象的显示形式,重定义只是将图形的显示规则做了改变,图形的基本属性,类型不会变化。实现方法:从DrawableOverrule派生一个类,重写WorldDraw函数改变图形在绘图区域中的显示规则。

GripOverrule

夹点重定义,可以自定义夹的行为。

OsnapOverrule

重定义对象捕捉的行为。

GeometryOverrule

重定义几何性质。

HighlightOverrule

重定义高亮显示方式。

PropertiesOverrule

重定义属性。

TransformOverrule

重定义变形行为。

规则重定义有很多用处,在测绘中,可以重新定义大规模TIN的显示方式、复合线状物的显示。下面是一个可视化对象规则重定义的例子,具体代码如下。其中重定义了DrawableOverrule,重写了WorldDraw方法。该方法中第一个参数表示重定义的实体对象,第二参数是绘制实体的画布。两个参数都属于GraphicInterface命名空间。

 class PlaneOverrule : DrawableOverrule{public DBObjectCollection copyCollection = new DBObjectCollection();/*重写该方法*/public override bool WorldDraw(Drawable drawable, WorldDraw wd){Matrix3d matrix = Matrix3d.Rotation(Math.PI / 2, Vector3d.YAxis, Point3d.Origin);Entity ent1 = drawable as Entity;if (ent1.ObjectId != ObjectId.Null){Entity copyEnt = ent1.GetTransformedCopy(matrix);copyEnt.WorldDraw(wd);copyCollection.Add(copyEnt);}return base.WorldDraw(drawable, wd);}}

使用前面重定义DrawableOverrule的PlaneOverrule。

如下:

class CmdTestDemo{private static PlaneOverrule overrule;[CommandMethod("otdp")]public static void TestOverrideToDifferentPlane(){if (overrule == null){overrule = new PlaneOverrule();Overrule.AddOverrule(RXObject.GetClass(typeof(Entity)), overrule, false);}else {foreach (DBObject  obj  in overrule.copyCollection){obj.Dispose();}Overrule.RemoveOverrule(RXObject.GetClass(typeof(Entity)), overrule);overrule.Dispose();overrule = null;}Overrule.Overruling = !Overrule.Overruling;Application.DocumentManager.MdiActiveDocument.Editor.Regen();}}

最后在AutoCAD中使用netload加载编译好的dll文件,输入执行命令,可以测试一下效果。


                                                                       更多内容,微信扫二维码关注公众号

       


                                     

AutoCAD二次开发规则重定义相关推荐

  1. autocad型源代码_VB与AUTOCAD二次开发源代码包

    在发个VB与AUTOCAD二次开发源代码包,包括以下内容: 在学校的话,叫计算机辅助设计 第一章 VB开发AotoCAD基础知识 第一节 欢迎进入VB开发AUTOCAD的精彩世界 第二节 VB 开发 ...

  2. AutoCAD二次开发基础(三):船体型线绘制

    AutoCAD二次开发系列 文章目录 前言 一.绘制船体横剖线 二.绘制船体纵剖线 三.绘制船体肋骨型线图 前言 用程序生成船体型线图,无疑会提高开发效率. 一.绘制船体横剖线 任务:编制程序,根据水 ...

  3. cass二次开发vba和lisp_基于VBA的AutoCAD二次开发及应用实例

    1引言本文引用地址:http://www.eepw.com.cn/article/190993.htm AutOCAD2005是AutOdesk公司的系列产品,该软件从其使用和设计思路上都秉承了工程制 ...

  4. [转载][AutoCAD二次开发][2017]Autocad2017 ObjectARX 开发 环境配置和踩到的坑

    转自 https://www.cnblogs.com/aweffr/p/7510544.html 其中 链接器(Linker)中添加附加依赖目录和附加依赖项 版本号记得改成自己的版本就好 碎碎念 不得 ...

  5. eps高程点和高程注记不符_利用AutoCAD二次开发实现地形图高程点与等高线错误自动查找...

    原标题:利用AutoCAD二次开发实现地形图高程点与等高线错误自动查找 水土保持之点滴,关注后可查阅所有文章 来源:<测绘通报>2017年第5期 作者:刘洪.黄军胜 摘要:论述了数字地形图 ...

  6. AutoCAD二次开发基础(四):多义线

    AutoCAD二次开发系列 文章目录 前言 一.样条曲线转化为多义线 二.梯形法计算多义线面积及形心坐标 前言 为了便于数据交换,需把样条曲线转换为多义线. 一.样条曲线转化为多义线 思想:将样条曲线 ...

  7. [AutoCAD二次开发][2017]Autocad2017 ObjectARX 开发 环境配置和踩到的坑

    碎碎念 不得不说autocad二次开发的相关资料真的少,大多数还很旧.图书馆里VBA的一本最近出版时间是2006,AutoLisp的2013(还是个十二五规划教材),ObjectARX的书是2014年 ...

  8. 基于C#进行AutoCAD二次开发初探(二)——C#编写代码直接打开AutoCAD并显示图形

    AutoCAD 2006 Type Library   //我用的是CAD2006版 AutoCAD/ObiectDBX Common 16.0 Type Library 把这两个引用的命名空间引进来 ...

  9. 基于C#的AutoCAD二次开发之块操作

    基于C#的AutoCAD二次开发之块操作 什么是块? 块由多个在逻辑上相关的图形对象所定义的整体. 块的优点有哪些 统一作业标准.提高作业效率 压缩图形文件 便于修改和维护 块的分类 块的分类 简单块 ...

最新文章

  1. 张首晟生前重磅演讲:要用第一性原理的思维方式来理解今天的世界
  2. asp.net 2.0 简单实现url重写
  3. ZZ:Business Analysis Career Path
  4. 进度条的另外一种用法
  5. 通过TLS发送的Java邮件
  6. 【渝粤教育】电大中专会计电算化 (2)作业 题库
  7. mysql bcp数据文件_BCP 数据的导入和导出
  8. Vue父组件访问子组件属性和方法、父子组件双向绑定(两种方法)
  9. MongoDB 聚合管道(Aggregation Pipeline)
  10. 清华大学MBA在职班第一学年第二学期课表
  11. VUE前端+Node后台模拟打印机Web即时打印
  12. vue2生成图片导出pdf
  13. XshellXftpPortable Xshell,Xftp便携版绿色版下载
  14. murmur3哈希算法
  15. 煦涵说Webpack-IE低版本兼容指南
  16. CENTOS上的网络安全工具(十二)走向Hadoop(4) Hadoop 集群搭建
  17. CPU 缓存如何影响你的 Go 程序性能
  18. 简单明了实现vue兼容到ie
  19. 【电商项目实战】个人资料(详细篇)
  20. php网盘 共享 直链,PHP比较简单的百度网盘文件直链的实现方法

热门文章

  1. 《15个提高Google搜索的技巧》
  2. 【C++】字符串子串的系列问题
  3. C++中拷贝构造、赋值构造的区别
  4. 昨日互联网,明日区块链
  5. 【风口浪尖】徽剑万言书直指蛮子薛身份 “发家史”
  6. 实变函数—有限覆盖定理的证明
  7. 瑞吉外卖——菜品展示功能(移动端)
  8. matlab 有限元分析
  9. 算法 | 你知道算法为什么这么重要吗?
  10. WPF 方块按钮 仿照360