找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 893|回复: 11

[ARX程序]:编译时不能通过,不知为什么,请前辈们看一下代码,那里出错了,并指正,谢谢!

[复制链接]
发表于 2004-6-23 10:54:45 | 显示全部楼层 |阅读模式

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

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

×
编译时不能通过,不知为什么,请前辈们看一下代码,那里出错了,并指正,谢谢!

void corillacreatedwg()
{
        AcDbDatabase *pDb = new AcDbDatabase();        //新建数据库
       
        AcDbBlockTable *pBlockTable;
        pDb->getSymbolTable(pBlockTable, AcDb::kForRead);        //取得块表
       
        AcDbBlockTableRecord *pBlockTableRecord;
        pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite); //取得块表记录
        pBlockTable->close();
       
        //创建两个圆
        AcDbCircle *pCirc1 = new AcDbCircle(AcGePoint3d(1.0,1.0,1.0), AcGePoint3d(0.0,0.0,1.0), 1.0);
        AcDbCircle *pCirc2 = new AcDbCircle(AcGePoint3d(4.0,4.0,4.0), AcGePoint3d(0.0,0.0,1.0), 2.0);
       

        //添加进数据库
        pBlockTableRecord->appendAcDbEntity(pCirc1);
        pCirc1->close;
        pBlockTableRecord->appendAcDbEntity(pCirc2);
        pCirc2->close;
       
        pBlockTableRecord->close();
       
        pDb->saveAs("c:\\test1.dwg");        //保存数据为图形文件(已改)
       
        delete pDb;                //删除
}


初步怀疑是头文件出了问题!!!
下面为主要报错信息,可供参考:

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

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-6-23 11:12:31 | 显示全部楼层
pDb->saveAs("c:\\test1.dwg"); //保存数据为图形文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-23 11:40:14 | 显示全部楼层
删除数据库时,没有指定当前数据库。
在AutoCAD中,必须保证在删除数据库时,指定当前数据库。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-23 11:49:35 | 显示全部楼层
请你们在指出错误同时,,并改正错误码咯.

如果我自己能看出,我就自己改了.

谢谢你们热心的同志.

终于解决问题了, 果然是头文件出问题,少了两了.

我原来的头文件全是由向导生成的,以为会全了,相不到....

#include "dbsymtb.h"
#include "dbents.h"

代码中:
        AcDbCircle* pCirc1 = new AcDbCircle(AcGePoint3d(1.0,1.0,1.0), AcGePoint3d(0.0,0.0,1.0), 1.0);

改为:
        AcDbCircle* pCirc1 = new AcDbCircle(AcGePoint3d(1.0,1.0,1.0), <red>AcGeVector3d</red>(0.0,0.0,1.0), 1.0);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-23 12:58:01 | 显示全部楼层
创建圆时:
AcDbCircle(const AcGePoint3d& cntr,const AcGeVector3d& nrm,double radius);
圆的构造函数的第二个参数是向量。

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-6-23 14:29:34 | 显示全部楼层
AcDbDatabase *pDb = new AcDbDatabase(); //新建数据库
AcDbBlockTable *pBlockTable;
pDb->getSymbolTable(pBlockTable, AcDb::kForRead); //取得块表

AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite); //取得块表记录
pBlockTable->close();

//创建两个圆
AcDbCircle *pCirc1 = new AcDbCircle(AcGePoint3d(1.0,1.0,1.0), AcGeVector3d(0.0,0.0,1.0), 1.0);
AcDbCircle *pCirc2 = new AcDbCircle(AcGePoint3d(4.0,4.0,4.0), AcGeVector3d(0.0,0.0,1.0), 2.0);


//添加进数据库
pBlockTableRecord->appendAcDbEntity(pCirc1);
pCirc1->close();
pBlockTableRecord->appendAcDbEntity(pCirc2);
pCirc2->close();

pBlockTableRecord->close();

pDb->saveAs("c:\\test1.dwg"); //保存数据为图形文件(已改)

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

使用道具 举报

 楼主| 发表于 2004-6-23 14:37:05 | 显示全部楼层
//=============第一次

对了,听三楼说,在要删除数据库的时候,是不是要判断一下删除的是否为当前数据库呢???
如何实行这一步呢??

有这样的函数的是吧??

//================================此帖第二次编辑以下

经本人验证,这句代码:
pDb->saveAs("c:\\test1.dwg");

运行这个命令后,应该会把生成的两个圆都一起保存在test1.dwg里面才对啊,可却没有.

过程:
运行命令createdwg执行成功,
关闭AutoCAD,提示是否保存,选否.
在C盘根目录下发现有test1.dwg.
打开此图,可里面却空空的,没有两个圆!!!!!!???

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-6-23 15:13:51 | 显示全部楼层
1、本来就在pDb下操作,怎么会删除当前数据库
2、我们测试过,图形是成功生成了,只是未在当前可视范围
z回车,e回车就看到两个园!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-24 11:13:48 | 显示全部楼层
晕,我说的是,打开存在C:\下的Test1.dwg文件,

过程:
运行命令createdwg执行成功,
关闭AutoCAD,提示是否保存,选否.
在C盘根目录下发现有test1.dwg.
打开此图,可里面却空空的,没有两个圆!!!!!!???

在执行这个命令时,明明图中已经有了两个圆,应该已经把圆添加进去了,所以在退出autoCAD时,系统问要不要保存图形文件,选否,也不会影响已经存进C:\下的Test1.dwg文件才对!
pDb->saveAs("c:\\test1.dwg");

但,打开Test1.dwg时,却没有发现有圆!

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-6-24 14:50:04 | 显示全部楼层
1、删除c:\test.dwg
2、在CAD环境运行命令createdwg,成功生成c:\test.dwg
3、打开c:\test.dwg
4、执行命令z,选择e项,将图全部显示出来
另外关闭CAD时提示是否存盘,指的是当前图形,与test.dwg无关
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-24 18:09:52 | 显示全部楼层
不明,不明,还是不明,难道我的ACD软件有问题???
我都试过了, 总这是不行,见不到两个圆!!

一个字怪!!
一,有没知因素,程序那里出错了.
二,我的系统那里出问题了, 在运行命令后,当前的图是有两个圆,但退出CAD时,不保存图形.

进到C:下,打开TEST1.dwg时,就是没有圆.



其实基本上很肯定,两个圆并没有被保存,因为,我一执行了命令,就马上关掉CAD,它还是会叫你保存当前图形,我知道CAD有这种现象,如果你刚刚已经保存过图形,在没有作任何改动,如放大,添加删除实体等,是不会再叫你保存图形的,
所以有这样的推测.

致于你们那么肯定说"有", 我就不知为什么了!

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

使用道具 举报

发表于 2004-6-24 19:06:52 | 显示全部楼层
YMD is right!
I have just tried the above program. the test1.dwg has the  2 Circles!  Just as YMD said, you have to  
Zoom  and Extend to show the circles.
No problem, the program!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 02:38 , Processed in 0.497899 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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