找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1257|回复: 6

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

[复制链接]
发表于 2015-7-15 21:49:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
  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 "**")(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))",**," 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 pzxzx
  109. (xdelatt (setq *cad (ssget n)))

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

  114. ))
  115. (princ pdz)
  116. )
cass高程点过滤保留点位.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-7-15 22:46:26 | 显示全部楼层
  1. (defun c:tt (/ ss lst i)
  2.   (setvar "dimzin" 0)
  3.   (if (setq ss (ssget (list (cons 8 "**") (cons 2 "GC200"))))
  4.     (progn
  5.       (setq lst        (mapcar        '(lambda (x / p)
  6.                            (setq p (xdrx_getpropertyvalue x "Position"))
  7.                            (list p p)
  8.                          )
  9.                         (xdrx_pickset->ents ss)
  10.                 )
  11.             lst        (xd::list:groupbyindex lst 5)
  12.             lst        (mapcar 'car (mapcar 'cdr lst))
  13.             i        0
  14.             lst        (mapcar        '(lambda (x)
  15.                            (strcat (itoa (setq i (1+ i)))
  16.                                    ","
  17.                                    (xdrx_string_join (mapcar '(lambda (a) (rtos a 2 3))
  18.                                                              x
  19.                                                      )
  20.                                                      ","
  21.                                    )
  22.                            )
  23.                          )
  24.                         lst
  25.                 )
  26.       )
  27.       (xd::list:tofile "d:\\ex.dat" lst)
  28.     )
  29.   )
  30.   (princ)
  31. )

点评

XDRX函数公开源码吗  详情 回复 发表于 2015-7-16 10:06
请问这些函数源码在哪里?在晓东搜了很久没有找到  详情 回复 发表于 2015-7-16 10:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-7-16 08:30:31 | 显示全部楼层
学习一下,楼主好啊。。。。。。。。。。。。。。。。:):)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-7-16 10:00:00 | 显示全部楼层

请问这些函数源码在哪里?在晓东搜了很久没有找到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-7-16 10:06:21 | 显示全部楼层

XDRX函数公开源码吗

点评

xdrx 是 ObjectARX 定义的 LispFunction,没有源码,加载对应 arx 文件即可使用  详情 回复 发表于 2015-7-16 10:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-7-16 10:20:44 | 显示全部楼层
树櫴希德 发表于 2015-7-16 10:06
XDRX函数公开源码吗

xdrx 是 ObjectARX 定义的 LispFunction,没有源码,加载对应 arx 文件即可使用

点评

; 错误: 参数类型错误: stringp nil _$ ; 错误: 参数类型错误: stringp nil _$ ; 错误: 参数类型错误: stringp nil  详情 回复 发表于 2015-7-16 10:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-7-16 10:38:24 | 显示全部楼层
iLisp 发表于 2015-7-16 10:20
xdrx 是 ObjectARX 定义的 LispFunction,没有源码,加载对应 arx 文件即可使用
  1. (defun c:tt (/ ss lst i)
  2.   (setvar "dimzin" 0)
  3.   (if (setq ss (ssget (list (cons 1 "insert")(cons 8 "**") (cons 2 "GC200"))))
  4.     (progn
  5.       (setq lst        (mapcar        '(lambda (x / p)
  6.                            (setq p (xdrx_getpropertyvalue x "Position"))
  7.                            (list p p)
  8.                          )
  9.                         (xdrx_pickset->ents ss)
  10.                 )
  11.             lst        (xd::list:groupbyindex lst 5);;;;;;;;;
  12.             lst        (mapcar 'car (mapcar 'cdr lst))
  13.             i        0
  14.             lst        (mapcar        '(lambda (x)
  15.                            (strcat (itoa (setq i (1+ i)))
  16.                                    ","
  17.                                    (xdrx_string_join (mapcar '(lambda (a) (rtos a 2 3))
  18.                                                              x
  19.                                                      )
  20.                                                      ","
  21.                                    )
  22.                            )
  23.                          )
  24.                         lst
  25.                 )
  26.       )
  27.       (xd::list:tofile "d:\\ex.dat" lst)
  28.     )
  29.   )
  30.   (princ)
  31. )

  32. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  33. (defun XD::List:GroupByIndex (lst fuzz / ll ilst l index tf)
  34.   (or
  35.     (and
  36.       (listp (caar lst))
  37.       (setq ll        (list (list (caar lst) (car lst)))
  38.             lst        (cdr lst)
  39.       )
  40.       (while lst
  41.         (if (setq l
  42.                    (mapcar
  43.                      'cdr
  44.                      (vl-remove-if-not
  45.                        '(lambda (x) (equal (car x) (caar ll) fuzz))
  46.                        lst
  47.                      )
  48.                    )
  49.             )
  50.           (setq        ll  (cons (append (cons (caar ll) l) (cdar ll)) (cdr ll))
  51.                 lst (vl-remove-if
  52.                       '(lambda (x) (equal (car x) (caar ll) fuzz))
  53.                       lst
  54.                     )
  55.           )
  56.         )
  57.         (setq ll  (cons (list (caar lst) (car lst)) ll)
  58.               lst (cdr lst)
  59.         )
  60.       )
  61.     )
  62.     (and (setq index (caar lst))
  63.          (or (and (= (type index) 'INT)
  64.                   (setq        tf  t
  65.                         lst (mapcar
  66.                               '(lambda (x) (cons (float (car x)) (cdr x)))
  67.                               lst
  68.                             )
  69.                   )
  70.              )
  71.              (= (type index) 'REAL)
  72.              (= (type index) 'STR)
  73.          )
  74.          (setq
  75.            lst (vl-sort lst '(lambda (l1 l2) (< (car l1) (car l2))))
  76.          )
  77.          (mapcar '(lambda (x y / l)
  78.                     (if        (equal (caar ll) x fuzz)
  79.                       (setq ll (cons (cons x
  80.                                            (cons y (cdar ll))
  81.                                      )
  82.                                      (cdr ll)
  83.                                )
  84.                       )
  85.                       (setq ll (cons (list x y) ll))
  86.                     )
  87.                   )
  88.                  (mapcar 'car lst)
  89.                  lst
  90.          )
  91.          (if tf
  92.            (setq ll (mapcar '(lambda (x) (cons (fix (car x)) (cdr x))) ll))
  93.          )
  94.     )
  95.   )
  96.   (mapcar '(lambda (x)
  97.              (cons (car x)
  98.                    (mapcar '(lambda (a)
  99.                               (if (= (length a) 1)
  100.                                 (car a)
  101.                                 a
  102.                               )
  103.                             )
  104.                            (mapcar 'cdr (cdr x))
  105.                    )
  106.              )
  107.            )
  108.           (vl-remove nil ll)
  109.   )
  110. )
  111. ;;;;;;;;;;;;;;;;;;;;;
  112. (XD::List:ToFile
  113.         (strcat        (vl-filename-directory (findfile fl))
  114.                 "\"
  115.                 (vl-filename-base fl)
  116.                 ".dat"
  117.         )
  118.         nl
  119.       )
; 错误: 参数类型错误: stringp nil
_$
; 错误: 参数类型错误: stringp nil
_$
; 错误: 参数类型错误: stringp nil


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 12:24 , Processed in 0.435114 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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