永发信息网

如何编写代码实现从外部输入块,并插入到当前文件中

答案:1  悬赏:20  手机版
解决时间 2021-11-15 13:56
如何编写代码实现从外部输入块,并插入到当前文件中
最佳答案
///
/// 使用一个新建的database从另外一个不打开的文件引入块记录
/// ImportBlock_DB里的ReadDwgFile方法在编译调试环境下会出错,错误为:尝试读取或写入受保护的内存
/// 但在正常AutoCAD启动装载程序情况下可用
/// Version : 2008.11.11 Sieben
///

/// 另外一个文件的文件名
/// 引入的一个块记录名,若为空字符串"",将引入文件里面的全部图块
/// 成功返回true,否则返回false
static public StringCollection ImportBlock_DB(string fileName, string blockName)
{
if (!File.Exists(fileName)) return null;
Database sourceDb = new Database(false, true);
try
{
//下面的ReadDwgFile方法在编译调试环境下会出错,错误为:尝试读取或写入受保护的内存
//但在正常AutoCAD启动装载程序情况下可用.
sourceDb.ReadDwgFile(fileName, System.IO.FileShare.Read, false, "");
Database destDb = aApp.DocumentManager.MdiActiveDocument.Database;
ObjectIdCollection blockIds = new ObjectIdCollection();
StringCollection reValue = new StringCollection();
using (Transaction ctrans = sourceDb.TransactionManager.StartTransaction())
{
BlockTable cbt = (BlockTable)ctrans.GetObject(sourceDb.BlockTableId, OpenMode.ForRead, false);
if (blockName == "")
{
foreach (ObjectId btrId in cbt)
{
BlockTableRecord cbtr = (BlockTableRecord)ctrans.GetObject(btrId, OpenMode.ForRead, false);
if (!cbtr.IsAnonymous && !cbtr.IsLayout)
{
blockIds.Add(btrId);
reValue.Add(cbtr.Name);
}
cbtr.Dispose();
}
}
else if (cbt.Has(blockName))
{
blockIds.Add(cbt[blockName]);
}
cbt.Dispose();
}
if (blockIds.Count == 0)
{
return null;
}
else
{
IdMapping mapping = new IdMapping();
sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, new IdMapping(), DuplicateRecordCloning.Replace, false);
return reValue;
}
}
catch (System.Exception ex)
{
se.WriteMessage(ex);
return null;
}
finally { sourceDb.Dispose(); }
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
诗题里带有兴字的古诗
今天刚办的联通3g卡96元套餐月租怎么算
中信银行地址好找么,我有些事要过去,
帮我看下刚买的3D硬金
g1013从长沙开往深圳北的高跌经过衡阳停吗
劳力士绿水鬼116610lv和黑水鬼116610ln在瑞士
漕溪路258弄乘地铁几号线到,几号出口
苹果醋饮料有苹果原醋的做用吗?长期喝对身体
上清湾小学地址有知道的么?有点事想过去!
你被移动强制改套餐了么
adobe cc 2016 2017 ,ps ai ae pr 支持多线
丰臀运动有哪些】
湖北黄冈武穴生三胎罚款不!
百度描写屠呦呦给我的启示作文 初中
书法中,小楷、中楷、大楷在尺寸上如何概定?
推荐资讯
工程施工大于工程结算的金额为什么计入存货?
天下贰1点追电多少速度
求助一到题目的数学解法
男篮蓝队战伊朗为何要打青春牌?
中国石油加油站(温州大街)地址好找么,我有些
51.9㎏等于多少斤
猿类凯撒的故事是什么?
长毛狗很容易脏 想要让它保持干净 但不想总洗
为什么和有些人再也找不到以前的感觉了?
在与人交谈时,需要注意的问题主要有哪些?
从江门出发游华东五市几钱?
苹果6s两个玫瑰金的手机为什么颜色不一样
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?