CAD二次开发 插入外面块

复制代码
[CommandMethod("InsertOut")]
        //插入外面的块文件
        public void InsertOut()
        {
            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            PromptPointResult ppr = ed.GetPoint("选择插入点");
            Point3d pt = ppr.Value;//获取到插入点 
            //utility.WriteToEditor(pt.ToString());
            
            string blockPath = @"E:\sguozengWork\德兴市管线数据\pipe\R18\Dwg\well_symbol\变压器.dwg";
            using (Database blkDb = new Database(false, true))
            {

                //read drawing 

                blkDb.ReadDwgFile(blockPath, System.IO.FileShare.Read, true, null);

                blkDb.CloseInput(true);

                using (DocumentLock docLock = doc.LockDocument())//多文档要先这样,否则报至命错误 
                {

                    using (Transaction t = doc.TransactionManager.StartTransaction())
                    {
                        string name = "aa";//aa是不与blockPath文件中的任何块重名的字符串
                        //insert it as a new block 

                        ObjectId idBTR = doc.Database.Insert(name, blkDb, false);

                        //create a ref to the block 

                        BlockTable bt = (BlockTable)t.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);

                        BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

                        using (BlockReference bref = new BlockReference(pt, idBTR)) //pt是一个Point3D坐标,这里是插入进当前dwg文件中
                        {

                            btr.AppendEntity(bref);

                            t.AddNewlyCreatedDBObject(bref, true);

                        }

                        t.Commit();
                    }
                }

            }
        }
复制代码

 

posted @   成神之路~  阅读(1686)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示