![]() |
【转帖】query regarding modifying entity properties
query regarding modifying entity properties.
query regarding modifying entity properties. hi all, i have a query regarding modifying the property of entities in a drawing. the properties includes setting the color of an entity, or setting the layer of an entity, etc. i'm using the library dwg direct 1.11 for creating a mfc activex control. there are soem functions for creating of entities, also have some functions for modifying the properties of entities. the problem which i face, is when i create 50 to 70 oddbtext entities, and using a seperate function, i'm modifying the properties of them, with respect to a particular handle. the way i'm doing is, pblock = m_pdb->getmodelspaceid().safeopenobject(oddb::kforwrite) ; piter = pblock->newiterator(); for (piter->start(); !piter->done(); piter->step()) { pchildobj = piter->objectid().safeopenobject (oddb::kforwrite, true); if(pchildobj->iskindof(oddbtext::desc())) { str.format("%i64x", pchildobj->objectid().gethandle()); str.makeupper(); if (str.compare(strhandle) == 0) { ptext = oddbtext::createobject(); ptext = pchildobj; ptext->setlayer((lpcstr)strlayer, true); ptext->setcolorindex(ncolor); ptext->setthickness(nthickness); return; } } } this is the way which i'm doing now. but here comes the problem, i'm creating some oddbtext entity and setting the property for each object in a loop(in the client appln). and if the drawing is a big one(having lots of entities), then while adding 2 to 3 entities, the application crashes. i would like to know, without traversing the entire entities using the (iteratorptr), can we directly change the properties..? if there won't be case for an invalid handle.. tia thanks & regards, rajesh parameswaran rajuinnet # 20th december 2004, 03:31 am moderator join date: mar 2002 posts: 2,994 1. comparing handles (oddbhandle) is much more efficient than comparing their string representation. 2. ptext = oddbtext::createobject(); // here text object is created ptext = pchildobj; // and here newly created object is deleted and pointer is assigned another value (pchildobj) 3. if you know entity handle you need not iterate any block to get it. use oddbobjectid oddbdatabase::getoddbobjectid(oddbhandle&) based on information provided i can say nothing why your application crashes..... sergey slezkin sslezkin none ? | ? thread tools display modes linear mode search this thread rate this thread excellent good average bad terrible posting rules you may post new threads you may post replies you may post attachments you may edit your posts is on are on code is off html code is off forum jump user control panel private messages subscriptions who's online search forums forums home general topics news questions and remarks business issues industry commentary general software issues documentation issues future directions dwg libraries dwgdirect.net dwgdirect, c++ version dwgdirectx, activex version adtdirect/c3ddirect opendwg toolkit/viewkit dgn libraries dgndirect, c++ version (2.x+) dgndirect libraries (legacy 0.99xx) all times are gmt -7. the time now is 12:36 amfff">. - - - copyright ?2000 - 2009, jelsoft enterprises ltd. copyright 1998-2008 open design alliance inc. 1. comparing handles (oddbhandle) is much more efficient than comparing their string representation. 2. ptext = oddbtext::createobject(); // here text object is created ptext = pchildobj; // and here newly created object is deleted and pointer is assigned another value (pchildobj) 3. if you know entity handle you need not iterate any block to get it. use oddbobjectid oddbdatabase::getoddbobjectid(oddbhandle&) based on information provided i can say nothing why your application crashes..... sergey slezkin |
所有的时间均为北京时间。 现在的时间是 04:08 AM. |