![]() |
【转帖】not getting correct measuremen
not getting correct measurement
not getting correct measurement in reference to the query posted on 7th april 2005 ( getting the extents). as per the solution given below : ************************************************** ******* / get the drawing extents for the active view. double extsx = 0.0; double extsy = 0.0; odgsview* pview = pdevice->viewat(0); oddbextents ext; ext.addblockext(oddbblocktablerecordptr(pdb->getactivelayoutbtrid().safeopenobject()), pview->viewingmatrix()); if (ext.isvalidextents()) { odgepoint3d targ = pview->target(); odgevector3d dirfromtarg = pview->position() - targ; // set target to center of the view and keep the view direction. targ = ext.minpoint() + (ext.maxpoint() - ext.minpoint()) / 2.0; targ.transformby(pview->viewingmatrix().invert()); if(pview->isfrontclipped() || pview->isbackclipped()) { // keep distance from target to front & back planes. targ = targ.orthoproject(odgeplane(pview->target(), dirfromtarg)); } // get the extents and increase by 2% for margin around drawing. extsx = ext.maxpoint().x - ext.minpoint().x; extsy = ext.maxpoint().y - ext.minpoint().y; pview->setview(targ + dirfromtarg, targ, pview->upvector(), extsx * 1.02, extsy * 1.02); } // calculate the scale so the drawing will fit inside a 10,000 x 10,000 window. double dscale = (extsx >= extsy) ? (10000.0 / extsx) : (10000.0 / extsy); // set the drawing window to the true extents size. odgsdcrect winrect(0, static_cast<long>(extsx * dscale), 0, static_cast<long>(extsy * dscale)); pdwgvectorizedevice->onsize(winrect); ************************************************** ****** when i mplement the above solution, on scaling the width and height by 2%, the block of 100 * 100 * 100 measures 98.98 * 98.98 * 98.98, that is it reduces by 2%. on not scaling the width and height the sheet borders get clipped but the measurment is 100* 100* 100. please can anyone advice on the problem , this is urgent. thank you for the help nupur |
所有的时间均为北京时间。 现在的时间是 07:35 PM. |