几何尺寸与公差论坛------致力于产品几何量公差标准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, 05:23 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】求助:调试的问题。

求助:调试的问题。
求助:调试的问题。
这是我编的一个选取实体来生成block的一段程序,但是当调试运行到:err=acdbgetobjectid(idsel,sget);
跳出上面的find symble的 对话框,"please enter the path for acdbhdr.pdb"不知道什么意思。。。
并且编译以后,在cad中运行并不能生成图块,但是凭我的水平怎么也找不出问题了。
希望哪位大虾能帮帮我,先谢了。
#include "stdafx.h"
#include "stdarx.h"
#include "resource.h"
#include "dbsymtb.h "
#include "acedads.h"
#include "dbmain.h"
// this is command 'setlayer'
void asdkpblock()
{
bool const openerasedentity = false;
bool const openerasedrec = false;
ads_name sget;
ads_point pt;
acdbobjectid idsel;
acdbentity *entsel;
acad::errorstatus err;
int rc=1;
acdbblocktablerecord *pselrec=new acdbblocktablerecord;
pselrec->setname("firstblock");
pselrec->setorigin(acgepoint3d(0,0,0));
while(rc)
{
rc=acedentsel("\nplease select an entity:",sget,pt);
switch(rc)
{
case rtnorm:
err=acdbgetobjectid(idsel,sget);
if(err!=acad::eok)
{
acutprintf("\n invalid ads_name.");
return;
}
acutprintf("\n objectid is %s",idsel);
acdbopenacdbentity(entsel,idsel,acdb::kforread,openerasedentity);
entsel->highlight();
pselrec->appendacdbentity(entsel);
entsel->close();
acedssfree(sget);
break;
case rterror:
acutprintf("\n invalid selection.");
return;
break;
case rtcan:
acutprintf("\n selection over.");
rc=0;
break;
} //end of switch.
}
acdbdatabase *pcurdb=null;
acdbblocktable *pbtable;
pcurdb=acdbhostapplicationservices()->workingdatabase();
pcurdb->getblocktable(pbtable,acdb::kforwrite);
pbtable->add(pselrec);
pbtable->close();
pselrec->close();
}
此主题相关图片如下:
我的这个可以点选以生成块,
void test()
{
ads_name en;
ads_point pt;
int rt=1;
acad::errorstatus es;
acdbblocktable *pblocktable;
acdbhostapplicationservices()->workingdatabase()->getsymboltable(pblocktable,acdb::kforwrite);
acdbblocktablerecord *pblk=new acdbblocktablerecord;
es=pblk->setname("testblk");
es=pblk->setorigin(acgepoint3d(0,0,0));
// -------------------
while (rt)
{
rt=acedentsel("\nspecify a object:",en,pt);
switch(rt)
{
case rterror:
acutprintf("\n invalid selection.");
break;
case rtcan:
acutprintf("\n selection over.");
rt=0;
break;
case rtnorm:
acdbobjectid eid;
acdbgetobjectid(eid,en);
acdbentity *pent=null,*pclone=null;
es=acdbopenacdbentity(pent,eid,acdb::kforread);
pclone=acdbentity::cast(pent->clone());
es=pblk->appendacdbentity(eid,pclone);
pblocktable->add(eid,pblk);
pent->close();
pclone->close();
break;
}
}
// ------------------------
pblk->close();
pblocktable->close();
}
江苏昆山小城,欢迎交流
本职工作五金模具设计及加工
及cad软件开发
呵呵,谢谢,想明白是什么问题了。
还有一个问题是:当在调试模式下面,运行到acdbgetobjectid()时,会跳出一个find symble对话框,提示:"please enter the path for acdbhdr.pdb" 不知道什么意思。。。
不知各位碰到过没有。我选择的 结束 ,没有理它,但是并不影响程序的运行。如果不在调试模式下,就不会出现这个问题。
我用的是vc++6.0和acad
我也不知道,我也是半桶水,应该还没有半桶昵,
我用的也是 vc6+cad
好啊好啊。。。。
其实觉得学objectarx也不难,有帮助文档就可以啦。现在开始有整体的感觉了。
silence of happiness....
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


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

高级搜索
显示模式

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

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



所有的时间均为北京时间。 现在的时间是 01:20 PM.


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