明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3764|回复: 11

cass高程点过滤保留点位,求改进 完美

[复制链接]
发表于 2015-7-15 21:35:30 | 显示全部楼层 |阅读模式
  1. (defun xd-Clearcset (/ cset)
  2.   (if (not (vl-catch-all-error-p
  3.              (setq cset
  4.                     (vl-catch-all-apply
  5.                       'vla-item
  6.                       (list
  7.                         (vla-get-selectionsets
  8.                           (vla-get-activedocument (vlax-get-acad-object)) ;_
  9.                         )
  10.                         "CURRENT"
  11.                       )
  12.                     )
  13.              )
  14.            )
  15.       )
  16.     (vla-delete cset)
  17.   )
  18.   (princ)
  19. )

  20. (defun xd-cset ()
  21.   (setq        *doc  (vla-get-activedocument (vlax-get-acad-object))
  22.         *sets (vla-get-selectionsets *doc)
  23.   )
  24.   (if (ssget "P")
  25.     (vla-delete (vla-item *sets 0))
  26.   )
  27.   (vla-get-activeselectionset *doc)
  28. )

  29. (defun ai_deselect ()
  30.   (if (= (getvar "cmdecho") 0) ;_start if
  31.     (command "_.select" "_r" "_all" "")
  32.     (progn ;_start progn for cmdecho 1
  33.       (setvar "cmdecho" 0)
  34.       (command "_.select" "_r" "_all" "")
  35.       (setvar "cmdecho" 1)
  36.     ) ;_end progn for cmdecho 1
  37.   ) ;_end if
  38.   ;;(terpri)
  39.   ;;(prompt "所有对象都已取消选择")
  40.   (princ)
  41. )

  42. (defun xdelatt (*cad / FIL SS *cad)
  43.   (princ "\n 删除块属性----------by lxx.2007.9")
  44.   (princ "\n 选择要删除属性的块<全部>:")
  45.   ;(setq *cad (vlax-ename->vla-object (CAR(ENTSEL))))
  46.   

  47.     (setq *cad (vlax-get-acad-object))
  48.   (xd-Clearcset);;;;;;;;;;;;;;;;;;;;;
  49.   
  50.   (setq fil '((0 . "INSERT") (-4 . "&") (66 . 1)))
  51.   ;(or (setq ss (ssget fil))
  52.       ;(setq ss (ssget "x" fil))
  53.   ;)
  54.   (vla-eval *cad
  55.      "for each i in thisdrawing.activeselectionset : for each n in i.getattributes : n.delete :next n :next i"
  56.   )
  57.   
  58. )
  59. ;;;;;;;;;;;;;;;
  60. (defun lst-(l1 l2)
  61. (vl-remove-if'(lambda(x)(member x l2))l1))


  62. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  63. (defun c:pjz(/ p1 p2 ss sn si i x y e fw pzxa pzxb pzxzx *cad)
  64. (prompt "**从CASS中提取高程点计算高程累计和 和平均数,请在命令行输入 pjz **")
  65. (setq sn 0)
  66. (setq zh 0)
  67.   (setq ss(ssget  (list(cons 8 "GCD")(cons 2 "GC200"))))
  68. (if ss(progn
  69.   (setq fw(open "d:\\ex.dat" "w"))
  70.   (setq sn(sslength ss))
  71.   (setq i 0)
  72.   (while(< i sn)
  73.    (setq si(ssname ss i))
  74. ;=====提取坐标=================
  75.    (setq pt(cdr(assoc 10 (entget si))))
  76.    (setq x(rtos(car pt)2 3) y(rtos(cadr pt)2 3) e(rtos(caddr pt)2 3))
  77.    (setq pzxa(list (atof x) (atof y) (atof e)))
  78.     (setq pzxb (append pzxb (list pzxa)))

  79. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  80. (defun delsameok(l1 rcz / l2);;带容差去重(重复过的取第一次出现),有时处理坐标点需要考虑容差
  81.   (while l1
  82.     (setq l2(cons(car l1)l2)l1(vl-remove-if'(lambda (x)(equal(car l1)x rcz))(cdr l1))))
  83.   (reverse l2))
  84. ;;;;;;;;;;;;;;;;;;;;;;;;;
  85.    
  86.     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  87. (defun delsame(l1 rcz / l2);;带容差去重(重复过的不出现),有时处理坐标点需要考虑容差
  88.   (while (setq l1(vl-remove-if'(lambda (x)(equal(car l1)x rcz))(cdr l1)))
  89.     (setq l2(cons(car l1)l2)))
  90.   (reverse l2))
  91.     ;;;;;;;;;;;;;;;;;;;;;
  92.    

  93.    
  94.    (princ(strcat (itoa (1+ i))",GCD," x "," y "," e "\n") fw)
  95.    
  96.    (setq i(1+ i))
  97. ;=====计算平均值==============
  98. (setq pz (nth 2 pt));提取测量坐标洗z值
  99. (setq pz1 (rtos (nth 2 pt)));提取测量坐标系Z值
  100. (setq zh (+ zh pz))
  101. (setq pj (/ zh i))
  102. (setq si (rtos i 2 0))
  103. (setq zh1 (rtos zh 2 3))
  104. (setq pj1 (rtos pj 2 3))
  105. (setq pdz (strcat "本次共拾取" si "点,高程累计值:" zh1 ",高程平均值: "pj1 ",坐标文件在D盘;")) ;输出为数据格式(高程,累计和,平均值)

  106.   )
  107. (setq pzxzx (lst- pzxb (delsame pzxb 5)))
  108.     (foreach n (lst- pzxb (delsame pzxb 5))
  109. (xdelatt (setq *cad (ssget n)))

  110.       )
  111.   
  112.   
  113.   (close fw)

  114. ))
  115. (princ pdz)
  116. )

该贴已经同步到 树櫴希德的微博

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2021-2-18 20:45:06 | 显示全部楼层
版主你好,可否实现抽稀功能。不要删除原数据
发表于 2018-5-7 21:13:36 | 显示全部楼层
的风格地方根豆粉
发表于 2017-12-12 21:02:19 | 显示全部楼层
用得少,谢谢分享
 楼主| 发表于 2015-7-15 21:36:34 | 显示全部楼层
只为测绘简单些,用了各位大神的程序,请见谅
 楼主| 发表于 2015-7-15 23:18:15 | 显示全部楼层
73哥函数改进版

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2015-7-17 08:32:18 | 显示全部楼层
感谢楼主经验分享,受益匪浅!
发表于 2015-8-6 20:47:56 | 显示全部楼层
同行。。谢谢
发表于 2018-3-1 10:25:38 | 显示全部楼层
不错,非常感谢!
发表于 2018-4-26 12:42:20 | 显示全部楼层
谢谢分享,学了!!!!
发表于 2018-6-24 23:04:56 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 19:56 , Processed in 0.205943 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表