几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】how to obtain model information 9high level entity0 (http://www.dimcax.com/hust/showthread.php?t=16733)

yang686526 2009-05-06 03:00 PM

【转帖】how to obtain model information 9high level entity0
 
how to obtain model information (high level entity)
how to obtain model information (high level entity)
hello,
i am working on an application that basically reads a dwg file and displays it. i have implemented all my custom drawing (gdi + opengl) functions by overriding the shell and mesh functions from the geometry classes.
i have been working on some of kind of tree structure which will allow me show/hide objects. currently, i am being able to build such tree, but composed by low level entities (like faces) identified by numbers. however when i load a complex structure this just doesnt help at all.
so, my question is: is there any way to access high level entity attributes/information (model name, assembly name, part name, color, tolerance) for the current low level entity (face, edge, etc.) being drawn during a call to mesh, shell, polylinedc, etc.
thanks,
luis
figured out the problem
thank you all for reading my post, but i have already figured it out.
for anybody out there that wants to know how to arrange entities, into some kind of high level hierarchy, the way to go is to group them by layer. this may probably seem obvious, but believe me, it is not if you are new to opendwg.
after calling update, and when the framework calls any function to draw (like mesh, or shell, or polylinedc, etc.), you can use the following piece of code to obtain the names of layer and entity:
// get the layer of the entity being drawn
oddbentity * pent = (oddbentity *)m_pdrawable;
strcpy(szlayername, pent->layer());
sprintf(szobjectname, "layer [%ld]: %s", nlayerno, szlayername);
// get the type of entity being drawn
sprintf(szobjectname, "%s-%ld", pent->isa()->name(), m_nobjectno);
i hope this helps somebody!
regards,
luis


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