• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > AutoCAD .Net禁止图元被删除的方法

AutoCAD .Net禁止图元被删除的方法

作者:HisinWang 字体:[增加 减小] 来源:互联网 时间:2018-08-20

HisinWang 通过本文主要向大家介绍了AutoCAD.Net,图元等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文为大家分享了AutoCAD .Net禁止图元被删除的具体代码,供大家参考,具体内容如下

禁止图元被用户删除可以通过 ObjectOverrule 实现。

以下代码:

1、命令 AddEraseOverrule 创建两个图元并禁止被删除。
2、命令 RemoveEraseOverrule 移除删除限制。

static EraseOverrule eraseRule = null;

public class EraseOverrule : ObjectOverrule
{
 public override void Erase(DBObject dbObject, bool erasing)
 {
  throw new Autodesk.AutoCAD.Runtime.Exception(
    Autodesk.AutoCAD.Runtime.ErrorStatus.NotApplicable);
  //base.Erase(dbObject, erasing);
 }
}

[CommandMethod("AddEraseOverrule")]
public static void AddEraseOverrule()
{
 if (eraseRule == null)
 {
  eraseRule = new EraseOverrule();
  Overrule.AddOverrule(RXObject.GetClass(typeof(Entity)),
        eraseRule, true);
  Overrule.Overruling = true;

  eraseRule.SetIdFilter(CreateEntities());
 }
}

[CommandMethod("RemoveEraseOverrule")]
public static void RemoveEraseOverrule()
{
 if (eraseRule != null)
 {
  Overrule.Overruling = false;
  Overrule.RemoveOverrule(RXObject.GetClass(typeof(Entity)),
        eraseRule);
  eraseRule.Dispose();
  eraseRule = null;
 }
}

private static ObjectId[] CreateEntities()
{
 Document doc = Application.DocumentManager.MdiActiveDocument;
 Database db = doc.Database;

 ObjectId[] oids = new ObjectId[2];
 using (Transaction tr = db.TransactionManager.StartTransaction())
 {
  BlockTableRecord space = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;

  //
  Line line = new Line();
  line.StartPoint = new Point3d(0, 0, 0);
  line.EndPoint = new Point3d(100, 100, 0);
  space.AppendEntity(line);
  tr.AddNewlyCreatedDBObject(line, true);

  oids[0] = line.ObjectId;

  //
  Circle circle = new Circle();
  circle.Center = new Point3d(0, 0, 0);
  circle.Radius = 50;
  space.AppendEntity(circle);
  tr.AddNewlyCreatedDBObject(circle, true);

  oids[1] = circle.ObjectId;

  tr.Commit();
 }

 return oids;
}

1、类 EraseOverrule 继承自 ObjectOverrule,并重写了 Erase 方法。
在该方法中,通过抛异常而不是执行删除操作,禁止图元被删除。

2、SetIdFilter 确保该规则只对特定 ObjectId 的图元有效。
ObjectOverrule 还有方法 SetXDataFilter,可以用来设置只对拥有特定 XData 的对象有效。

参考文章: Prevent deletion/erasing of entity

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • AutoCAD .Net禁止图元被删除的方法

相关文章

  • 2017-05-11asp.net url传递后地址栏乱码(中文超过两个汉字)
  • 2017-05-11implicitly convert type 'int' to 'short'的原因与解决方法
  • 2017-05-11如何解决Ajax请求结果的缓存问题说明
  • 2018-08-20ASP.NET使用Ajax返回Json对象的方法
  • 2017-05-11asp.net log4net的使用方法
  • 2017-05-11ASP.NET中Session和Cache的区别总结
  • 2017-05-11asp.net 无刷新分页实例代码
  • 2017-05-11ASP.NET 中ImageMap控件的用法
  • 2017-05-11学习使用ASP.NET 2.0的本地化
  • 2018-08-20WPF实现转圈进度条效果

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net简化接收参数值的函数
    • Asp.net动态生成html页面的方法分享
    • Visual Studio 2017创建.net standard类库编译出错原因及解决方法
    • asp.net(c#)实现从sqlserver存取二进制图片的代码
    • ASP.NET笔记之 控件与母板的区别分析
    • asp.net web大文件上传带进度条实例代码
    • .net调用JScript脚本及JS url加密解密
    • 详解CentOS 7.4下如何部署Asp.Net Core结合consul
    • asp.net mvc 动态编译生成Controller的方法
    • asp.net简单实现页面换肤的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有