求自转公转LISP
A图形围绕点1公转,同时自身围绕点2自转(点2在A图形上),两个转动角度要求可以自己输入。A图形可以框选,并且保留A图形的轨迹。 没有大神理我??大概就是复制一个图元到指定点并且让复制后的图元旋转指定角度。
口说无凭,给张图样。 如图,A围绕P2点做圆周运动,自身有围绕P1点自转。假定A围绕P2点每5度复制一个,那么A点自身就围绕P2点旋转10度,B相对于A旋转10度,C相对于B旋转10. ZZXXQQ 发表于 2013-9-5 23:48 static/image/common/back.gif
口说无凭,给张图样。
大神,图贴上来了,您看看! 本帖最后由 ZZXXQQ 于 2013-9-8 09:44 编辑
程序调好了。试试看
;卫星式阵列 明经 ZZXXQQ 2013.9.8
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (princ "\n选择卫星图元: ")
(setq ss (ssget))
(setq pc (getpoint "\n选择自转中心点: "))
(setq pc1 (getpoint "\n选择公转中心点: "))
(setq r (getdist "\n输入公转半径: "))
(setq ang (getangle "\n输入起始角度: "))
(setq n (getint "\n输入阵列数量: "))
(setq dlta (getreal "\n输入旋转步长(角度): "))) (progn
(setq start ang)
(setq dlta (/ (* dlta pi) 180))
(setq i 0)
(repeat n
(setq an1 (+ start (* dlta i)))
(setq pt1 (polar pc1 an1 r))
(setq an2 (/ (* dlta i 2 180) pi))
(setq ss1 (ssadd) s1 (entlast))
(command ".COPY" ss "" pc pt1)
(while (setq s1 (entnext s1)) (ssadd s1 ss1))
(command ".ROTATE" ss1 "" pt1 an2)
(setq i (1+ i))
)
))
(setvar "CMDECHO" 1)
(princ)
)
试过了,不行呀。上图,右边那个图是用程序做的,P1为自转中心。P2为公转中心。公转半径250,起始角度0度,阵列个数12,步长60.我不理解步长是什么。我这个步长是按阵列12个每个之间角度就是30度,自转就是60度。
我QQ314230059.可以QQ联系我。 ZZXXQQ 发表于 2013-9-6 07:49 static/image/common/back.gif
程序未调试。试试看
试过了,不行。过程我贴上来了,您再给看看!~ 可以用转换矩阵来解。 vormittag 发表于 2013-9-6 10:07 static/image/common/back.gif
可以用转换矩阵来解。
求详细解答。谢谢
页:
[1]
2