![]() |
【转帖】这样插入外部块?请大家帮帮忙看看那里错了
这样插入外部块?请大家帮帮忙看看那里错了
这样插入外部块?请大家帮帮忙看看那里错了 acdbobjectid blockid ; acdbdatabase *pdb=new acdbdatabase(adesk::kfalse); pdb->readdwgfile(name); blockid=pdb->xrefblockid(); acdbblockreference *pblkref =new acdbblockreference ; pblkref->setblocktablerecord (blockid) ; pblkref->setscalefactors(acgescale3d(scale,scale,scale)); pblkref->setposition(pt) ; pblkref->setrotation (rotation) ; acdbblocktable *pblocktable ; acdbhostapplicationservices()->workingdatabase()->getblocktable (pblocktable, acdb::kforread) ; acdbblocktablerecord *pblocktablerecord ; pblocktable->getat (acdb_model_space, pblocktablerecord,acdb::kforwrite) ; pblocktable->close () ; pblocktablerecord->appendacdbentity(pblkref); pblocktablerecord->close(); pblkref->close(); 运行的时候提示** 未定义的块 #-1 用户已被锁定 同问 我试着用一个insert()函数来插入块。但是insert()函数老是没执行成功,没返回 acad::eok 也是提示找不到块定义 你这样试试: hdr_api bool fdm_insertdwgfile(const tchar *filename,const acgepoint3d &inspt,acdbobjectid &blkrefid,const double ang,const tchar *lay) { bool state=false; tchar fullpath[128]; if(ads_findfile(filename,fullpath)==rtnorm) { acdbdatabase *pdb=new acdbdatabase(adesk::kfalse); if(pdb->readdwgfile(fullpath)==acad::eok) { if(pdb!=null) { acdbobjectid objid; if(acdbcurdwg()->insert(objid,_t("*u"),pdb)==acad::eok) { acdbobjectid referenceid=acdbobjectid::knull; acdbblockreference *preference=new acdbblockreference; preference->setblocktablerecord(objid); preference->setposition(inspt); preference->setrotation(ang); preference->setlayer(lay); if(fdm_addtomodelspace(blkrefid,preference)==acad::eok) { state=true; } else delete preference; } delete pdb; } } } return state; } //将实体加入到(模型/图纸)空间 hdr_api acad::errorstatus fdm_addtomodelspace(acdbobjectid &objid,acdbentity *pobj,bool istoms) { acdbblocktable *pblocktable; acdbblocktablerecord *pspacerecord; acad::errorstatus es; es=acdbcurdwg()->getblocktable(pblocktable,acdb::kforread); if(es==acad::eok) { if(istoms) es=pblocktable->getat(acdb_model_space, pspacerecord,acdb::kforwrite); else es=pblocktable->getat(acdb_paper_space,pspacerecord,acdb::kforwrite); if(es==acad::eok) { es=pspacerecord->appendacdbentity(objid,pobj); if(es==acad::eok) pobj->close(); pspacerecord->close(); } pblocktable->close(); } return es; } 非常感谢! |
所有的时间均为北京时间。 现在的时间是 10:29 AM. |