找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 935|回复: 20

[ARX程序]:请教高手帮我看看错在哪里?

[复制链接]
发表于 2003-7-28 16:42:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我程序的代码是这样的:

  1.         AcDbDatabase *pDb=new AcDbDatabase();
  2.         AcDbBlockTable *pBlockTable;
  3.         AcDbBlockTableRecord *pSpace;
  4.        
  5.         int XingHao;
  6.         //find XingHao
  7.         int k=0;
  8.         while((k < HuoHao.Onepiece[Code ].EntitySample.FangMaNum)&&(HuoHao.Onepiece[Code ].EntitySample.point[0].Ref[k].MaXing!=XingH))
  9.                 k++;
  10.         XingHao=k;
  11.         char XingString[50];
  12.         itoa(XingH,XingString,10);
  13.         CString ClothFile;
  14.         ClothFile="..\\pacad2003\\dwg\\dwgtmp\"+CodeName+HuoHao.Onepiece[Code ].CodeString+XingString+".dwg";
  15.    
  16.         pDb=acdbHostApplicationServices()->workingDatabase();
  17.         pDb->getSymbolTable(pBlockTable,AcDb::kForRead);
  18.         pBlockTable->getAt(ACDB_MODEL_SPACE,pSpace,AcDb::kForWrite);
  19.         pBlockTable->close();

  20.         pDb->getTextStyleTable(pTextStyleTable,AcDb::kForRead);
  21.         pTextStyleTable->getAt("STANDARD",textStyleId);
  22.         pTextStyleTable->close();

  23.         //绘方向线
  24.         AcGePoint3d startpt(HuoHao.Onepiece[Code ].EntitySample.Direct[0].x,
  25.                                 HuoHao.Onepiece[Code ].EntitySample.Direct[0].y,0.0);
  26.         AcGePoint3d endpt(HuoHao.Onepiece[Code ].EntitySample.Direct[1].x,
  27.                                 HuoHao.Onepiece[Code ].EntitySample.Direct[1].y,0.0);
  28.         AcDbLine *pLine=new AcDbLine(startpt,endpt);       
  29.         pLine->setColorIndex(Color);
  30.         pLine->setLayer("0");

  31.         pSpace->appendAcDbEntity(pLine);//断点显示此处出错

  32.         pLine->close();
  33.         pSpace->close();
复制代码

错误提示是这样的:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 192个

财富等级: 日进斗金

发表于 2003-7-28 18:46:51 | 显示全部楼层
pDb->getSymbolTable(pBlockTable,AcDb::kForRead);
改为pDb->getBlockTable(pBlockTable,AcDb::kForRead);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-28 19:56:14 | 显示全部楼层
我照你说的改了,可还不行,还是刚才的那个错误。真是太郁闷了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-28 21:49:25 | 显示全部楼层
最初由 catherine0112 发布
[B]我照你说的改了,可还不行,还是刚才的那个错误。真是太郁闷了。 [/B]


Acad::ErrorStatus es = pSpace->appendAcDbEntity(pLine);

检查一下返回值是什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-28 23:47:13 | 显示全部楼层
pSpace->appendAcDbEntity(pLine);
改为
AcDbObjectId retId;
pSpace->appendAcDbEntity(retId,pLine);
看看。。。。
我有时候也碰到出类似的错误,改了这个地方就可以了,是比较郁闷的。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-29 09:00:56 | 显示全部楼层
rave,我按照你说的作了,在此处设置了断点,得到的各个变量的值如下图所示:我该怎么办?
rave, es的值是35,那说明是什么错误?怎么修改?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-29 09:02:20 | 显示全部楼层
Echoyin,我也按照你说的做了,可仍然出错,错误对话框是这样的:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 192个

财富等级: 日进斗金

发表于 2003-7-29 19:12:39 | 显示全部楼层
AcDbDatabase *pDb=new AcDbDatabase();
改为AcDbDatabase *pDb;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-1 08:47:13 | 显示全部楼层
不行不行还是不行!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-1 13:27:22 | 显示全部楼层
最初由 catherine0112 发布
[B]rave,我按照你说的作了,在此处设置了断点,得到的各个变量的值如下图所示:我该怎么办?
rave, es的值是35,那说明是什么错误?怎么修改? [/B]


