高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】odvectorizeex and clipping
odvectorizeex and clipping
odvectorizeex and clipping
hello everybody,
i ran the odvectorizeex sample onto the attached rect1.dwg and rect2.dwg. the dump files rect1.txt and rect2.txt are attached too.
in the rect2.dwg parperspace, the polyline in the the viewport is visible.
so this polyline is dumped in rect2.txt.
in the rect1.dwg parperspace, the polyline in the viewport is outside the screen in autocad. so the polyline is not dumped in rect1.txt although it is in the file.
my question is how to modify odvectorizeex to dump the polyline from rect1.dwg ?
attached files
you may e.g. zoom to extemts before callig setupactivelayouts. like this:
code:
oddbobjectid id = pdb->activeviewportid();
if (!id.isnull())
{
pdb->startundorecord();
oddbobjectptr pvp = id.safeopenobject(oddb::kforwrite);
odabstractviewpeptr pavp(pvp);
pavp->zoomextents(pvp);
}
vladimir
your piece of code seems to solve my clipping problem
but it raises another clipping problem too
when i run odvectorizeex, without your piece of code, on the attached dbg2.dwg, i get the dump dbg2.txt. if i add your code, i get dbg2_wvk.txt.
if your compare both files, you will see that there is an horizontal yellow line
vertex[0] . . . . . . . . [131,3 102,6 0,0]
vertex[1] . . . . . . . . [134,7 102,6 0,0]
in dbg2_wvk.txt that should not be rendered.
some coordinates are not exactly the same too (102.6 instead of 102.4).
could you explain me what is happening and how to solve it ?
thank you.
attached files (574.0 kb, 1 views)
(21.3 kb, 1 views)
(25.2 kb, 2 views)
when i open the file in autocad i see the yellow line.
unfortunately we currently have no developer's guide in our documentaion. i'd recommend you to read objectarx documentation (developer's guide) to better understand dwg database structure. it can be freely downloaded from autodesk site.
vladimir
i uploaded a jpeg showing that a rendering of what is dumped by odvectorizeex (with your piece of code) is different from an autocad rendering.
attached images (28.7 kb, 5 views)
the clipping problem is caused by a limitation in odgsbasevectorizeview::windowaspect()
it assumes that viewport size cannot be less than 1x1 pixel (device unit).
if viewport size is smaller, windowaspect is assumed to be 1, which causes wrong clipping border to be set.
in the file you test, after zooming to extents, viewport size becomes relatively small. (you may zoom to extents in autocad to see that).
to get correct results you may e.g. increase output resolution in odvectorizeex.cpp,156
code:
odgsdcrect screenrect(odgsdcpoint(0, 0), odgsdcpoint(10000, 10000));
pdevice->onsize(screenrect);
vladimir
you solved it !
|