更新代码本次共拾取31点, 高程平均值: 6.854, 最小高程: 6.621, 最大高程: 7.101, 坐标文件在D盘;"本次共拾取31点, 高程平均值: 6.854, 最小高程: 6.621, 最大高程:- (defun c:pjz (/ p1 p2 ss sn si i x y e fw)
- (prompt "\n**从CASS中提取高程点计算高程累计和 和平均数,请在命令行输入 pjz **")
- (setq sn 0) ; 初始化计数器
- (setq zh 0) ; 初始化高程累计和
- (setq ss (ssget (list (cons 8 "GCD") (cons 2 "GC200")))) ; 获取图层为GCD且名称为GC200的对象
- (if ss
- (progn
- (setq fw (open "d:\\ex.dat" "w")) ; 打开文件准备写入
- (setq sn (sslength ss)) ; 获取选择集中的对象数量
- (setq i 0) ; 初始化循环变量
- (while (< i sn)
- (setq si (ssname ss i)) ; 获取当前对象
- (setq pt (cdr (assoc 10 (entget si)))) ; 提取当前对象的3D坐标
- (setq x (rtos (car pt) 2 3)) ; X坐标
- (setq y (rtos (cadr pt) 2 3)) ; Y坐标
- (setq e (rtos (caddr pt) 2 3)) ; Z坐标(高程)
-
- (princ (strcat (itoa (1+ i)) ",GCD," x "," y "," e "\n") fw) ; 写入文件
-
- (setq pz (nth 2 pt)) ; 提取Z值
- (setq zh (+ zh pz)) ; 更新高程累计和
- (setq pj (/ zh (1+ i))) ; 计算当前平均值
- (setq si (rtos (1+ i) 2 0)) ; 当前点的数量
- (setq zh1 (rtos zh 2 3)) ; 高程累计和
- (setq pj1 (rtos pj 2 3)) ; 平均高程
- (setq pdz (strcat "本次共拾取" si "点, 高程累计值:" zh1 ", 高程平均值: " pj1 ", 坐标文件在D盘;"))
-
- (setq i (1+ i)) ; 更新循环变量
- )
- (close fw) ; 关闭文件
- )
- )
- (princ pdz) ; 输出结果到命令行
- )
7.101, 坐标文件在D盘;" |