![]() |
【转帖】how to retrieve info for ole links
how to retrieve info for ole links
how to retrieve info for ole links when you create a dwg drawing, you insert an object linked to a word document (insert->ole objects). after that, you go to edit->ole links. this linked word document will be listed in the links window. how can i get those info about ole links? thanks. hi, the simplest way is to use mfc classes coledocument and coleclientitem in your application, in odamfcapp v1.14 (ole.cpp, odamfcappdoc.h/.cpp) you can see how. thanks for your reply. but i only have v1.13. and v1.14 only in beta version, which i cannot use it in the product development. could you please show me how to do it using earlier version than v1.14, if possible? thanks. hi, functionality i referred to is available since 1.13.03. quote: originally posted by dmitry a. novikov hi, functionality i referred to is available since 1.13.03. but the latest version is "dwgdirect鈩?version 1.13.02, posted 6/24/2005". where can i get 1.13.03? quote: originally posted by xidongzhang but the latest version is "dwgdirect鈩?version 1.13.02, posted 6/24/2005". where can i get 1.13.03? never mind. the sample odamfcapp in 1.13.02 already included the ole.cpp you mentioned above. thanks dmitry. quote: originally posted by dmitry a. novikov hi, functionality i referred to is available since 1.13.03. hi dmitry, thanks for you reply. i tried the following code. but i could not get link name and path. (please see the lines between "????????????????"). any ideas for this? // create a database and load the drawing into it. oddbdatabaseptr pdb; pdb = m_svcs.readfile(strftoprocess, false, false, oda::ksharedenyno); // open the blocks table oddbblocktableptr pblocks = pdb->getblocktableid().safeopenobject(oddb::kforwrite) ; // get an iterator for the block table that skips deleted records oddbsymboltableiteratorptr pblkiter = pblocks->newiterator(); // for each block in the block table for (pblkiter->start(); ! pblkiter->done(); pblkiter->step()) { // open the block oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject(oddb::kforwrite); oddbobjectiteratorptr pentiter = pblock->newiterator(); for (; !pentiter->done(); pentiter->step()) { // get the entity in a pointer oddbentityptr pent = pentiter->objectid().safeopenobject(oddb::kforwrite); //check if entity is a ole object if (pent->iskindof(oddbole2frame::desc())) { cstring stemp; odrectangle3d rect; //oddbole2frameptr poleframe = ((oddbole2frameptr)pent); odsmartptr<oddbole2frame> poleframe = ((oddbole2frameptr)pent); odsmartptr<odoleitemhandlerimpl> poleitem = poleframe->getitemhandler(); // i can get the position of it poleframe->position(rect); stemp.format("upleft: (x=%e, y=%e, z=%e)", rect.upleft.x, rect.upleft.y, rect.upleft.z); // ?????????????????????????????????????????????????? ???????? // but neither the following lines can get ole link info (return blank strings) stemp.format("usertype: %s", (const char *)poleframe->getusertype()); stemp.format("type: %d", poleframe->gettype()); stemp.format("linkname: %s", (const char *)poleframe->getlinkname()); stemp.format("linkpath: %s", (const char *)poleframe->getlinkpath()); // nor the following lines stemp.format("usertype: %s", (const char *)poleitem->usertype()); stemp.format("type: %d", poleitem->type()); stemp.format("linkname: %s", (const char *)poleitem->linkname()); stemp.format("linkpath: %s", (const char *)poleitem->linkpath()); // ?????????????????????????????????????????????????? ???????? } } } last edited by xidongzhang; 21st november 2005 at 12:31 pmfff">. another question i modified the sample application odmfcapp, and it worked. but i could not make it works without mfc document frames support . i had built a dll for getting xrefs and rasterrefs. and now i want to add ole links support to it. i did not use and will not want to use mfc document frames. how can i make it? please, please.............................. |
所有的时间均为北京时间。 现在的时间是 02:19 AM. |