[灌水]来个难度大点的模拟直升飞机起飞
本帖最后由 作者 于 2005-4-10 12:53:43 编辑 <br /><br /> 没有优化,根据<A href="dispbbs.asp?BoardID=2&ID=24802" target="_blank" >dispbbs.asp?BoardID=2&ID=24802</A> 改编。
模拟直升飞机起飞。
;;;C:qf2 起飞<BR>;;;ESC 停止<BR>(defun c:qf2 ( / ss e0 e1 e2 sj a i ii iii s0 s1 s2 k)<BR> (vl-cmdf ".undo" "be")<BR> (setq ss (ssadd))<BR> (setq e0 (ssname(ssget "X"(list(cons 0 "insert")(cons 2 "lxj")))0))<BR> (setq e1 (ssname(ssget "X"(list(cons 0 "insert")(cons 2 "lxj-wy")))0))<BR> (setq e2 (ssname(ssget "X"(list(cons 0 "insert")(cons 2 "js")))0))<BR> (mapcar '(lambda(x)(ssadd x ss))(list e0 e1 e2))<BR> (SETQ sj 0 a 0 i 0 )<BR> (while T<BR> (setq s0(entget e0)<BR> s1(entget e1)<BR> s2(entget e2))<BR> (setq i (+ i 5)<BR> SJ (if k 0 (+ sj (/ i PI 50)))<BR> del (if (>= i 300) 0 (- 300 i)))<BR> (if (< (* 5 PI) sj) (setq k T))<BR> (if (and(= del 0)(not ii))(setq ii 1))<BR> (if k<BR> (repeat 4<BR> (setq sj (+ sj (* PI 1.25)))<BR> (entmod (setq s0 (subst (cons 50 SJ) (assoc 50 S0) S0)))<BR> (entmod (setq s1 (subst (cons 50 SJ) (assoc 50 S1) S1))) <BR> (COMMAND "DELAY" del)<BR> )<BR> (progn<BR> (entmod (setq s0 (subst (cons 50 SJ) (assoc 50 S0) S0)))<BR> (entmod (setq s1 (subst (cons 50 SJ) (assoc 50 S1) S1)))<BR> (COMMAND "DELAY" del)<BR> )<BR> )<BR> (if ii (qfmov))<BR> ;(COMMAND "DELAY" del)<BR> )<BR> (princ)<BR>)<BR>(defun qfmov ()<BR> (setq s0 (entget e0)<BR> s1 (entget e1)<BR> s2 (entget e2)<BR> )<BR> (setq ii (* ii 1.1))<BR> (if (>= ii 1000)<BR> (if (not iii)<BR> (setq iii 2)<BR> (setq iii (* iii 1.1))<BR> )<BR> )<BR> (mapcar<BR> '(lambda (x)<BR> (setq e10 (cdr (assoc 10 x)))<BR> (cond<BR> ((< ii 5000)<BR> (if (eq s1 x)<BR> (setq e10 (mapcar '+ (list 0 ii 0) e10))<BR> (setq e10 (mapcar '+ (list 0 0 ii) e10))<BR> )<BR> (entmod (subst (cons 10 e10) (assoc 10 x) x))<BR> )<BR> (T<BR> (setq e10 (mapcar '+ (list iii 0 0) e10))<BR> (if (< iii 5000)<BR> (entmod (subst (cons 10 e10) (assoc 10 x) x))<BR> )<BR> )<BR> )<BR> )<BR> (list s0 s1 s2)<BR> )<BR>)
(defun c:reqf ()<BR> (vl-cmdf ".undo" "e")<BR> (vl-cmdf ".u")<BR>)
更新版本(编译过)在6楼<BR>
c:reqf 恢复。
运行到后面,抓图软件无法跟上速度,演示没有体现出效果。自己试试就知道
怎么用啊?是不是LSP程序啊?存为什么格式的程序? 哗!! !!!
爽耶.....
够狠的啦, 本帖最后由 作者 于 2005-4-8 19:53:39 编辑 <br /><br /> 下面附件为改进版本,和上面提供的程序对比,主要处理了加速提升和加速前进的平滑过渡问题。<BR>;| qf2 = 模拟直升飞机起飞过程 -------------------------梁雄啸.2004.5<BR> 1.先是螺旋桨逐渐加速旋转<BR> 2.螺旋桨加速到一定速度,飞机逐渐加速提升。<BR> 3.提升到一定高度,飞机减速提升,并开始加速前进。<BR> 4.提升到一定高度,飞机不再提升,继续加速前进。(本程序前进距离10000,可改大)<BR>方法:<BR>先打开 qf3.dwg(下面附件的dwg只是改了停机坪的颜色,让飞机更醒目,其他没变).不用转动视角。再加载 qf2.lsp 或qf2.fas.输入以下命令:<BR>C:qf2 ;起飞<BR>ESC ;停止<BR>c:reqf ;恢复.<BR>|;<BR>
确实爽,做到这个程度着实不简单,向你们学习 对编程我是白痴一个,但也很想学一下。以前学过半年TC,不过学到指针后就没再坚持下去。
请问“人挡杀人、佛挡杀佛”学CAD二次编程难不难?
不要对我说“难者不会,会者不难”啊,说点切实的。先谢了。 不简单呀,我是主要搞二维的,大家都说cad是二维软件吗!!所以对cad的三维功能不屑一顾,不过看来还是挺有意思的,以后研究研究 无痕兄太强了吧你也