几何尺寸与公差论坛------致力于产品几何量公差标准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 convert from wcs to screen poin (http://www.dimcax.com/hust/showthread.php?t=16625)

yang686526 2009-05-06 02:22 PM

【转帖】how to convert from wcs to screen poin
 
how to convert from wcs to screen point?
how to convert from wcs to screen point?
dear all!
i have problem with dwg file that have model space and paper space. i get mtext entity and get bounding points of this entity. how to transform coordinate of these points (wcs) to screen coordinate system and vise versa? there are different ways to transform coordinate depend on the entity is in model space or paper space?
code:
odgepoint3darray points;
oddbdatabaseptr pdb = getdocument()->m_pdb;
oddbblocktableptr pblocktable = pdb->getblocktableid().safeopenobject(oddb::kforwrite);
oddbsymboltableiteratorptr pblockiter = pblocktable->newiterator();
while (!pblockiter->done())
{
oddbblocktablerecordptr pblocktablerecord = pblockiter->getrecord(oddb::kforwrite);
oddbobjectiteratorptr pentiter = pblocktablerecord->newiterator();
while (!pentiter->done())
{
oddbentityptr pent = pentiter->entity(oddb::kforwrite);
if (pent->iskindof(oddbmtext::desc()))
{
ptext->getboundingpoints(pointsfff">);
}
pentiter->step();
}
pblockiter->step();
}please help! thanks!
trang
in general it's a complex problem. an entity may reside not directly on model or paper space but in a block which is inserted into another block and so on.
for nested blocks you need to honor transforms of block references chain.
for model space wcs to screen transformation is defined by active oddbviewporttablerecord data.
for paper space - by oddbviewports data.
the simpest way is to use dd vectorization framework.
examples of its usage are odvectorizeex and exports (dwf, svg, pdf) which use dd vectorization to get the geometry.
if you already use dd vectorization in your application search odamfcapp sample for calls to getgrippoints() function.
entity returns coordinates of grip points in its space and odamfcapp displays them on screen.
sergey slezkin


所有的时间均为北京时间。 现在的时间是 04:04 PM.