我估计你是在 Application Context中执行上述代码,可能是忘记了文档加锁/解锁
你这样改改

  1. //...
  2.         [color=red]acDocManager->lockDocument( acDocManager->curDocument(), AcAp::kWrite,NULL,NULL,true) ;[/color]
  3.         pDb=acdbHostApplicationServices()->workingDatabase();
  4.         pDb->getSymbolTable(pBlockTable,AcDb::kForRead);
  5.         pBlockTable->getAt(ACDB_MODEL_SPACE,pSpace,AcDb::kForWrite);
  6.         pBlockTable->close();

  7.         pDb->getTextStyleTable(pTextStyleTable,AcDb::kForRead);
  8.         pTextStyleTable->getAt("STANDARD",textStyleId);
  9.         pTextStyleTable->close();

  10.         //绘方向线
  11.         AcGePoint3d startpt(HuoHao.Onepiece[Code ].EntitySample.Direct[0].x,
  12.                                 HuoHao.Onepiece[Code ].EntitySample.Direct[0].y,0.0);
  13.         AcGePoint3d endpt(HuoHao.Onepiece[Code ].EntitySample.Direct[1].x,
  14.                                 HuoHao.Onepiece[Code ].EntitySample.Direct[1].y,0.0);
  15.         AcDbLine *pLine=new AcDbLine(startpt,endpt);       
  16.         pLine->setColorIndex(Color);
  17.         pLine->setLayer("0");

  18.         pSpace->appendAcDbEntity(pLine);//断点显示此处出错

  19.         pLine->close();
  20.         pSpace->close();
  21.         [color=red]acDocManager->unlockDocument( acDocManager->curDocument());[/color]
  22. //...
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-1 17:08:04 | 显示全部楼层

请教rave

请教rave,如果我有多个实体想添加进去,那这两行解锁的代码应该怎么添加?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-1 20:20:50 | 显示全部楼层

Re: 请教rave

最初由 catherine0112 发布
[B]请教rave,如果我有多个实体想添加进去,那这两行解锁的代码应该怎么添加? [/B]

凯瑟琳,
问题解决了吗,是我分析的原因吗?

在Application Context中需要明确的文档锁定后才可以对文档进行编辑工作(增加/删除/修改实体或设置某些系统变量).

有多个实体想添加,你可以这样啊
  1. void function1()
  2. {
  3.     acDocManager->lockDocument( acDocManager->curDocument(), AcAp::kWrite,NULL,NULL,true) ;
  4.     //添加实体1
  5.    //...
  6.     //添加实体N
  7.     acDocManager->unlockDocument( acDocManager->curDocument());
  8. }
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-4 15:03:45 | 显示全部楼层
rave, 我按照你说的将文档锁定之后,在appendEntity时,并没有出错,但是当结束整个程序的时候,仍然显示出错异常,这是怎么回事?看来治标不治本啊。麻烦您再帮我看看。也请其他高手各抒己见。谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-4 23:02:08 | 显示全部楼层
最初由 catherine0112 发布
[B]rave, 我按照你说的将文档锁定之后,在appendEntity时,并没有出错,但是当结束整个程序的时候,仍然显示出错异常,这是怎么回事?看来治标不治本啊。麻烦您再帮我看看。也请其他高手各抒己见。谢谢! [/B]


你代码里面还有莫名其妙的
AcDbDatabase *pDb=new AcDbDatabase();

如果不是它的原因,你把完整的代码传上来,大家才有可能帮你找到原因
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-7 09:23:40 | 显示全部楼层
AcDbDatabase *pDb=new AcDbDatabase();
这个代码有什么奇怪的吗?定义一个新的数据库不就是这样吗?如果是你的话会怎么写?不好意思,我是个新手,还需您多多指点,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 02:44 , Processed in 0.240472 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表