![]() |
【转帖】怎样插入文件块?
怎样插入文件块?
怎样插入文件块? 怎样插入文件块? 我用下面的代码插不进去 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() 这代码我是在人家那里看到的,怎么不行呢? //读test.dwg文件以mydrawing块名插入打开文件 void readdwgfile() { acdbdatabase *pdwg =new acdbdatabase (adesk::kfalse) ; pdwg->readdwgfile(l"c:\\test.dwg"); acdbobjectid blockid ; acad::errorstatus es = acdbhostapplicationservices()->workingdatabase()->insert(blockid, l"mydrawing", pdwg, adesk::kfalse) ; if ( es != acad::eok ) acutprintf (l"\n插入块错误.") ; delete pdwg ; //上面创建了“名字是myfile的块定义acdbblocktablerecord”, //objectid是blockid,接着就可以实例acdbblockreference对象, //创建insert实体了。 acdbblockreference *pblkref =new acdbblockreference(); pblkref->setblocktablerecord (blockid) ; //---- 设置插入点,旋转角度,比例等等 pblkref->setposition(acgepoint3d(0.0,0.0,0.0)) ; pblkref->setrotation(0.0); //....最后把上面的块索引对象添加到数据库里面 //获得模型空间块表记录 acdbblocktable *pblocktable; acdbhostapplicationservices()->workingdatabase()->getblocktable(pblocktable,acdb::kforread); acdbblocktablerecord *pblocktablerecord; pblocktable->getat(acdb_model_space,pblocktablerecord,acdb::kforwrite); pblocktable->close(); //----- 添加块引用pblkref实体到模型空间 acdbobjectid newentid ; pblocktablerecord->appendacdbentity(newentid, pblkref); pblocktablerecord->close(); pblkref->close(); } |
| 所有的时间均为北京时间。 现在的时间是 11:33 PM. |