![]() |
【转帖】[arx]为什么我的自定义实体类加入对象字典 出错
[arx]为什么我的自定义实体类加入对象字典 出错
[arx]为什么我的自定义实体类加入对象字典 出错 // this is command 'test' void cascotest() { acutprintf("cascocentity was on the drawing.\n"); acdbblocktable *pblktbl; acdbhostapplicationservices()->workingdatabase() ->getblocktable(pblktbl, acdb::kforread); acdbblocktablerecord *ptblrcd; pblktbl->getat(acdb_model_space, ptblrcd, acdb::kforwrite); pblktbl->close(); cascocentity *pmyent = new cascocentity();//自定义实体类cascocentity : public acdbentity ptblrcd->appendacdbentity(objectid, pmyent); objectid_a = objectid; const acgepoint3d start(pmyent->center()); //pmyent->close(); cascocentity *pmysecondent = new cascocentity("drawing0.dwg", "two_rect"); //自定义实体类cascocentity : public acdbentity ptblrcd->appendacdbentity(objectid, pmysecondent); objectid_b = objectid; const acgepoint3d end(pmysecondent->center()); //pmysecondent->close(); acdbline *pline = new acdbline(start, end); ptblrcd->appendacdbentity(objectid, pline); pline->close(); acdbdictionary *pnamedobj; acdbdictionary *pnamelist; acdbhostapplicationservices()->workingdatabase() ->getnamedobjectsdictionary(pnamedobj, acdb::kforwrite); if (pnamedobj->getat("asdk_dict", (acdbobject*&)pnamelist, acdb::kforwrite) == acad::ekeynotfound) { pnamelist = new acdbdictionary; acdbobjectid dictid; pnamedobj->setat("asdk_dict", pnamelist, dictid); } pnamedobj->close(); cascoobjecttonotify *pobj = new cascoobjecttonotify(); //自定义实体类cascoobjecttonotify : public acdbobject pobj->elinkage(objectid, true); acdbobjectid objid; if ((pnamelist->getat("object_to_notify_a", objid)) == acad::ekeynotfound) { pnamelist->setat("object_to_notify_a", pobj, objid); pobj->close(); } else { delete pobj; ads_printf("object_to_notify_a already exists\n"); } pmyent->addpersistentreactor(objectid_a); //原来是objid,关键objid为空 pmyent->close(); pobj = new cascoobjecttonotify(); pobj->elinkage(objectid, false); if ((pnamelist->getat("object_to_notify_b", objid)) == acad::ekeynotfound) { pnamelist->setat("object_to_notify_b", pobj, objid); pobj->close(); } else { delete pobj; ads_printf("object_to_notify_b already exists\n"); } pmysecondent->addpersistentreactor(objectid_b); //原来是objid pmysecondent->close(); pnamelist->close(); ptblrcd->close(); } |
| 所有的时间均为北京时间。 现在的时间是 04:14 PM. |