以下本人学编的一段坐标计算小程序,主要用于三角形中,已知两个点坐标,及三个内角来计算另一个点坐标,并调用CAD绘出图形。
已知数据以定制的对话框形式输入,现在我想把计算结果坐标也在原来定制的对话框中输出来,并调用CAD绘出图形。
;坐标计算 ZBJS.LSP
;度分秒转换成度
(defun DEG (ia / a d m s)
(if (minusp ia ) ;判断角度正负
(setq sgn -1.0 )
(setq sgn 1.0 )
)
(setq a (abs ia ) ) ;角度绝对值
(setq d (fix a ) ) ;提取度
(setq m (fix (+ (* (- a d) 100 ) 0.01) ) ) ;提取分
(setq s (* (- (* (- a d) 100.0) m) 100 ) ) ;提取秒
(* ( + d ( / m 60.0 ) ( / s 3600.0 ) ) sgn )
)
;度转换成弧度
(defun dtor(d)
(* (/ d 180.0) pi)
)
;弧度转换成度
(defun rtod(r)
(* (/ r pi) 180.0)
)
;度转换成度分秒
(defun DMS(ia / a d m s )
(if (minusp ia ) ;判断角度正负
(setq sgn -1.0 )
(setq sgn 1.0 )
)
(setq a (abs ia ) ) ;角度绝对值
(setq d (fix a ) ) ;提取度
(setq m (fix (+ (* (- a d) 60.0 ) 0.01) ) ) ;提取分
(setq s (* (- (* (- a d) 60.0) m) 60.0 ) ) ;提取秒
(* ( + d ( / m 100.0 ) ( / s 10000.0 ) 0.0000001) sgn )
);方位角计算程序
( defun fwj(x1 y1 x2 y2 / dx dy d12 a12-dms )
(graphscr)
(setq dx (- x2 x1) dy (- y2 y1) )
(setq d12 (sqrt( + (* dx dx ) (* dy dy ) ) ) )
(if (= dy 0.0) (setq a12 (/ pi 2.0 ) ) )
(if (= dx 0.0) (setq a12 0.0000 ) )
(setq a12 (atan (/ dy dx)) )
(cond
( ( and ( dy 0.0 ) ) (setq a12 (+ a12 pi ) ) )
( ( and (> dx 0.0 ) (