设置视口中心点setViewCenter

Posted edata

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置视口中心点setViewCenter相关的知识,希望对你有一定的参考价值。

ads_point pt;
        ads_name ent,ss;
        //切换到模型空间
        acedMspace();
        if (RTNORM != acedGetPoint(NULL,_T("\n选择新的视口中心点:"),pt))
        {
            return;
        }
        acutPrintf(_T("\n拾取视口中心点(%0.4lf,%0.4lf)"),pt[X],pt[Y]);
        // 转换坐标系的标记
        struct resbuf ucs, dcs;
        ucs.restype = RTSHORT;
        ucs.resval.rint = 1;
        dcs.restype = RTSHORT;
        dcs.resval.rint = 2;        
        acedTrans(pt,&ucs,&dcs,NULL,pt);
        AcGePoint2d ptCenter=asPnt2d(pt);
        //切换到图纸空间
        acedPspace();
        if (RTNORM != acedSSGet(NULL,NULL,NULL,NULL,ss))
        {
            return;
        }
        Adesk::Int32 nLength;
        acedSSLength(ss,&nLength);
        for (Adesk::Int32 i=0;i<nLength;i++)
        {
            AcDbObjectId objId=AcDbObjectId::kNull;
            acedSSName(ss,i,ent);
            acdbGetObjectId(objId,ent);
            AcDbObjectPointer<AcDbViewport> pVp(objId,AcDb::kForWrite);
            if (Acad::eOk != pVp.openStatus() || pVp == NULL)
            {
                continue;
            }
            //pVp->setViewCenter()
            AcGePoint2d ptOld= pVp->viewCenter();
            acutPrintf(_T("\n原有视口中心点(%0.4lf,%0.4lf)"),ptOld.x,ptOld.y);
            acutPrintf(_T("\n设置视口中心点(%0.4lf,%0.4lf)"),ptCenter.x,ptCenter.y);
            pVp->setViewCenter(ptCenter);
            ptOld= pVp->viewCenter();
            acutPrintf(_T("\n结果视口中心点(%0.4lf,%0.4lf)"),ptOld.x,ptOld.y);
        }
        acedSSFree(ss);

 

以上是关于设置视口中心点setViewCenter的主要内容,如果未能解决你的问题,请参考以下文章

将元素从当前位置过渡到视口中心?

视口中的中心弹出框

css 中心绝对在视口中

动态计算图层的中心坐标、缩放和停止

zb怎么让视口有灰色的边

为啥我设置的opengl视口宽度变小了,读取像素不对齐?