Acad::ErrorStatus UCS_V()
{
Acad::ErrorStatus es = Acad::eInvalidView;
bool isPaperSpace = false;
resbuf cvport;
acedGetVar(_T("CVPORT"), &cvport);
if (!acdbHostApplicationServices()->workingDatabase()->tilemode() && cvport.resval.rint == 1)
isPaperSpace = true;
AcGsView::RenderMode eMode;
AcGsView * view;
view = acgsGetGsView(cvport.resval.rint, false);
eMode = (view)? view->mode(): AcGsView::k2DOptimized;
if (!view)
{
view = acgsGetGsView(cvport.resval.rint, true);
view->setMode(eMode);
}
AcGePoint3d ptOrigin = AcGePoint3d(0.0,0.0,0.0);
acdbUcs2Wcs(asDblArray(ptOrigin),asDblArray(ptOrigin),false);
AcGeVector3d direction = (view->target() - view->position());
direction *= (1.0 / direction.length());
AcGeVector3d upVector = view->upVector();
upVector *= (1.0 / upVector.length());
AcGeVector3d xAxis = direction.crossProduct(upVector);
AcGeMatrix3d matUcs;
matUcs.setCoordSystem(ptOrigin,xAxis, upVector, direction);
es = acedSetCurrentUCS(matUcs);
if (isPaperSpace)
{
CView* pActiveView = acedGetAcadFrame()->GetActiveFrame()->GetActiveView();
CRect rect;
pActiveView->GetClientRect(&rect);
rect.InflateRect(1,0,16,0);
pActiveView->MoveWindow(rect, TRUE);
acgsSetViewParameters(cvport.resval.rint, view, false, true);
}
else
acgsSetViewParameters(cvport.resval.rint, view, true, true);
return es;
}