我是个新手,刚开始子程序的编写,就出现这个问题了。各位大侠帮忙解决下。。。。。。
(defun c:mianji()
(get-data)
(area3)
(prin1)
)
(defun get-data()
(setq en1 (entsel "选择直线a"))
(setq en2 (entsel "\n选择直线b"))
(setq en3 (entsel "\n选择直线c"))
(setq en1-data (entget (car en1)))
;获取a起点坐标
(setq p1ts (assoc 10 en1-data))
(setq p1t1 (cdr p1ts))
(setq p1tx1 (car p1t1))
(setq p1ty1 (cadr p1t1))
;获取a终点坐标
(setq p1te (assoc 11 en1-data))
(setq p1e1 (cdr p1te))
(setq p1ex2 (car p1e1))
(setq p1ey2 (cadr p1e1))
(setq a (sqrt (+ (* (- p1tx1 p1ex2) (- p1tx1 p1ex2)) (* (- p1ty1 p1ey2) (- p1ty1 p1ey2)))))
(setq en2-data (entget (car en2)))
;获取b起点坐标
(setq p2ts (assoc 10 en2-data))
(setq p2t1 (cdr p2ts))
(setq p2tx1 (car p2t1))
(setq p2ty1 (cadr p2t1))
;获取b终点坐标
(setq p2te (assoc 11 en2-data))
(setq p2e1 (cdr p2te))
(setq p2ex2 (car p2e1))
(setq p2ey2 (cadr p2e1))
(setq b (sqrt (+ (* (- p2tx1 p2ex2) (- p2tx1 p2ex2)) (* (- p2ty1 p2ey2) (- p2ty1 p2ey2)))))
(setq en3-data (entget (car en3)))
;获取c起点坐标
(setq p3ts (assoc 10 en3-data))
(setq p3t1 (cdr p3ts))
(setq p3tx1 (car p3t1))
(setq p3ty1 (cadr p3t1))
;获取c终点坐标
(setq p3te (assoc 11 en3-data))
(setq p3e1 (cdr p3te))
(setq p3ex2 (car p3e1))
(setq p3ey2 (cadr p3e1))
(setq c (sqrt (+ (* (- p3tx1 p3ex2) (- p3tx1 p3ex2)) (* (- p3ty1 p3ey2) (- p3ty1 p3ey2)))))
)
(defun area3 ()
(setq s (* (+ a (+ b c)) 0.5))
(setq sum (sqrt (* s (* (- s a) (* (- s b) (- s c))))))
(alter (strcat "总面积为"(itoa sum)))
)