找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2236|回复: 6

[ARX程序]:打开DWG文件时的问题

[复制链接]
发表于 2003-10-13 12:40:29 | 显示全部楼层 |阅读模式

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

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

×
在ARX中,用readDwgFile()打开一个DWG文件,这个文件包括一个模型空间和一个图纸空间(001)。可是运行ARX命令后,屏幕上没有显示这个DWG文件的内容,只有一个空的模型空间和两个空的图纸空间(Layout1 and Layout2)是为什么?
Acad::ErrorStatus readDwgFile(const char* fileName)
{
        AcDbDatabase* pCurDb;
        Acad::ErrorStatus es;
        AcDbDatabase* pDb = new AcDbDatabase(Adesk::kFalse);
        es=pDb->readDwgFile(fileName);
        if(es!=Acad::eOk)
        {
                acutPrintf("\n The %c file was not found. ",DWGFILEDIRECTORY);
                delete pDb;
                return es;
        }
        return es;
}
调用:
        readDwgFile((char *)"c:\\ploting\\template\\YW-A3.dwg");

不知道还有没有其它办法可以实现打开一个DWG或DWT文件,然后在上面绘图的功能?谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 192个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2003-10-14 21:35:47 | 显示全部楼层
if(es!=Acad::eOk)
{
acutPrintf("\n The %c file was not found. ",DWGFILEDIRECTORY);
delete pDb;
return es;
}
AcDbDatabase pDbCur = 当前图形
pDbCur->insert(pDb);
...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-15 09:10:34 | 显示全部楼层
我在后面加了下面的代码:
        pCurDb = acdbHostApplicationServices()->workingDatabase();
        if(pCurDb->insert(AcGeMatrix3d::kIdentity,pDb) != Acad::eOk)
        {
                delete pCurDb;
        }
并没有读出图纸空间(layout)的信息,还有标注样式也不是原来的标注样式,而变成ISO样式了。
要完成以上功能,还要加或修改什么代码?谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2003-10-15 19:56:12 | 显示全部楼层
上面的方法类似ACAD的 INSERT命令,即插入的数据库的全部风格随当前数据(包括字体、标注、图纸空间等)
如果你只是打开文件,可以参考文档管理器相关的内容,AcApDocManager::openDocument()
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-22 10:26:55 | 显示全部楼层
我是要打开一个文件,然后在在打开文件里头继续绘图。打开的文件可以是一个DWG或是一个DWT文件。
下面是一段代码,就是用pDbCur->insert(pDb);
Acad::ErrorStatus readDwgFile(char* currentRootFolder,char* tempFolder,const char* fileName)
{
        char* fullfileName=new char[MAX_PATH];       
        sprintf(fullfileName,"%s%s\\%s",currentRootFolder,tempFolder,fileName);

        AcDbDatabase* pCurDb;
        Acad::ErrorStatus es;
        AcDbDatabase* pDb = new AcDbDatabase(Adesk::kFalse);
        es=pDb->readDwgFile(fullfileName);
        if(es!=Acad::eOk)
        {
                acutPrintf("\n The %c file was not found. ",fullfileName);
                delete pDb;
                return es;
        }
        pCurDb = acdbHostApplicationServices()->workingDatabase();
        if(pCurDb->insert(AcGeMatrix3d::kIdentity,pDb) != Acad::eOk)
        {
                delete pCurDb;
        }

        delete pDb;
        return es;
}

但还是没有读出图纸空间,没有把原图纸的标注样式设为当前样式等。只有读出模型空间的实体。原来图纸只有一个图纸空间,名字为01。而现在有2个图纸空间,名字就是系统默认的两个:Layout1,Layout2。
是为什么?
是不是因为启动CAD的时候就已经有了两个默认的图纸空间?所以结果也就有了两个图纸空间?请问上面的代码怎么改?
是不是insert(AcGeMatrix3d::kIdentity,pDb)这里错了?

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 06:25 , Processed in 0.284434 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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