xinxirong 发表于 2016-4-25 10:16:48

用ads改文字内容失败?

本帖最后由 xinxirong 于 2016-4-25 10:32 编辑

BOOL chgEntDxf1(ads_name ent, wchar_t * str)   
{
struct resbuf *rbTargEnt;   // resbuf to hold ent data   
struct resbuf *rbTrav;      // resbuf to traverse linked list   
struct resbuf *tmp;
int rc;                     // Return code
wchar_t *sp2;

rbTargEnt = acdbEntGet(ent);   
if(!rbTargEnt)   
{   
    acutPrintf(_T("\nacdbEntGet失败. "));   
    return FALSE;
}   

rbTrav = rbTargEnt;

while(rbTrav)   
{   
    switch(rbTrav->restype)   
    {   
    case 1 : // 更改文字内容
      //_tcscpy( rbTrav->resval.rstring,str);   

      tmp = acutBuildList(RTSTR, str, 0);
      sp2 = rbTrav->resval.rstring;
      rbTrav->resval.rstring = tmp->resval.rstring;
      tmp->resval.rstring = sp2;
      acutRelRb(tmp);
      break;   
    }

    rbTrav = rbTrav->rbnext;   

}//while   

rc = acdbEntMod(rbTargEnt);   
if(rc != RTNORM)   
{   
    acutPrintf(_T("\n更改dxf组码1失败,可能是对象图层锁定"));   
}

//清理resbuf
if(rbTargEnt)   
{   
    acutRelRb(rbTargEnt);   
}   
return TRUE;
} 先是直接_tcscpy( rbTrav->resval.rstring,str);   改lisp值,errno系统变量为2 Invalid entity or selection set name
有人说直接改dxf1组码的值会很危险,必须新建resbuf*,但errno系统变量为101,也不知道是什么错误号。

页: [1]
查看完整版本: 用ads改文字内容失败?