乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 31|回复: 1

求助,添加扩展数据后无法保存

[复制链接]

6

主题

15

帖子

4

银币

初来乍到

Rank: 1

铜币
39
发表于 2012-8-14 21:56:00 | 显示全部楼层 |阅读模式
刚做了一段程序,对多线段添加datatable扩展数据后,文件无法保存。以下为代码
  1.         private void GS_change_Click(object sender, EventArgs e)
  2.         {
  3.             /////以下为对datatable的数据处理,未与CAD进行交互处理/////////////////////////
  4.             if (JJ_hx.Text == "" || JJ_jd.Text == "" || JJ_zx.Text == "" || XX_djbj.Text == "" || XX_gsxh.Text == "" || XX_zllx.Text == "" || XX_zlyl.Text == "" || XX_ss.Text == "")
  5.             {
  6.                 MessageBox.Show("缺少必要数据");
  7.                 return;
  8.             }
  9.             if (pl == null)
  10.             {
  11.                 MessageBox.Show("没有选择钢束大样");
  12.                 return;
  13.             }
  14.             dis_z = CAL_GS.getdis(JJ_zx.Text);
  15.             List dis_h = CAL_GS.getdis(JJ_hx.Text);
  16.             List dis_j = CAL_GS.getdis(JJ_jd.Text);
  17.             if (dis_h.Count != dis_j.Count)
  18.             {
  19.                 MessageBox.Show("横向间距和钢束转角个数不统一");
  20.                 return;
  21.             }
  22.             Autodesk..DatabaseServices.DataTable dt = new Autodesk.AutoCAD.DatabaseServices.DataTable();
  23.             dt.TableName = "GSTable";
  24.             dt.AppendColumn(CellType.CharPtr, "命名");
  25.             dt.AppendColumn(CellType.CharPtr, "张拉方式");
  26.             dt.AppendColumn(CellType.CharPtr, "张拉应力");
  27.             dt.AppendColumn(CellType.CharPtr, "钢束型号");
  28.             dt.AppendColumn(CellType.CharPtr, "倒角半径");
  29.             dt.AppendColumn(CellType.CharPtr, "起始单元号");
  30.             dt.AppendColumn(CellType.CharPtr, "控制单元号");
  31.             dt.AppendColumn(CellType.CharPtr, "横向分布");
  32.             dt.AppendColumn(CellType.CharPtr, "各横向分布转角");
  33.             dt.AppendColumn(CellType.CharPtr, "横向每条束数");
  34.             DataCellCollection Row = new DataCellCollection();
  35.             List addstr = new List();
  36.             for (int i = 0; i  min && bgnode == "")
  37.                     bgnode = i.ToString();
  38.                 if (Math.Round(s + dis_z[i-1],4) >= max)
  39.                 {
  40.                     allnode = bgnode + "to" + i.ToString();
  41.                     break;
  42.                 }
  43.                 s = s + dis_z[i-1];
  44.             }
  45.             if (allnode == "")
  46.                 allnode = bgnode + "to" + dis_z.Count.ToString();
  47.             addstr[5].SetString(bgnode); //添加起始单元号
  48.             addstr[6].SetString(allnode); //添加控制单元号
  49.             addstr[7].SetString(JJ_hx.Text);//
  50.             addstr[8].SetString(JJ_jd.Text);
  51.             addstr[9].SetString(XX_ss.Text);
  52.             for (int i = 0; i < 10; i++)
  53.                 Row.Add(addstr);
  54.             dt.AppendRow(Row, true);//以上为对datatable的数据处理,未与CAD进行交互处理/////////////////////////
  55.             using (DocumentLock dl = Doc.LockDocument())//我是通过面板调用对话框的,不加这句老报错
  56.             {
  57.                 using (Transaction tran = db.TransactionManager.StartTransaction())
  58.                 {
  59.                     pl = (Polyline)tran.GetObject(pl.ObjectId, OpenMode.ForWrite,true);//pl是Polyline类全局变量,之前是以只读方式打开的。
  60.                     if (pl.ExtensionDictionary == new ObjectId())
  61.                         pl.CreateExtensionDictionary();
  62.                     DBDictionary extensionDic = (DBDictionary)tran.GetObject(pl.ExtensionDictionary, OpenMode.ForWrite,true);
  63.                     extensionDic.SetAt("GSTable", dt);
  64.                     if (AddToMCT.Checked)
  65.                         add_to_view(pl.ObjectId);
  66.                     tran.Commit();
  67.                 }
  68.             }
  69.         }

运行后出现“写入保存文件错误”
本人是自学C#的,好多地方处理的不怎么好。让大侠们费解了。
回复

使用道具 举报

0

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2013-6-21 09:34:00 | 显示全部楼层
我昨天也碰到了这个情况,哈哈,一模一样!最后终于解决了!
得要把表格加入到数据库中!
trans.AddNewlyCreatedDBObject(dt, True)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:16 , Processed in 0.388666 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表