找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[分享] 继续提供ARX开发实用的函数代码

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-23 22:49:46 | 显示全部楼层 |阅读模式
  1. 充填你的函数库,函数如下:
  2. [pcode=cpp,true]
  3. static AcGePoint3d        midPoint(const AcGePoint3d& pt1, const AcGePoint3d& pt2);
  4. static AcGePoint3d        wcsToUcs(const AcGePoint3d& pt);
  5. static AcGeVector3d        wcsToUcs(const AcGeVector3d& vec);
  6. static void                        wcsToUcs(AcGePoint3dArray& ptArray);
  7. static void                        wcsToUcs(AcGePoint2dArray& ptArray);
  8. static AcGePoint3d        ucsToWcs(const AcGePoint3d& pt);
  9. static AcGePoint2d  ucsToWcs(const AcGePoint2d& pt);
  10. static AcGeVector3d        ucsToWcs(const AcGeVector3d& vec);
  11. static void                        ucsToWcs(AcGePoint3dArray& ptArray);
  12. static void                        ucsToWcs(AcGePoint2dArray& ptArray);
  13. static AcGePoint3d        ecsToWcs(const AcGePoint3d& pt, const AcGeVector3d& entNormal);
  14. static AcGeVector3d        ecsToWcs(const AcGeVector3d& vec, const AcGeVector3d& entNormal);
  15. static AcGePoint2d        ucsToDcs(const AcGePoint3d& pt);
  16. static AcGePoint3d        dcsToUcs(const AcGePoint2d& pt);
  17. [/pcode]
  18. 以下内容需要积分高于 100 才可浏览
  19. [sell=10]
  20. [pcode=cpp,true]
  21. /****************************************************************************
  22. **
  23. **        XdGeUtils::midpoint
  24. **
  25. **        **jma
  26. **
  27. *************************************/
  28. AcGePoint3d
  29. XdGeUtils::midPoint(const AcGePoint3d& pt1, const AcGePoint3d& pt2)
  30. {
  31.         AcGePoint3d newPt;
  32.         newPt.x =(pt1.x + pt2.x) / 2.0;
  33.         newPt.y =(pt1.y + pt2.y) / 2.0;
  34.         newPt.z =(pt1.z + pt2.z) / 2.0;
  35.         return(newPt);
  36. }
  37. /****************************************************************************
  38. **
  39. **        XdGeUtils::wcsToUcs
  40. **
  41. **        **jma
  42. **
  43. *************************************/
  44. AcGePoint3d
  45. XdGeUtils::wcsToUcs(const AcGePoint3d& pt)
  46. {
  47.         AcGeMatrix3d m;
  48.       
  49.         XdDbUtils::getWcsToUcsMatrix(m);
  50.         return(m * pt);
  51. }
  52. /****************************************************************************
  53. **
  54. **        XdGeUtils::wcsToUcs
  55. **
  56. **        **jma
  57. **
  58. *************************************/
  59. AcGeVector3d
  60. XdGeUtils::wcsToUcs(const AcGeVector3d& vec)
  61. {
  62.         AcGeMatrix3d m;
  63.       
  64.         XdDbUtils::getWcsToUcsMatrix(m);
  65.       
  66.         AcGeVector3d newv = vec;
  67.         newv.transformBy(m);
  68.       
  69.         return(newv);
  70. }
  71. /****************************************************************************
  72. **
  73. **        XdGeUtils::wcsToUcs
  74. **
  75. **        **jma
  76. **
  77. *************************************/
  78. void
  79. XdGeUtils::wcsToUcs(AcGePoint3dArray& ptArray)
  80. {
  81.         AcGeMatrix3d m;
  82.         XdDbUtils::getWcsToUcsMatrix(m);
  83.       
  84.         int len = ptArray.length();
  85.         for (int i=0; i<len; i++)
  86.                 ptArray = m * ptArray;
  87. }
  88. void
  89. XdGeUtils::wcsToUcs(AcGePoint2dArray& ptArray)
  90. {
  91.         AcGeMatrix3d m;
  92.         XdDbUtils::getWcsToUcsMatrix(m);
  93.         AcGePoint3dArray pt3d;
  94.         trans2DTo3D(&ptArray,pt3d);
  95.       
  96.         int len = pt3d.length();
  97.         for (int i=0; i<len; i++)
  98.                 pt3d = m * pt3d;
  99.         trans3DTo2D(&pt3d,ptArray);
  100. }
  101. /****************************************************************************
  102. **
  103. **        XdGeUtils::ucsToWcs
  104. **
  105. **        **jma
  106. **
  107. *************************************/
  108. AcGePoint3d
  109. XdGeUtils::ucsToWcs(const AcGePoint3d& pt)
  110. {
  111.         AcGeMatrix3d m;
  112.       
  113.         XdDbUtils::getUcsToWcsMatrix(m);
  114.         return(m * pt);
  115. }
  116. AcGePoint2d
  117. XdGeUtils::ucsToWcs(const AcGePoint2d& pt)
  118. {
  119.         AcGeMatrix3d m;
  120.         AcGePoint3d temp;
  121.         temp.set(pt.x,pt.y,0.0);
  122.         XdDbUtils::getUcsToWcsMatrix(m);
  123.         temp.transformBy(m);
  124.         AcGePoint2d p(temp.x,temp.y);
  125.         return(p);
  126. }
  127. /****************************************************************************
  128. **
  129. **        XdGeUtils::ucsToWcs
  130. **
  131. **        **jma
  132. **
  133. *************************************/
  134. AcGeVector3d
  135. XdGeUtils::ucsToWcs(const AcGeVector3d& vec)
  136. {
  137.         AcGeMatrix3d m;
  138.       
  139.         XdDbUtils::getUcsToWcsMatrix(m);
  140.       
  141.         AcGeVector3d newv = vec;
  142.         newv.transformBy(m);
  143.       
  144.         return(newv);
  145. }
  146. /****************************************************************************
  147. **
  148. **        XdGeUtils::ucsToWcs
  149. **
  150. **        **jma
  151. **
  152. *************************************/
  153. void
  154. XdGeUtils::ucsToWcs(AcGePoint3dArray& ptArray)
  155. {
  156.         AcGeMatrix3d m;
  157.         XdDbUtils::getUcsToWcsMatrix(m);
  158.       
  159.         int len = ptArray.length();
  160.         for (int i=0; i<len; i++)
  161.                 ptArray = m * ptArray;
  162. }
  163. void
  164. XdGeUtils::ucsToWcs(AcGePoint2dArray& ptArray)
  165. {
  166.         AcGeMatrix3d m;
  167.         XdDbUtils::getUcsToWcsMatrix(m);
  168.         AcGePoint3dArray pt3d;
  169.         trans2DTo3D(&ptArray,pt3d,0.0);
  170.         int len = ptArray.length();
  171.         for (int i=0; i<len; i++)
  172.                 pt3d = m * pt3d;
  173.         trans3DTo2D(&pt3d,ptArray);
  174.         return;
  175. }
  176. /************************************************************************
  177. **
  178. **        XdGeUtils::ecsToWcs
  179. **
  180. **        **jma
  181. **
  182. ***************************************/
  183. AcGePoint3d
  184. XdGeUtils::ecsToWcs(const AcGePoint3d& pt, const AcGeVector3d& entNormal)
  185. {
  186.         AcGeMatrix3d m;
  187.         XdDbUtils::getEcsToWcsMatrix(AcGePoint3d::kOrigin, entNormal, m);
  188.       
  189.         return(m * pt);
  190. }
  191. /************************************************************************
  192. **
  193. **        XdGeUtils::ecsToWcs
  194. **
  195. **        **jma
  196. **
  197. ***************************************/
  198. AcGeVector3d
  199. XdGeUtils::ecsToWcs(const AcGeVector3d& vec, const AcGeVector3d& entNormal)
  200. {
  201.         AcGeMatrix3d m;
  202.         XdDbUtils::getEcsToWcsMatrix(AcGePoint3d::kOrigin, entNormal, m);
  203.       
  204.         return(m * vec);
  205. }
  206. /************************************************************************
  207. **
  208. **        XdGeUtils::dcsToUcs
  209. **
  210. **        **jma
  211. **
  212. ***************************************/
  213. AcGePoint3d
  214. XdGeUtils::dcsToUcs(const AcGePoint2d& pt)
  215. {
  216.         resbuf fromRb, toRb;
  217.         ads采用point newPt;
  218.       
  219.         fromRb.restype = RTSHORT;
  220.         fromRb.resval.rint = AcDb::kCurDisplayCS;
  221.       
  222.         toRb.restype = RTSHORT;
  223.         toRb.resval.rint = AcDb::kUserCS;
  224.       
  225.         short result = ads采用trans(asDblArray(pt), &fromRb, &toRb, FALSE, newPt);
  226.         ASSERT(result == RTNORM);
  227.       
  228.         return(asPnt3d(newPt));
  229. }
  230. /************************************************************************
  231. **
  232. **        XdGeUtils::ucsToDcs
  233. **
  234. **        **jma
  235. **
  236. ***************************************/
  237. AcGePoint2d XdGeUtils::ucsToDcs(const AcGePoint3d& pt)
  238. {
  239.         resbuf fromRb, toRb;
  240.         ads采用point newPt;
  241.       
  242.         fromRb.restype = RTSHORT;
  243.         fromRb.resval.rint = AcDb::kUserCS;
  244.       
  245.         toRb.restype = RTSHORT;
  246.         toRb.resval.rint = AcDb::kCurDisplayCS;
  247.       
  248.         short result = ads采用trans(asDblArray(pt), &fromRb, &toRb, FALSE, newPt);
  249.         ASSERT(result == RTNORM);
  250.       
  251.         return(asPnt2d(newPt));
  252. }
  253. [/pcode]
  254. [/sell]
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-28 14:34 , Processed in 0.126715 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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