找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1367|回复: 0

[原创] 练习 Lisp定义矩阵

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-5-2 16:59:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 csharp 于 2014-5-2 17:01 编辑

  1.         //Matrix3d 转换为 ResultBuffer
  2.         static ResultBuffer Matrix3dToesultBuffer(Matrix3d matrix3D)
  3.         {
  4.             ResultBuffer result = new ResultBuffer();
  5.             Double [] arrays = matrix3D.ToArray();
  6.             int count = 0;
  7.             result.Add(new TypedValue((int)LispDataType.ListBegin));
  8.             for (int i = 0; i < 4; i++)
  9.             {
  10.                 result .Add( new TypedValue((int)LispDataType .ListBegin ));
  11.                 for (int j = 0; j < 4; j++)
  12.                 {
  13.                     result.Add(new TypedValue((int)LispDataType.Double, arrays[count]));
  14.                     count++;
  15.                 }
  16.                 result.Add(new TypedValue((int)LispDataType.ListEnd ));
  17.             }
  18.             result.Add(new TypedValue((int)LispDataType.ListEnd));
  19.             return result;
  20.         }
  21.         //Wcs 到当前 Ucs 转换矩阵
  22.         static Matrix3d GetUcsMatrix()
  23.         {
  24.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  25.             Matrix3d mat = ed.CurrentUserCoordinateSystem;
  26.             return mat;
  27.         }
  28.         //单位矩阵
  29.         [LispFunction("Matrix_identity")]
  30.         public static ResultBuffer MatrixIdEntity(ResultBuffer rb)
  31.         {
  32.             Matrix3d matrix3D = new Matrix3d();
  33.             matrix3D = Matrix3d.Identity;
  34.             return Matrix3dToesultBuffer(matrix3D);
  35.         }
  36.         //Wcs 到当前 Ucs 转换矩阵
  37.         [LispFunction("Matrix_Wcs2Ucs")]
  38.         public ResultBuffer MatrixWcs2Ucs(ResultBuffer rb)
  39.         {
  40.             Matrix3d mat = GetUcsMatrix();
  41.             return Matrix3dToesultBuffer(mat);
  42.         }
  43.         //当前 Ucs 到 Wcs 转换矩阵
  44.         [LispFunction ("Matrix_Ucs2Wcs")]
  45.         public ResultBuffer MatrixUcs2Wcs(ResultBuffer rb)
  46.         {
  47.             Matrix3d mat = GetUcsMatrix();
  48.             return Matrix3dToesultBuffer(mat.Inverse() );
  49.         }

命令: (matrix_ucs2wcs)
((0.763333 0.646005 0.0 -2411.89) (-0.646005 0.763333 0.0 496.264) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))

命令: (matrix_wcs2ucs)
((0.763333 -0.646005 0.0 2161.66) (0.646005 0.763333 0.0 1179.28) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))

命令: (matrix_identity)
((1.0 0.0 0.0 0.0) (0.0 1.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 22:28 , Processed in 0.164328 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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