明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

[【高飞鸟】] 【越飞越高讲堂15】用LISP论矩阵

    [复制链接]
发表于 2013-1-7 21:56 | 显示全部楼层
高人!明经的灵魂之一
发表于 2013-1-8 19:02 | 显示全部楼层
谢谢高飞老师.
发表于 2013-1-8 21:51 | 显示全部楼层
留个位置。。线性代数都忘的差不多了。。
发表于 2013-1-8 21:58 来自手机 | 显示全部楼层
太帅了,帅呆了!…
发表于 2013-1-9 01:07 | 显示全部楼层
先收藏,再学习,感叹LZ真高人
 楼主| 发表于 2013-1-9 12:49 | 显示全部楼层
zdqwy19 发表于 2013-1-5 20:00
矩阵求逆的网页没有帐号打不开,又无法注册。能否把代码贴出来。


这里是那几个链接的代码。

本帖子中包含更多资源

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

x
发表于 2013-1-9 13:20 | 显示全部楼层

RE: 【越飞越高讲堂15】用LISP论矩阵

highflybir 发表于 2013-1-9 12:49
这里是那几个链接的代码。

谢谢了,高兄!
发表于 2013-1-9 14:20 | 显示全部楼层
纯支持一下吧,要想玩这个还得补一下线性代数的知识,忘光光了!
发表于 2013-1-10 12:40 | 显示全部楼层
必须下载学习...........
 楼主| 发表于 2013-1-10 22:12 | 显示全部楼层
本帖最后由 highflybir 于 2013-1-11 00:29 编辑

再来举一个例子:
3D 的环形阵列。
选择物体,然后对物体集进行3d环形阵列。
很类似命令:3darray.
经过测试,比3darray快了很多,而且不出错。

  1. ;;;3d环形阵列测试
  2. (defun c:PAT(/ ss N P1 P2 ActDoc ObjLst)                   ;c:PolarArrayTest
  3.   (setq ss (ssget))
  4.   (initget 7)
  5.   (setq N (getInt "\n数量:"))
  6.   (initget 9)
  7.   (setq P1 (getpoint "\n中心点:"))
  8.   (initget 9)
  9.   (setq p2 (getpoint P1 "\n另一点:"))
  10.   (if ss
  11.     (progn
  12.       (setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  13.       (vla-StartUndoMark ActDoc)
  14.       (setq Ojblst (Ent:Ents->Objs ss))
  15.       (Mat:3dPolarArray ojblst N (+ pi pi) T (trans p1 1 0) (trans p2 1 0))
  16.       (vla-EndUndoMark ActDoc)
  17.       (vlax-release-object ActDoc)
  18.       (princ)
  19.     )
  20.   )
  21. )


  22. ;;;-----------------------------------------------------------;;
  23. ;;; 三维环形阵列                                              ;;
  24. ;;; 输入:Objlst    -- 物体集                                 ;;
  25. ;;;       Number    -- 要阵列的个数(包含自身在内)           ;;
  26. ;;;       FillAngle -- 旋转角度                               ;;
  27. ;;;       IsCCW     -- 是否逆时针                             ;;
  28. ;;;       P1        -- 阵列中心点                             ;;
  29. ;;;       P2        -- 阵列轴线的另一点                       ;;
  30. ;;; 输出:阵列的物体列表                                      ;;
  31. ;;;-----------------------------------------------------------;;
  32. (defun Mat:3dPolarArray (Objlst Number FillAngle IsCCW P1 P2 / lst1 lst2 ANG MAT NEW)
  33.   (if IsCCW
  34.     (setq FillAngle (float FillAngle))
  35.     (setq FillAngle (- FillAngle (+ pi pi)))
  36.   )
  37.   (setq ang (/ FillAngle (1- Number)))
  38.   (setq mat (MAT:RotateBy2P P1 P2 ang))
  39.   (setq mat (vlax-tmatrix mat))
  40.   (repeat (1- Number)
  41.     (setq lst1 nil)
  42.     (foreach obj ObjLst
  43.       (setq new (vla-copy obj))
  44.       (vla-transformby new mat)
  45.       (setq lst1 (cons new lst1))
  46.     )
  47.     (setq objLst (reverse lst1))
  48.     (setq lst2 (cons objLst lst2))
  49.   )
  50.   (reverse lst2)
  51. )

  52. ;;;-----------------------------------------------------------;;
  53. ;;;获取物体Objects                                            ;;
  54. ;;;-----------------------------------------------------------;;
  55. (defun Ent:Ents->Objs (sel / i e o l)
  56.   (setq i (sslength sel))
  57.   (repeat i
  58.     (setq e (ssname sel (setq i (1- i))))
  59.     (setq o (vlax-ename->vla-object e))
  60.     (setq l (cons o l))
  61.   )
  62. )




您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 11:16 , Processed in 0.296582 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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