can't see inserted block
can't see inserted block
this code seems to works fine, because it don't hang (and this is really a success) but i can't see the inserted block in the output file. i can't try the sample application, because they does'nt works with borland c++ builder .
input.dwg contains only one rectangle
block.dwg contains only one circle
output.dwg should contains boths... but the circle is'nt there!
any help???
thanks
//---------------------
// header files...
//---------------------
class myservices : public exsystemservices, public exhostappservices
{
protected:
using exsystemservices

erator new;
using exsystemservices

erator delete;
};
using namespace std;
//---------------------
void __fastcall tfrmmainodtest::button1click(tobject *sender)
{
odrxobjectimpl<myservices> svcs;
odinitialize(&svcs);
oddbdatabaseptr pdb1;
oddbdatabaseptr pdb2;
pdb1 = svcs.readfile("input.dwg");
pdb2 = svcs.readfile("myblock.dwg");
//--------------------------
pdb1->insert("myblock",pdb2,true);
//--------------------------
odwrfilebuf fb("output.dwg");
pdb1->writefile(&fb, pdb1->originalfiletype(), pdb1->originalfileversion(),true);
pdb1.release();
pdb2.release();
oduninitialize();
showmessage("ok");
}
...finally i have found the way to make it works:
oddbobjectid blockid=pdb1->insert("myblock",pdb2,true);
oddbobjectid blocktableid = pdb1->getblocktableid();
oddbsymboltableptr pblocktable = blocktableid.safeopenobject();
oddbblocktablerecordptr pmainblock = pblocktable->getat("*model_space",oddb::kforwrite); // maybe there's something better...
oddbobjectid newblockid=addinsert(pdb1,pmainblock,blockid,1.0,1 .0);
i post this solution, to help other users that could had have the same problem. i would suggest opendesign to work a little more on the help file, because it is very hard to find informations, even when related to simple problems like this one. maybe it should be expanded the faq with the most import "how to": how to insert a block, how to convert to dxf, how to display the drawing, how to print...
thanks.
stefano gemma
last edited by stegemma; 18th may 2004 at 03:11 amfff">.
i saw your first post but i misunderstood it. i thought that the block was not added to the block table and failed to reproduce it. surely to get it visible in the drawing you need to add oddbinsert entity to model space or somethere else.
minor comments to your code:
to get model space block name you can use oddbsymutil::blockmodelspacename().
to get model space id you can use oddbdatabase::getmodelspaceid().
sergey slezkin
quote:
originally posted by sergey slezkin
i saw your first post but i misunderstood it. i thought that the block was not added to the block table and failed to reproduce it. surely to get it visible in the drawing you need to add oddbinsert entity to model space or somethere else.
minor comments to your code:
to get model space block name you can use oddbsymutil::blockmodelspacename().
to get model space id you can use oddbdatabase::getmodelspaceid().
sorry, my english isn't very good, so i'm not explained very well. my mistake was that i've read about insert as it was the command "insert" in autocad, that insert the block directly in the drawing. luckly, i've worked in the past with the dxf format, so i've found the right way by examining some dxf file with inserted blocks.
thanks for the answer.
ciao!!!
stefano gemma