返回介绍

根据一个打印比例,缩放当前视区显示范围

发布于 2023-08-09 23:10:34 字数 1363 浏览 0 评论 0 收藏 0

js代码实现如下:

// 打印比例.这里默认取2,表示图纸上1个毫米代表实际中的0.5米.
            var scale= 0.5;            
            // 因为所有图纸都约定好,1个绘图单位代表实际中的1毫米.
            // 所以图纸1个毫米也代表scale * 1000.0 个绘图单位。           
             var salce2 = scale * 1000.0;            
        // 控件的宽.就是控件将来打印出来后,在图纸上的宽长度,单位是图纸上的毫米            
             var ocxwidth = 200;           
             // 得到当前视区坐标
  
            var mxOcx = document.all.item("MxDrawXCtrl");
            var ret = mxOcx.Call("Mx_GetViewCoord", "");            
            if (ret.AtString(0) != "Ok")
            {               
             return;
            }         

            // 计算出当前显示的视区中心坐标.
            var w = ret.AtDouble(3) - ret.AtDouble(1);
            var h = ret.AtDouble(4) - ret.AtDouble(2);

            var cenx = ret.AtDouble(1) + w / 2.0;
            var ceny = ret.AtDouble(2) + h / 2.0;           
             // 根据比例,算出控件新的显示范围.以前的中心显示位置不变.
            // 控件打印时显示的宽度,绘图单位.
            var rw = ocxwidth * salce2;
            var rh = h / w * ocxwidth;            
            // 新的显示范围坐标。           
             var lx = cenx - rw / 2.0;
            var ly = ceny - rh / 2.0;
            var rx = cenx + rw / 2.0;
            var ry = ceny + rh / 2.0;

            mxOcx.ZoomWindow(lx,ly,rx,ry);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文