几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】odgsmodel, invalidate90 (http://www.dimcax.com/hust/showthread.php?t=17731)

yang686526 2009-05-06 08:57 PM

【转帖】odgsmodel, invalidate90
 
odgsmodel, invalidate() ...
odgsmodel, invalidate() ...
hello,
in my application i use the following code to paint a line as selected:
oddblineptr pline1;
pline1 = oddbline::cast(idline.safeopenobject(oddb::kforwri te));
eresult = pline1->setlinetype("acad_iso02w100");
eresult = pline1->setlinetypescale(0.05);
eresult = pline1->setcolorindex(6); // color magenta
//getactiveview()->invalidate();
redrawwindow();
if gsmodel is enabled through
enablegsmodel(1);
then i need to include
getactiveview()->invalidate()
in order to see the changes made to the line, but if gsmodel is not
enabled then getactiveview()->invalidate() is not needed.
is this a proper behaviour?, which is the reason of this?.
thanks in advance.
hello, i need to reactivate this thread:
would anybody be so kind to make a brief description of odgsmodel role?.
my application seems to be slower when upgraded to dd210 than when it was builded over dd111.
is there another "gsmodel related" code besides enablegsmodel?.
thanks in advance.
hello,
in order to clear which is my problem, these are the facts:
- when adding, deleting or selecting an entity, when my application was
builded with dd111 i only needed to use redrawwindow() to see changes
displayed.
- when building with dd210, enabling double buffering and enabling gsmodel,
i am only able to see change in entities displayed correctly if i call
odgsview::invalidate() or odgsdevice::invalidate() before redrawwindow(),
which causes a repainting that is really awful.
it seems as in dd111 entities invalidate themselves and in dd210 this doesn't happen the same way.
any ideas?.
thanks.
hi,
you have to call odgsview::invalidate() or odgsdevice::invalidate() to work around bug in dd gs frame buffer caching/invalidation. it does not require too much extra calculations against dd111 (where frame buffer caching was not implemented).
odgsmodel - is interface for implementation-specific device-dependent geometry cache. this geometry cache is being built during first executing odgsdevice::update() and receives notifications (onadded(), onerased(), onmodified()) to rebuild cache of modified parts of scene.


所有的时间均为北京时间。 现在的时间是 11:39 AM.