- 积分
- 165
- 明经币
- 个
- 注册时间
- 2024-12-1
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
(defun c:pjz (/ p1 p2 ss sn si i x y e fw min-z max-z)
(prompt "\n**从CASS中提取高程点计算高程平均数、最大值和最小值,请在命令行输入 pjz **")
(setq sn 0) ; 初始化计数器
(setq zh 0) ; 初始化高程总和(用于计算平均值)
(setq min-z nil) ; 初始化最小高程
(setq max-z nil) ; 初始化最大高程
(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)) ; 更新高程总和
(if (or (null min-z) (< pz min-z))
(setq min-z pz)
)
(if (or (null max-z) (> pz max-z))
(setq max-z pz)
)
(setq i (1+ i)) ; 更新循环变量
)
(close fw) ; 关闭文件
)
)
(if (> sn 0)
(progn
(setq pj (/ zh sn)) ; 计算平均高程
(setq pdz (strcat "本次共拾取" (itoa sn) "点, 高程平均值: " (rtos pj 2 3)
", 最小高程: " (rtos min-z 2 3)
", 最大高程: " (rtos max-z 2 3)
", 坐标文件在D盘;"))
(princ pdz) ; 输出结果到命令行
)
(princ "\n没有找到符合条件的点。")
)
)
|
|