从CASS中提取高程点计算高程平均数、最大值和最小值
(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没有找到符合条件的点。")
)
)
挺好的功能 言戲無軍 发表于 2024-12-5 15:39
挺好的功能
大佬 帮忙下载一个文件可以吗?权限不够谢谢
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=188620&highlight=%B8%DF%B3%CC%B5%E3 16699988885 发表于 2024-12-6 16:41
大佬 帮忙下载一个文件可以吗?权限不够谢谢
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=18862 ...
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=18862 楼主,你的程序在CAD2024中,显示 输入的列表有缺陷,无法执行,请问是怎么回事?
页:
[1]