天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 177|回复: 0

ARX中坐标转换问题

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-5-31 07:25:53 | 显示全部楼层 |阅读模式
  1. static void BasicTramsforms(AcDbEntity* pEnt)
  2. {
  3.         //最近做一个ARX项目,要求在三维空间的不同视角下用鼠标拖动绘制或布置实体
  4.         //主要用到以下函数或方法:
  5.        
  6. /*
  7. acedGetCurrentUCS(AcGeMatrixed&);              //获取当前UCS转换矩阵,通过这个矩阵可以将UCS转换为WCS
  8. AcGeMatrix::inverse();                         //获取逆向转换矩阵。
  9. AcGePoint3d::transformBy(AcGeMatrixed&);       //根据矩阵,转换点坐标。
  10. AcDbEntity::transformBy(AcGeMatrixed&);        //对实体进行矩阵转换。
  11. AcDbExtents::transformBy(AcGeMatrixed&);       //对范围进行矩阵转换。
  12. */
  13.         //绘制时视角为当前UCS的XY轴平面。用鼠标拖动点选的坐标肯定为UCS坐标,直接用这个坐标绘制,不用进行转换,绘制好后转换一次就好。代码如下:
  14.         AcGeMatrix3d mat;
  15.         acedGetCurrentUCS(mat);
  16.         pEnt->transformBy(mat);
  17.         //如果要用鼠标拖动实体:
  18.         AcGePoint3d oldPt;    //原来所在位置   如果是WCS要转换为UCS
  19.         AcGePoint3d newPt;  //现在所在位置   当前鼠标所在位置,肯定是UCS
  20.         oldPt.transformBy(mat);
  21.         newPt.transformBy(mat);
  22.         AcGeMatrix3d offset采用mat;
  23.         offset采用mat.setToIdentity();
  24.         offset采用mat(0, 3) = newPt.x - oldPt.x;
  25.         offset采用mat(1, 3) = newPt.y - oldPt.y;
  26.         offset采用mat(2, 3) = newPt.z - oldPt.z;
  27.         pEnt->transformBy(mat);
  28.         //如果要判断当前点在某个实体XY轴平面范围内:
  29.         AcGePoint3d insertPt;   //要判断的点
  30.         AcGeMatrix3d mat2;
  31.         acedGetCurrentUCS(mat2);
  32.         AcDbExtents extents;
  33.         pEnt->getGeomExtents(extents);    //pEnt为实体指针。
  34.         extents.transformBy(mat2.inverse());    //获取的范围为WCS,要转换为UCS。注意 mat.inverse()只返回值,不改变mat本身。
  35.         if (insertPt[X] >= extents.minPoint().x && insertPt[X] <= extents.maxPoint().x &&insertPt[Y] >= extents.minPoint().y && insertPt[Y] <= extents.maxPoint().y)
  36.         {
  37.                 //.....
  38.         }
  39. }
复制代码

 

 

 

 

ARX中坐标转换问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 09:34 , Processed in 0.128806 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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