找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ObjectARX获取当前视图范围内的所有实体,用于局部选择时提前筛选

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-9-25 10:36:15 | 显示全部楼层 |阅读模式
  1. void PluginCommand::Test()
  2. {
  3.     struct resbuf sysVar;
  4.     acedGetVar(_T("SCREENSIZE"), &sysVar);
  5.     int nScreenX = (short)sysVar.resval.rpoint[0];
  6.     int nScreenY = (short)sysVar.resval.rpoint[1];
  7.     acedGetVar(_T("VIEWSIZE"), &sysVar);
  8.     double dViewSize = sysVar.resval.rreal;
  9.     acedGetVar(_T("PICKBOX"), &sysVar);
  10.     double dScale = dViewSize / nScreenY;
  11.     acutPrintf(_T("nScreenX = %d, nScreenY = %d, dViewSize = %.3f, dScale = %.3f\n"), nScreenX, nScreenY, dViewSize, dScale);
  12.     //获取view的rect
  13.     CRect viewRect;
  14.     GetClientRect(acedGetAcadDwgView()->m_hWnd, &viewRect);
  15.     //viewRect转到图纸中的点
  16.     acedDwgPoint dwgPt1, dwgPt2;
  17.     //获取视口编号
  18.     struct resbuf v;
  19.     if (acedGetVar(_T("cvport"), &v) == RTNORM)
  20.     {
  21.         int wndNum = v.resval.rint;
  22.         acedCoordFromPixelToWorld(wndNum, viewRect.TopLeft(), dwgPt1);
  23.         acedCoordFromPixelToWorld(wndNum, viewRect.BottomRight(), dwgPt2);
  24.     }
  25.     else
  26.     {
  27.         acedCoordFromPixelToWorld(viewRect.TopLeft(), dwgPt1);
  28.         acedCoordFromPixelToWorld(viewRect.BottomRight(), dwgPt2);
  29.     }
  30.     //pt1和pt2是世界坐标系下的点
  31.     AcGePoint3d ptStart = PublicFunction::TransWcs2Ucs(asPnt3d(dwgPt1));
  32.     ptStart.z = 0.0;
  33.     AcGePoint3d ptEnd = PublicFunction::TransWcs2Ucs(asPnt3d(dwgPt2));
  34.     ptEnd.z = 0.0;
  35.     ads_point p1;
  36.     ads_point_set(asDblArray(ptStart), p1);
  37.     ads_point p2;
  38.     ads_point_set(asDblArray(ptEnd), p2);
  39.     //选择该视图内的全部实体
  40.     ads_name ssname;
  41.     int ret = acedSSGet(_T("C"), p1, p2, NULL, ssname);
  42.     acedSSSetFirst(ssname, NULL);
  43.     ads_ssfree(ssname);
  44. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-27 22:27 , Processed in 0.157047 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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