高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】取块名后出错,cad退出。
取块名后出错,cad退出。
取块名后出错,cad退出。
//get tag and tagstring of special block
//(vlb-getatts (car (entsel)))
static int vxgetatts_comd(resbuf *rb)
{
ads_name ent;
ads_name_set(pm[0]->resval.rlname, ent);
acdbobjectid entid;
acad::errorstatus es = acdbgetobjectid(entid, ent);
if (es != acad::eok)
{
acutprintf(_t("\ncann't get objid"));
return rtnorm;
}
acdbentity *pent = null;
es = acdbopenacdbentity(pent, entid, acdb::kforread);
if(es != acad::eok)
{
acutprintf(_t("\nobject is not opened!"));
return rtnorm;
}
lpctstr hande = _t("b3");
acdbhandle hdl;
pent->getacdbhandle(hdl);
tchar szhandle[17];
hdl.getintoasciibuffer(szhandle);
hande = (lpctstr)szhandle;
pent->close();
iacaddatabase idatabase;
iacadapplication iapp;
iacaddocument idoc;
iacadmodelspace imspace;
iacadobject iobject;
iacadblockreference iblkref;
idispatch *pdisp = acedgetacadwinapp()->getidispatch(true);
iapp.attachdispatch(pdisp);
pdisp = iapp.getactivedocument();
idoc.attachdispatch(pdisp);
pdisp = idoc.getmodelspace();
imspace.attachdispatch(pdisp);
iobject = (iacadobject)idoc.handletoobject(hande);
_bstr_t objname;
objname = iobject.getobjectname();
if (lstrcmpi(objname, _t("acdbblockreference")) == 0)
{
_bstr_t blkname, blkhand;
// iblkref.attachdispatch(iobject);
iblkref = (iacadblockreference)iobject;
blkname = iblkref.getname(); afxmessagebox(blkname, mb_ok); //此句显示块名后退出cad
}
return rtnorm;
}
已解决!
改为autocad::iacadobjectptr iobject;就可以了。
|