利用AUTOLISP编程“空间前方交会”程序设计.doc
文本预览下载声明
作业(四)利用AUTOLISP编程“空间前方交会”程序设计
一、作业目的
巩固空间前方交会的知识,学会利用AUTOLISP编程“空间前方交会”程序设计,掌握程序设计基本原理和方法。
二、作业内容与要求
内容:利用AUTOLISP编程“空间前方交会”程序设计,写出相应代码,并运行程序,确保程序的完整。
要求:代码完整有效,并有详细截图
三、数据准备
空间前方交会算例输入数据:
2.00;基准尺长度
3.22;基线近似长度
0.10;两侧站高差
60.505204 74.094935 40.065279 80.062663
29.034438 80.093274 83.133099 73.321423
3;目标点个数
88.024982 60.595535 37.551721 72.283391
53.521126 67.290622 64.003939 66.513494
36.515340 74.011574 101.281847 66.340716
四、作业方法与步骤
如图1所示,空间前方交会原理。
作业步骤:
1、打开CAD2006,运行Visual Lisp程序,并输入代码并保存。
2、在CAD2006中加载已经写好的空间前方交会Lisp程序,成功加载后在下面的命令栏中输入“spsec”然后按回车键。
3、调入已经写好的“空间前方交会算例输入数据”文件。
4、将输出数据的文件名命名为“输出数据”。
图1 空间前方交会原理
五、结果实现截图
六、程序代码
(defun angtorad(/ A B C D E)
(setq dms (atof ang))
(setq A (fix dms))
(setq B (* (- dms A) 100))
(setq C (fix B))
(setq D (* (- B C) 100))
(setq E (+ A (/ C 60.0) (/ D 3600)))
(setq hu (* (/ E 180) PI))
);endsub (Angle to Radian)
(defun intersec(/ C D z1 z2 P p1 p2 p3)
(setq C (+ A B) D (* b0 (/ (sin B) (sin C))))
(setq x (* D (cos A)) y (* D (sin A)))
(setq z1 (* D (/ (cos Za) (sin Za))))
(setq z2 (+ (* D (/ (sin A) (sin B) (/ (sin Zb) (cos Zb)))) h))
(setq z (/ (+ z1 z2) 2) dz (- z1 z2))
(if (= out y) (progn
(setq P (list x y z))
(command point P )
(command line P PA )
(command line P PB )
(setq p1 (list (+ x 0.03) (- y 0.05) z))
(setq p2 (list (+ x 0.03) (- y 0.10) z))
(setq p3 (list (+ x 0.03) (- y 0.15) z))
(command text p1 0.04 0 (rtos x 2 4) )
(command text p2 0.04 0 (rtos y 2 4) )
(command text p3 0.04 0 (rtos z 2 4) )
(princ \n f2)
(princ x= f2) (Princ (rtos x 2 5) f2)
(princ y= f2) (princ (rtos y 2 5) f2)
(princ z= f2) (princ (rtos z 2 5) f2)
(princ dz= f2) (princ dz f2)
)); endprogn endif
); endsub (Intersection)
(defun readline(/ line)
(setq line (read-line f1))
(setq ang (substr line 1 12)) (angtorad) (setq A hu)
(setq ang (substr line 13 12)) (angtorad) (setq Za hu)
(setq ang (sub
显示全部