几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   DirectDWG (http://www.dimcax.com/hust/forumdisplay.php?f=89)
-   -   【转帖】query regarding modifying entity properties (http://www.dimcax.com/hust/showthread.php?t=18273)

yang686526 2009-05-07 12:04 PM

【转帖】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.