当前位置:网站首页>CAD ARX gets the current viewport settings

CAD ARX gets the current viewport settings

2022-07-06 07:57:00 zxt_ net

AcDbViewTableRecord GetCurrentView()
{
AcDbViewTableRecord view;
struct resbuf rb;
struct resbuf wcs, ucs, dcs; // Coordinate system mark used when converting coordinates

wcs.restype = RTSHORT;
wcs.resval.rint = 0;
ucs.restype = RTSHORT;
ucs.resval.rint = 1;
dcs.restype = RTSHORT;
dcs.resval.rint = 2;

// Get the current viewport's “ see ” Pattern
acedGetVar(“VIEWMODE”, &rb);
view.setPerspectiveEnabled(rb.resval.rint & 1);
view.setFrontClipEnabled(rb.resval.rint & 2);
view.setBackClipEnabled(rb.resval.rint & 4);
view.setFrontClipAtEye(!(rb.resval.rint & 16));

// The center point of the view in the current viewport (UCS coordinate )
acedGetVar(“VIEWCTR”, &rb);
acedTrans(rb.resval.rpoint, &ucs, &dcs, 0, rb.resval.rpoint);
view.setCenterPoint(AcGePoint2d(rb.resval.rpoint[X], 
   rb.resval.rpoint[Y]));

// The focal length of the lens in the perspective view of the current viewport ( In millimetres )
acedGetVar(“LENSLENGTH”, &rb);
view.setLensLength(rb.resval.rreal);

// The position of the target point in the current viewport ( With UCS Coordinate representation )
acedGetVar(“TARGET”, &rb);
acedTrans(rb.resval.rpoint, &ucs, &wcs, 0, rb.resval.rpoint);
view.setTarget(AcGePoint3d(rb.resval.rpoint[X], 
   rb.resval.rpoint[Y], rb.resval.rpoint[Z]));

// The viewing direction of the current viewport (UCS)
acedGetVar(“VIEWDIR”, &rb);
acedTrans(rb.resval.rpoint, &ucs, &wcs, 1, rb.resval.rpoint);
view.setViewDirection(AcGeVector3d(rb.resval.rpoint[X], 
   rb.resval.rpoint[Y], rb.resval.rpoint[Z]));

// View height of the current viewport ( Graphic units )
acedGetVar(“VIEWSIZE”, &rb);
view.setHeight(rb.resval.rreal);
double height = rb.resval.rreal;

// The size of the current viewport in pixels (X and Y value )
acedGetVar(“SCREENSIZE”, &rb);
view.setWidth(rb.resval.rpoint[X] / rb.resval.rpoint[Y] * height);

// The view twist angle of the current viewport
acedGetVar(“VIEWTWIST”, &rb);
view.setViewTwist(rb.resval.rreal);

// Make the model tab or the last Layout tab current
acedGetVar(“TILEMODE”, &rb);
int tileMode = rb.resval.rint;
// Set the identification code of the current viewport
acedGetVar(“CVPORT”, &rb);
int cvport = rb.resval.rint;

// Is it a view of model space
bool paperspace = ((tileMode == 0) && (cvport == 1)) ? true : false;
view.setIsPaperspaceView(paperspace);

if (!paperspace)
{
   // The offset of the front clipping plane from the target plane in the current viewport
   acedGetVar(“FRONTZ”, &rb);
   view.setFrontClipDistance(rb.resval.rreal);
  
   // Get the offset value from the back clipping plane of the current viewport to the target plane
   acedGetVar(“BACKZ”, &rb);
   view.setBackClipDistance(rb.resval.rreal);
}
else
{
   view.setFrontClipDistance(0.0);
   view.setBackClipDistance(0.0);

return view;
}

原网站

版权声明
本文为[zxt_ net]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060751201137.html