几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-18, 03:46 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】有关objectarx提取autocad数据的问题

有关objectarx提取autocad数据的问题
有关objectarx提取autocad数据的问题
我想用objectarx提取现有dwg文件中的信息,如线段的长度、文字信息,等等
然后我找了下面这段程序:
public:
// - arx3_6.blocksearches1 command (do not rename)
static void arx3_6blocksearches1(void)
{
acdbdatabase extdb(adesk::kfalse); //定义一个空数据库
char *blockname;
wchar_t dwgname[134];
struct resbuf filedia, fileres;
acedgetvar(_t("filedia"), &filedia); //读入系统变量filedia之值

if(filedia.resval.rint == 0)
filedia.resval.rint = 1;

if(ads_getfiled(_t("选择图形文件"), null, _t("dwg"), 0, &fileres) == rtnorm)
{
if(fileres.restype == rtstr)
// dwgname = fileres.resval.rstring;
_tcscpy(dwgname, fileres.resval.rstring);
//strcpy(dwgname, (char *)fileres.resval.rstring);
else
return;
}
else
return;
free(fileres.resval.rstring);
//将选择的dwg文件读入extdb数据库中
// converttowchar(pstr);
// wchar_t *text = converttowchar(dwgname);
extdb.readdwgfile(dwgname);
// extdb.readdwgfile((achar *)dwgname);
//获得指向当前图形的块表指针pblocktable
acdbblocktable *pbtable; //定义块表记录指针
//获得指向extdb数据库的块表指针
extdb.getblocktable(pbtable, acdb::kforread);
//获得指向该图块的块表记录指针pblocktablerecord;
acdbblocktablerecord *pbtrecord; //定义块表记录指针

//定义遍历块表的浏览器、获得指向块表浏览器指针
acdbblocktableiterator *pbiterator;
pbtable->newiterator(pbiterator);

//利用循环结构和块表浏览器遍历块表
for(pbiterator->start(); pbiterator->done(); pbiterator->step())
{
//调用开办浏览器的成员函数getrecord获得指向开办记录的指针
pbiterator->getrecord(pbtrecord, acdb::kforread, adesk::kfalse);
pbtrecord->getname((achar *&)blockname); //得到块名
char tmp[32];
tmp[0] = *blockname;
ads_printf(_t("\n块名: %s"), blockname); //显示块名
}
delete pbiterator; //删除浏览器对象
//pbtrecord->close();
pbtable->close();
}
} ;
但是它始终运行不到for(pbiterator->start(); pbiterator->done(); pbiterator->step())这个循环里面去,敢情是没有取到数据?
请高手帮忙改进一下程序,或者提供一个明确一点的研究方向。小妹先在这谢过了
这段程序可以只能取到块,取不到你要的文字线段之类的东西,,实体都存在块表的模型空间里面,,呵呵,,arxdbg挺好的,你需要的里面全都可以实现,在arx的sample里面,可以研究一下,那个研究透彻,arx就基本上可以搞定了
//定义遍历块表的浏览器、获得指向块表浏览器指针
acdbblocktableiterator *pbiterator;
pbtable->newiterator(pbiterator);
我觉得这里有点问题,不应该是那样子的;
我认为是这样:
acdbblocktablerecord *px;
acdbblocktablerecorditerator *precod;
px->newiterator(precod);
if this article is useful to you ,please let me know ,your reply is my power!
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 04:19 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多