高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】polylines scaled and positioned incorrectly
polylines scaled and positioned incorrectly
polylines scaled and positioned incorrectly
hi
we have recently downloaded the latest version of the dwgdirect library but it has casued our code to stop working.
we are trying to load a .dxf file which contains five different types of entity, acdbline, acdbcircle, acdbarc, acdb2dpolyline, acdbtext.
we process acdbline, acdbcirle and acdbarc entities ourself and they appear to have been loaded correctly.
acdb2dpolyline and acdbtext are "drawn" by the library and we extract the data by overriding the following function
void odgigeometrysimplifier:: polylineout(odint32 nbpoints, const
dgepoint3d* pvertexlist)
however the lines we get from this function are scaled up and are in the wrong position.
does anyone know what might be causing this?
if i remove the function seteyetooutputtransform(eye2screen) the lines appear to be the correct size but are not in the correct position. they are approximately offsetted by half the height and half the width of the extent.
regards
is it possible to reproduce the problem in one of our (possibly modified) samples?
sergey slezkin
quote:
originally posted by sergey slezkin
is it possible to reproduce the problem in one of our (possibly modified) samples?
i haven't tried, which would be a good sample to use?
for example:
odamfcapp renders attached file incorrectly (or exports to dwf (or bmp) incorrectly)
or
odvectorizeex dumps geometry incorrectly.
to fix the problem we need to be able to reproduce it.
sergey slezkin
quote:
originally posted by sergey slezkin
for example:
odamfcapp renders attached file incorrectly (or exports to dwf (or bmp) incorrectly)
or
odvectorizeex dumps geometry incorrectly.
to fix the problem we need to be able to reproduce it.
i have tried using odamfcapp and it appears to load the file correctly.
what parameters/settings for vectorizing could cause this? any clues?
here is our vectorize function, just wondering if we've missed something crucial
code:
static bool vectorize(tchar *szdxf_file)
{
setregion(2);
fpoutput = stdout;
// create the vectorization context.
odgicontextfordbdatabaseptr pdwgcontext = odgicontextfordbdatabase::createobject();
// create the custom rendering device and set the output stream for the device.
odgsdeviceptr pdevice = exgssimpledevice::createobject(fpoutput, exgssimpledevice::k3ddevice);
// set the database to be vectorized.
pdwgcontext->setdatabase(pdatabase);
// prepare the device to render the active layout in this database.
pdevice = oddbgsmanager::setupactivelayoutviews(pdevice, pdwgcontext);
// set the screen size for the generated geometry.
odgsdcrect screenrect(odgsdcpoint(0, 0), odgsdcpoint(100000, 100000));
pdevice->onsize(screenrect);
// set the view to zoom to the full extents of the drawing to make sure we can "see" it all
odgsview* pview = pdevice->viewat(0);
odabstractviewpeptr pvppe(pview);
odgeboundblock3d bbox;
pvppe->viewextents(pview, bbox);
pvppe->zoomextents(pview, &bbox);
// initiate vectorization.
pdevice->update();
return true;
}
|