找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 149|回复: 0

ObjectArx设置图面视图

[复制链接]

1

主题

0

回帖

37

积分

管理员

积分
37
发表于 2024-5-4 19:19:06 | 显示全部楼层 |阅读模式
  1. void SetView(AcGePoint2d Pt1, AcGePoint2d Pt2, double ex采用ratio)
  2. {
  3.         AcGePoint2d CenterPt;
  4.         if ((fabs(Pt1.x - Pt2.x) < 1e-6) || (fabs(Pt1.y - Pt2.y) < 1e-6))
  5.         {
  6.                 return;
  7.         }
  8.                
  9.         //确保两个坐标点分别为左上角和右下角
  10.         if (Pt1.x>Pt2.x)
  11.         {
  12.                 double tmp;
  13.                 tmp = Pt1.x;
  14.                 Pt1.x = Pt2.x;
  15.                 Pt2.x = tmp;
  16.         }
  17.         if (Pt2.y>Pt1.y)
  18.         {
  19.                 double tmp;
  20.                 tmp = Pt1.y;
  21.                 Pt1.y = Pt2.y;
  22.                 Pt2.y = tmp;
  23.         }
  24.         //获取当前DwgView的尺寸
  25.         CRect CADrect;
  26.         acedGetAcadDwgView()->GetClientRect(&CADrect);
  27.         double width, height, ratio;
  28.         ratio = (double)(CADrect.right - CADrect.left) / (double)(CADrect.bottom - CADrect.top);
  29.         if (fabs(ratio) < 1e-6)
  30.         {
  31.                 return;
  32.         }
  33.         if ((Pt2.x - Pt1.x) / (Pt1.y - Pt2.y) > ratio)
  34.         {
  35.                 width = Pt2.x - Pt1.x;
  36.                 height = width / ratio;
  37.         }
  38.         else
  39.         {
  40.                 height = Pt1.y - Pt2.y;
  41.                 width = height * ratio;
  42.         }
  43.         //设置当前视图中心点
  44.         CenterPt.x = (Pt1.x + Pt2.x) / 2;
  45.         CenterPt.y = (Pt1.y + Pt2.y) / 2;
  46.         //改变当前视图
  47.         AcDbViewTableRecord pVwRec;
  48.         pVwRec.setCenterPoint(CenterPt);
  49.         pVwRec.setWidth(width * ex采用ratio);
  50.         pVwRec.setHeight(height * ex采用ratio);
  51.         acedSetCurrentView(&pVwRec, NULL);
  52. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-6 14:47 , Processed in 0.141306 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表