几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】last saved view settings (http://www.dimcax.com/hust/showthread.php?t=16998)

yang686526 2009-05-06 04:34 PM

【转帖】last saved view settings
 
last saved view settings
last saved view settings
hi all,
in autocad, if you zoom in on a drawing to a specified area, and save the drawing and exit autocad. the next time you open autocad and this drawing, it positions the view exactly where you left off at.
are these settings possible to get ?
cheers
jason
layout has viewports (at least overall viewport). view settings (camera position, target, height etc.) are stored in viewports.
sslezkin,
thank you for your response, according to the documentation :
getviewportarray returns an array of oddbobjectids of all the oddbviewports that exist in the paper space layout. the first id in the list will be the overall paper space viewport. if the list returned is empty, then this layout is model space or has never been switched to (activated).
so in the case of model space, how do i get the the last saved position.
i tested this in autocad, opened a drawing in model space, zoomed into a specific region, and saved the drawing. upon opening autocad, the view is exactly where left off. i also tested in odmfcapp and it has the same behaviour (so i know it can be located :-) ).
i will keep investigating and see if i can work it out. but if you could let me know, that would be great.
yours sincerely,
jason
for model space view inforamtion is in oddbviewporttablerecords. active one has name "*active". note that where may be multiple *active model viewports.
code:
oddbviewporttableptr pvt = pdb->getviewporttableid().safeopenobject();
oddbsymboltableiteratorptr pvpiter = pvt->newiterator();
for ( ; !pvpiter->done(); pvpiter->step())
{
oddbviewporttablerecordptr pvp = pvpiter->getrecordid().openobject();
if (!pvp.isnull() && oddbsymutil::isviewportactivename(pvp->getname()))
{
// use this interface for convenience to have the same code processing
// oddbviewport (ps viewports) and oddbviewporttablerecord (ms viewports)
odabstractviewpeptr pview = pvp;
// get the data from pview
...
}


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