- 积分
- 681
- 明经币
- 个
- 注册时间
- 2004-11-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2005-1-8 11:39:00
|
显示全部楼层
(defun c:getdata(/) (setq pt1(getpoint"\n请输入管线断面的起始点坐标:")) (setq pt2(getpoint pt1"\n请输入管线断面的终点坐标:")) (setq datafile(getfiled "断面数据保存在" "" "txt" 1)) (setq fdata(open datafile "a")) (setq dist 0.0) (setq depth 0.0) (setq n_zero 0) (setq kind "") (setq code "") (setq s_pt (list 0.0 0.0)) (setq e_pt (list 0.0 0.0)) (setq int_pt(list 0.0 0.0)) (setq max_depth 0.0) (setq max_dist 0.0) (setq h_road(getstring"\n请输入路牙高度:")) (setq ss(ssget "C" pt1 pt2)) (setq i 0) (setq n(sslength ss)) (while (< i (- n 1)) (setq ent1(ssname ss i)) (setq i(+ i 1)) (setq ent11(entget ent1)) (setq name(cdr( assoc 0 ent11))) (setq name(strcase name T)) (if (/= name "line") (ssdel ent1 ss) ) ) (setq n(sslength ss)) (setq i 0) (repeat n (setq ent(ssname ss i)) (setq i(+ i 1)) (setq ent(entget ent '("*"))) (setq s_pt(cdr(assoc 10 ent))) (setq x(nth 0 s_pt)) (setq y(nth 1 s_pt)) (setq s_pt(list x y 0)) (setq e_pt(cdr(assoc 11 ent))) (setq x(nth 0 e_pt)) (setq y(nth 1 e_pt)) (setq e_pt(list x y 0)) (setq int_pt(inters pt1 pt2 s_pt e_pt)) (setq dist(distance pt1 int_pt)) (setq kind(strcase(cdr(assoc 8 ent))T)) (if (or(= kind "water")(= kind "gas")(= kind "swy")(= kind "sww")(= kind "spy")(= kind "spq")(= kind "pwg")(= kind "pwl")(= kind "pwc")(= kind "pwd")(= kind "pwz")(= kind "pwh")(= kind "tlg")(= kind "tll")) (progn (setq data(cdr (assoc -3 ent))) (if (or(= kind "water")(= kind "gas")(= kind "swy")(= kind "sww")(= kind "spy")(= kind "spq")) (progn (setq code(cdr(assoc 1000(cdr(assoc "E_HEIGHT" data))))) (if (= code nil) (progn (setq code "管径or孔数or根数未输入") ) ) (setq depth(cdr(assoc 1000(cdr(assoc "E_NOTE" data))))) (if (= depth nil) (progn (setq depth "0") (setq n_zero(+ 1 n_zero)) ) ) (setq max_dist(max max_dist dist)) (setq depth1 (atof depth)) (setq max_depth(min max_depth depth1)) (setq dist(rtos dist 2 2)) (setq string(strcat dist "," depth "," kind "," code)) (write-line string fdata) ) ) (if (or(= kind "pwg")(= kind "pwl")(= kind "pwc")(= kind "pwd")(= kind "pwz")(= kind "pwh")(= kind "tlg")(= kind "tll")) (progn (setq code(cdr(assoc 1000(cdr(assoc "E_NUMBER" data))))) (if (= code nil) (progn (setq code "管径or孔数or根数未输入") ) ) (setq depth(cdr(assoc 1000(cdr(assoc "E_NOTE" data))))) (if (= depth nil) (progn (setq depth "0") (setq n_zero(+ 1 n_zero)) ) ) (setq max_dist(max max_dist dist)) (setq depth1 (atof depth)) (setq max_depth(min max_depth depth1)) (setq dist(rtos dist 2 2)) (setq string(strcat dist "," depth "," kind "," code)) (write-line string fdata) ) ) ) (progn (if (= kind "road") (progn (setq code "0") (setq depth h_road) (setq max_dist(max max_dist dist)) (setq depth1 (atof depth)) (setq max_depth(min max_depth depth1)) (setq dist(rtos dist 2 2)) (setq string(strcat dist "," depth "," kind "," code)) (write-line string fdata) ) ) ) ) ) (princ"\n本次选择共有")(princ n_zero)(princ"条管线的埋深未输入!") (command "line" pt1 pt2 "") (setq max_dist(distance pt1 pt2)) (setq max_dist(rtos max_dist 2 2)) (setq max_depth(rtos (* -1 max_depth) 2 2)) (setq endline(strcat max_dist "," max_depth)) (write-line endline fdata) (close fdata) (princ"\n") (princ"OVER!") )
;;注:这是其中的那个取外部数据的程序,请您帮忙看看,哪有问题. |
|