插入外部dwg文件,避免外部参照

之前用插入外部参照快的方法,拷贝给别人的时候还需要绑定外部参照快,或者将外部参照dwg拷贝过去,很麻烦,后经过以下方法避免了外部参照的麻烦,插入的块直接就是块参照,非常好用。

转载自:http://blog.csdn.net/missingshirely/article/details/11899995点击打开链接

处理方法:读取指定文件路径的dwg图。

核心代码:


                db.ReadDwgFile(fileName, FileOpenMode.OpenForReadAndReadShare, true, null);

                    ObjectId id = doc.Database.Insert(blockName, db, false);如果,以上几篇文章能读懂,阅读该方法应该没有问题。请自行阅读。

输入参数:

插入块名称

外部DWG文件名称(路径)

插入点

输出:

插入块后的实体id

 /// <summary>
        /// 插入文件到当前模型空间中
        /// </summary>
        /// <param name="BloName">块名</param>
        /// <param name="fileName">文件名</param>
        /// <param name="inPoint">插入点</param>
        public ObjectId GetDwgFile(string blockName, string fileName, Point3d insertPnt)
        {
            
            Document doc = Application.DocumentManager.MdiActiveDocument;
       
            ObjectId oId = ObjectId.Null;
          
            using (Database db = new Database(false, false))
            {
              
                db.ReadDwgFile(fileName, FileOpenMode.OpenForReadAndReadShare, true, null);
            
                using (Transaction trans = doc.TransactionManager.StartTransaction())
                {
                
                    BlockTable bt = (BlockTable)trans.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);
                   
                    BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                    
                    ObjectId id = doc.Database.Insert(blockName, db, false);
                
                    using (BlockReference brf = new BlockReference(insertPnt, id))
                    {
                      
                        oId = btr.AppendEntity(brf);
                     
                        trans.AddNewlyCreatedDBObject(brf, true);
                    
                        trans.Commit();
                    }
                }
            }
            return oId;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值