找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1786|回复: 7

[求助]:如何实现从服务器中读取dwg文件并显示在当前屏幕上?

[复制链接]
发表于 2006-4-15 20:53:19 | 显示全部楼层 |阅读模式

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

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

×
自己摸索着写了些代码,dwg文件读取到了,但不知道怎么把它显示出来,望各位高手抽空帮忙看看,谢谢啦!
***************************************************************************************
//先读取dwg文件到新建的数据库中
AcDbDatabase *Db=new AcDbDatabase();//获取新建数据库指针
AcDbDatabase *i_Db=acdbCurDwg();//获取当前数据库指针
AcDbBlockTable *Btable;//定义块表
AcDbObjectId id;//块表记录号
char Btablename[133];//块表记录名
char filename[133];//文件名
strcpy(filename,"dwg文件的URL地址");
Db->readDwgFile(filename);//读取文件到Db指向的数据库
//下面显示dwg文件,思路是获取待显示记录的号和名,然后调用insert()将该记录插入当前数据库中,问题应该就出在下边
Db->getBlockTable(Btable, AcDb::kForRead);//获取块表
id=Btable->objectId();//获取记录号
i_Db->insert(id, Bname, Db);//将对象插入当前数据库中,但其中的Bname即记录名不知道怎么获取?另外插入之后就能显示么?还需要进行什么操作吗?
***************************************************************************************
小弟初学arx,基本概念和原理不熟,不知道上述想法正确否,请各位大虾不吝赐教,如蒙指点,不胜感激!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-16 09:44:35 | 显示全部楼层
你应该用当前数据库的指针来读入图形,而不是新建一个数据库指针来读入!像这样:
AcDbDatabase *i_Db=acdbCurDwg();//获取当前数据库指针
char filename[133];//文件名
strcpy(filename,"dwg文件的URL地址");
i_Db->readDwgFile(filename);//读取文件到Db指向的数据库
其它都可以省了,不知正确否,你试试!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-4-18 16:25:36 | 显示全部楼层
谢谢二楼提供的思路,我再试验下哈
三楼说的是什么意思啊?你用我这程序可以显示吗?那怎么我这边不能呢?莫非又是所谓的rp问题,呵呵……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-30 13:01:40 | 显示全部楼层
原来写的插入图形代码(块方式插入)
CString m_PartBlockName = "test";//DWG名称
AcDbDatabase *pDb = new AcDbDatabase;
if(pDb->readDwgFile(FileName)!=Acad::eOk)
{
return;
}
AcDbBlockTable* pBlkTable;
if(pDb->getBlockTable(pBlkTable,AcDb::kForRead)!= Acad::eOk)
{
return;
}
AcDbBlockTableRecord *pBlkTblRcd=NULL;
pBlkTable->getAt(ACDB_MODEL_SPACE, pBlkTblRcd , AcDb::kForRead);
pBlkTable->close();
const char *blockname = m_PartBlockName;
AcDbObjectId objId;
acdbCurDwg()->insert(objId ,blockname,pDb);
pBlkTblRcd->close();
delete pDb;
//插入图块
acedCommand(RTSTR, "insert",RTSTR,m_PartBlockName,RTSTR,"0,0",RTSTR,"1",RTSTR,"1",RTSTR,"0",0);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-4 20:47:25 | 显示全部楼层
感谢楼上的,问题终于解决咯!只是有一点还不太明白,在进行数据库插入操作即acdbCurDwg()->insert后为什么还要插入图块才能在屏幕上显示图形呢?另外如果不用acedCommand命令的话还有别的方法实现图块的插入么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-21 11:01:44 | 显示全部楼层
可能是因为insert是向数据库中插入一个块定义,然后需要根据块定义插入块参照才行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-7 07:19 , Processed in 0.383868 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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