C#实现在CAD图纸中插入另一个DWG图块的代码



C#实现在CAD图纸中插入另一个DWG图块的代码

PromptPointResult ppr = ed.GetPoint("请选择插入点:"); 
 
Point3d pt = ppr.Value; 
 
utility.WriteToEditor(pt.ToString()); 
 
 PIDBlock pidBlock = new PIDBlock();//自己定义的图块类,保存图块的路径和名称 
 
pidBlock.Name = "sample"; 
 
pidBlock.Path = blockPath + "b_sample.dwg";using (Database blkDb = new Database(false, true)) 
 
{ 
 
    //read drawing 
 
    blkDb.ReadDwgFile(pidBlock.Path, System.IO.FileShare.Read, true, null); 
 
    blkDb.CloseInput(true); 
 
    using (DocumentLock docLock = doc.LockDocument())//多文档要先这样,否则报至命错误 
 
    { 
 
        using (Transaction t = doc.TransactionManager.StartTransaction()) 
 
        { 
 
            //insert it as a new block 
 
            ObjectId idBTR = doc.Database.Insert(pidBlock.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)) 
 
            { 
 
                btr.AppendEntity(bref); 
 
                t.AddNewlyCreatedDBObject(bref, true); 
 
            } 
 
            t.Commit(); 
 
        } 
 
    } 
 
}


 

转载于:https://www.cnblogs.com/wenwu/p/3306604.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值