zoukankan      html  css  js  c++  java
  • 根据块名删除块和根据块名删除块引用 的区别

    ** 删除块后,块引用如果有那么依然存在,打开文件时会报错
    ** 删除块引用后块一定存在
     最好的办法是先全部删除块引用,然后再删除块,这样在打开图纸时才不会报错
     以下是写好的现成的两个方法

    //根据块名删除块引用
            internal static void DeleteBlockRefByBlockName(Database db, string strBlockName, string strBlockName1)
            {
                Transaction tr = db.TransactionManager.StartTransaction();
                using (tr)
                {
                    BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                    foreach (ObjectId objId in btr)
                    {
                        DBObject dbObj = tr.GetObject(objId, OpenMode.ForWrite);
                        if (dbObj is BlockReference )
                        {
                            BlockReference refEnt=dbObj as BlockReference ;
                            BlockTableRecord mtbtr = (BlockTableRecord)tr.GetObject(refEnt.BlockTableRecord , OpenMode.ForWrite);
                            if (mtbtr.Name.Equals(strBlockName) || (mtbtr.Name.Equals(strBlockName1)))
                            {
                                refEnt.Erase();
                            }
                        }
                    }
                    tr.Commit();
                }
            }

     


            //根据块名删除块
            internal static void DeleteBlockByBlockName(Database db,string strBlockName, string strBlockName1)
            {
                Transaction tr = db.TransactionManager.StartTransaction();
                using (tr)
                {
                    BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
                    foreach (ObjectId objId in bt)
                    {
                        BlockTableRecord bbtr = tr.GetObject(objId, OpenMode.ForWrite) as BlockTableRecord;
                        if (bbtr.Name.Equals(strBlockName) || (bbtr.Name.Equals(strBlockName1)))
                        {
                            bbtr.Erase();
                        }
                    }
                    tr.Commit();
                }
            }

  • 相关阅读:
    小程序对于华为Oppo的canvas二维码渲染数据量大
    SonarQube代码质量管理工具的升级(sonarqube6.2 + sonar-scanner-2.8 + MySQL5.6+)
    SonarQube代码质量管理工具安装与使用(sonarqube5.1.2 + sonar-runner-dist-2.4 + MySQL5.x)
    在try-catch机制优化IO流关闭时,OutputStreamWriter 数据流被截断
    Java中日期格式化SimpleDateFormat类包含时区的处理方法
    彻底删除mysql服务(清理注册表)
    PHP7新特性的介绍
    RESTful架构详解
    php-config 介绍
    用 phpize 编译共享 PECL 扩展库
  • 原文地址:https://www.cnblogs.com/houlinbo/p/1563210.html
Copyright © 2011-2022 走看看