cheng5276 发表于 2013-1-7 21:56:27

高人!明经的灵魂之一

004 发表于 2013-1-8 19:02:57

谢谢高飞老师.

jishiman 发表于 2013-1-8 21:51:36

留个位置。。线性代数都忘的差不多了。。

tm20038175 发表于 2013-1-8 21:58:16

太帅了,帅呆了!…

waterchen 发表于 2013-1-9 01:07:03

先收藏,再学习,感叹LZ真高人

highflybir 发表于 2013-1-9 12:49:19

zdqwy19 发表于 2013-1-5 20:00 static/image/common/back.gif
矩阵求逆的网页没有帐号打不开,又无法注册。能否把代码贴出来。


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

zdqwy19 发表于 2013-1-9 13:20:28

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

highflybir 发表于 2013-1-9 12:49 static/image/common/back.gif
这里是那几个链接的代码。

谢谢了,高兄!

springwillow 发表于 2013-1-9 14:20:56

纯支持一下吧,要想玩这个还得补一下线性代数的知识,忘光光了!

LLXXZZ 发表于 2013-1-10 12:40:46

必须下载学习...........

highflybir 发表于 2013-1-10 22:12:22

本帖最后由 highflybir 于 2013-1-11 00:29 编辑

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

;;;3d环形阵列测试
(defun c:PAT(/ ss N P1 P2 ActDoc ObjLst)                   ;c:PolarArrayTest
(setq ss (ssget))
(initget 7)
(setq N (getInt "\n数量:"))
(initget 9)
(setq P1 (getpoint "\n中心点:"))
(initget 9)
(setq p2 (getpoint P1 "\n另一点:"))
(if ss
    (progn
      (setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
      (vla-StartUndoMark ActDoc)
      (setq Ojblst (Ent:Ents->Objs ss))
      (Mat:3dPolarArray ojblst N (+ pi pi) T (trans p1 1 0) (trans p2 1 0))
      (vla-EndUndoMark ActDoc)
      (vlax-release-object ActDoc)
      (princ)
    )
)
)


;;;-----------------------------------------------------------;;
;;; 三维环形阵列                                              ;;
;;; 输入:Objlst    -- 物体集                                 ;;
;;;       Number    -- 要阵列的个数(包含自身在内)         ;;
;;;       FillAngle -- 旋转角度                               ;;
;;;       IsCCW   -- 是否逆时针                           ;;
;;;       P1      -- 阵列中心点                           ;;
;;;       P2      -- 阵列轴线的另一点                     ;;
;;; 输出:阵列的物体列表                                    ;;
;;;-----------------------------------------------------------;;
(defun Mat:3dPolarArray (Objlst Number FillAngle IsCCW P1 P2 / lst1 lst2 ANG MAT NEW)
(if IsCCW
    (setq FillAngle (float FillAngle))
    (setq FillAngle (- FillAngle (+ pi pi)))
)
(setq ang (/ FillAngle (1- Number)))
(setq mat (MAT:RotateBy2P P1 P2 ang))
(setq mat (vlax-tmatrix mat))
(repeat (1- Number)
    (setq lst1 nil)
    (foreach obj ObjLst
      (setq new (vla-copy obj))
      (vla-transformby new mat)
      (setq lst1 (cons new lst1))
    )
    (setq objLst (reverse lst1))
    (setq lst2 (cons objLst lst2))
)
(reverse lst2)
)

;;;-----------------------------------------------------------;;
;;;获取物体Objects                                          ;;
;;;-----------------------------------------------------------;;
(defun Ent:Ents->Objs (sel / i e o l)
(setq i (sslength sel))
(repeat i
    (setq e (ssname sel (setq i (1- i))))
    (setq o (vlax-ename->vla-object e))
    (setq l (cons o l))
)
)




页: 1 2 [3] 4 5 6 7 8 9
查看完整版本: 【越飞越高讲堂15】用LISP论矩阵