62,046
社区成员
发帖
与我相关
我的任务
分享
protected void btn_save_Click(object sender, EventArgs e)
{
string path = "../imgfile/201207/201207171339369062.dwg";
//AcadDatabase acaddb = new AcadDatabase();
//DataTable dt = Hun.BLL.CadAdd;
//int blocks = acaddb.Blocks.Count;
getCAD(path);
}
public void getCAD(string path)
{
Database db = new Database();
try
{
//把DWG文件读入到一个临时的内存数据库中
//using (db = new Database(false, true))
//{
db.ReadDwgFile(path, System.IO.FileShare.ReadWrite, true, null);
//现在进入数据库并获得数据库的块表引用
Transaction trans = db.TransactionManager.StartTransaction();
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead, false, true);
//从块表的模型空间特性中获得块表记录,块表记录对象包含DWG文件数据库实体
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead, false, true);
foreach (ObjectId btrId in btr)
{
DBObject entBlock = (DBObject)trans.GetObject(btrId, OpenMode.ForRead, false, true);
if (entBlock.GetRXClass().DxfName.ToUpper() == "INSERT")
{
BlockReference bRef = (BlockReference)entBlock;
if (bRef.AttributeCollection.Count != 0)
{
System.Collections.IEnumerator bRefEnum = bRef.AttributeCollection.GetEnumerator();
while (bRefEnum.MoveNext())
{
ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键
AttributeReference aRef = (AttributeReference)trans.GetObject(aId, OpenMode.ForRead, false, true);
TextBox1.Text = aRef.TextString;
}
}
}
}
trans.Commit(); //提交事务处理
btr.Dispose();
bt.Dispose();
}
//}
catch (System.Exception ex)
{
Response.Write("\n出错啦: " + ex.Message);
}
finally
{
db.Dispose();
services.Dispose();
}
}