明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2866|回复: 7

文字分类统计,73哥函数,也可以修改为块名分类统计

[复制链接]
发表于 2015-12-8 09:04:38 | 显示全部楼层 |阅读模式
本帖最后由 树櫴希德 于 2015-12-19 10:50 编辑

  1. (DEFUN VXS (E /)
  2.       (READ(CDR (ASSOC 1 (ENTGET E))))


  3.   )




  4. ;(VL-SORT PZX '(lambda(E1 E2) (EQUAL E1 E2  ) ) )
  5. (DEFUN SAME (L1 / L2 l3);;;;;
  6.   (WHILE L1 (IF(MEMBER (CAR L1)(CDR L1))(SETQ L2(APPEND L2 (LIST(CAR L1))))

  7.            (SETQ L3(APPEND L3 (LIST(CAR L1))))
  8.         )
  9.     (SETQ L1(VL-REMOVE(CAR L1 )L1))
  10.     )

  11. (append l2 l3))


  12. (DEFUN SAMETIMES (L1) ;;;;;;
  13.   (MAPCAR'(LAMBDA(X)(CONS X(- (LENGTH L1)(LENGTH(VL-REMOVE X L1))))) l1))

  14. (defun c:wzfltj ( / lst newlst x1 x2 x3 pzx ssa ii no en ptb pzx)

  15. (setq ssa (ssget '((0 . "TEXT") (8 . "承台编号"))))
  16.                 (setq ii   0
  17.                       no  0
  18.                   )
  19.                   (repeat (sslength ssa)
  20.                        (setq en (ssname ssa ii)
  21.                             ptb (vxs en)
  22.           pzx (append pzx (list ptb))
  23.            ii  (1+ ii)               )
  24.         )
  25.   
  26. (setq lst nil  newlst nil x1 0)
  27. (setq newlst (same(SAMETIMES PZX)))


  28. (setq x2 (getpoint "\起始位置"))
  29.   (setq x3 (polar x2  0 12))
  30.     (command "text" "j" "c" (polar x2 (* pi 0.5) 3) "2" "0" "种类" "")
  31.   (command "text" "j" "c" (polar x3 (* pi 0.5) 3) "2" "0" "数量" "")
  32.   (repeat (length newlst)
  33.     (command "text" "j" "c" x2 "1.5" "0" (vl-princ-to-string (car (nth x1 newlst))) "")
  34.     (command "text"  "j" "c" x3 "1.5" "0" (vl-princ-to-string(cdr(nth x1 newlst))) "")
  35.     (setq x2(polar x2 (* pi 1.5) 3))
  36.     (setq x3 (polar x2  0 12))
  37.     (setq x1(1+ x1))
  38.     )
  39.       
  40. (PRINC)   
  41. )

  42.    

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +3 金钱 +30 收起 理由
yfy2003 + 3 + 30

查看全部评分

发表于 2015-12-8 11:44:37 | 显示全部楼层
辛苦了!坚持!
 楼主| 发表于 2015-12-18 20:18:41 | 显示全部楼层

  1. (DEFUN VXS (E /)
  2.       (READ(CDR (ASSOC 1 (ENTGET E))))


  3.   )




  4. ;(VL-SORT PZX '(lambda(E1 E2) (EQUAL E1 E2  ) ) )
  5. (DEFUN SAME (L1 / L2 l3);;;;;
  6.   (WHILE L1 (IF(MEMBER (CAR L1)(CDR L1))(SETQ L2(APPEND L2 (LIST(CAR L1))))

  7.            (SETQ L3(APPEND L3 (LIST(CAR L1))))
  8.               )
  9.     (SETQ L1(VL-REMOVE(CAR L1 )L1))
  10.     )

  11. (append l2 l3))


  12. (DEFUN SAMETIMES (L1 / ) ;;;;;;
  13.   (MAPCAR'(LAMBDA(X)(CONS X(- (LENGTH L1)(LENGTH(VL-REMOVE X L1))))) l1))

  14. (defun c:wzfltj ( / lst newlst x1 x2 x3 pzx ssa ii no en ptb pzx)

  15. (setq ssa (ssget '((0 . "TEXT") (8 . "承台编号"))))
  16.                 (setq ii   0
  17.                       no  0
  18.                   )
  19.                   (repeat (sslength ssa)
  20.                        (setq en (ssname ssa ii)
  21.                             ptb (vxs en)
  22.           pzx (append pzx (list ptb))
  23.            ii  (1+ ii)               )
  24.                     )
  25.   
  26. (setq lst nil  newlst nil x1 0)
  27. (setq newlst (same(SAMETIMES PZX)))


  28. (setq x2 (getpoint "\起始位置"))
  29.   (setq x3 (polar x2  0 12000))
  30.   
  31.     (command "text" "j" "c" (polar x2 (* pi 0.5) 3000) "2000" "0" "种类" "")
  32.   (command "text" "j" "c" (polar x3 (* pi 0.5) 3000) "2000" "0" "数量" "")
  33.   (entmake (list '(0 . "line") '(8 . "0") (cons 10 (polar x2 (* pi 0.5) 3000))  (cons 11 (polar x3 (* pi 0.5) 3000)) ))
  34.   (repeat (length newlst)
  35.     (command "text" "j" "c" x2 "1500" "0" (vl-princ-to-string (car (nth x1 newlst))) "")
  36.     (command "text"  "j" "c" x3 "1500" "0" (vl-princ-to-string(cdr(nth x1 newlst))) "")
  37.     (entmake (list '(0 . "line") '(8 . "0") (cons 10 x2)  (cons 11 x3) ))
  38.     (setq x2(polar x2 (* pi 1.5) 3000))
  39.     (setq x3 (polar x2  0 12000))
  40.     (setq x1(1+ x1))
  41.     )
  42.       
  43. (PRINC)               
  44. )

  45.          
 楼主| 发表于 2015-12-21 20:51:48 | 显示全部楼层
块内文字分类统计3.LSP

  1. (DEFUN VXS (E /)
  2.       (READ(CDR (ASSOC 1 (ENTGET E))))


  3.   )
  4. ;;vla版递归遍历图元
  5. ;;(sk_get_blk->ent obj) obj= 插入块的vla-object
  6. ;;by edata 2015-9-1
  7. (defun sk_get_blk->ent(blk / blk_name  blocks n lst)
  8.   (if(and blk (= (vla-get-objectname blk) "AcDbBlockReference"))
  9.     (progn
  10.       (setq blk_name(vla-get-name blk))
  11.       (setq blocks(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))))
  12.       (vlax-for n (vla-item blocks blk_name)
  13.         (cond ((= (vla-get-objectname n) "AcDbBlockReference")
  14.               (setq lst(append (sk_get_blk->ent n) lst ))
  15.                )
  16.               (t (setq lst(cons n lst)))
  17.               )
  18.         )
  19.       (reverse lst)
  20.       )
  21.     )
  22.   )

  23. ;;test
  24. (defun insertbl ( en / obj all_blk_en lst i)
  25.   (setq obj(vlax-ename->vla-object en))
  26.   (setq all_blk_en(mapcar 'vlax-vla-object->ename (sk_get_blk->ent obj)))
  27.   (setq lst '())
  28.   ;(setq i 0)

  29. (mapcar  '(lambda (x)
  30.           (if (= (cdr(assoc 0 (entget X))) "TEXT")
  31. (PROGN
  32. (setq lst (append lst (list(read(cdr(assoc 1 (entget X)))))))
  33. ;(setq i (1+ i))
  34. )
  35.   )
  36.           )
  37.          all_blk_en
  38. )
  39.   lst
  40.   )



  41. ;(VL-SORT PZX '(lambda(E1 E2) (EQUAL E1 E2  ) ) )
  42. (DEFUN SAME (L1 / L2 l3);;;;;
  43.   (WHILE L1 (IF(MEMBER (CAR L1)(CDR L1))(SETQ L2(APPEND L2 (LIST(CAR L1))))

  44.            (SETQ L3(APPEND L3 (LIST(CAR L1))))
  45.               )
  46.     (SETQ L1(VL-REMOVE(CAR L1 )L1))
  47.     )

  48. (append l2 l3))


  49. (DEFUN SAMETIMES (L1 / ) ;;;;;;
  50.   (MAPCAR'(LAMBDA(X)(CONS X(- (LENGTH L1)(LENGTH(VL-REMOVE X L1))))) l1))

  51. (defun c:wzfltj ( / lst newlst x1 x2 x3 pzx ssa ii no en ptb pzx)

  52. (setq ssa (ssget '((0 . "insert") )))
  53.                 (setq ii   0
  54.                       no  0
  55.                   )
  56.                   (repeat (sslength ssa)
  57.                        (setq en (ssname ssa ii)
  58.                             ptb (insertbl en)
  59.           pzx (append pzx (list ptb))
  60.            ii  (1+ ii)               )
  61.                     )
  62.   
  63. (setq lst nil  newlst nil x1 0)
  64. (setq newlst (same(SAMETIMES PZX)))


  65. (setq x2 (getpoint "\起始位置"))
  66.   (setq x3 (polar x2  0 12000))
  67.   
  68.     (command "text" "j" "c" (polar x2 (* pi 0.5) 3000) "2000" "0" "种类" "")
  69.   (command "text" "j" "c" (polar x3 (* pi 0.5) 3000) "2000" "0" "数量" "")
  70.   (entmake (list '(0 . "line") '(8 . "0") (cons 10 (polar x2 (* pi 0.5) 3000))  (cons 11 (polar x3 (* pi 0.5) 3000)) ))
  71.   (repeat (length newlst)
  72.     (command "text" "j" "c" x2 "1500" "0" (vl-princ-to-string (car (nth x1 newlst))) "")
  73.     (command "text"  "j" "c" x3 "1500" "0" (vl-princ-to-string(cdr(nth x1 newlst))) "")
  74.     (entmake (list '(0 . "line") '(8 . "0") (cons 10 x2)  (cons 11 x3) ))
  75.     (setq x2(polar x2 (* pi 1.5) 3000))
  76.     (setq x3 (polar x2  0 12000))
  77.     (setq x1(1+ x1))
  78.     )
  79.       
  80. (PRINC)               
  81. )

  82.          
 楼主| 发表于 2015-12-21 20:53:49 | 显示全部楼层

  1. (DEFUN VXS (E /)
  2.       (READ(CDR (ASSOC 1 (ENTGET E))))


  3.   )
  4. ;;vla版递归遍历图元
  5. ;;(sk_get_blk->ent obj) obj= 插入块的vla-object
  6. ;;by edata 2015-9-1
  7. (defun sk_get_blk->ent(blk / blk_name  blocks n lst)
  8.   (if(and blk (= (vla-get-objectname blk) "AcDbBlockReference"))
  9.     (progn
  10.       (setq blk_name(vla-get-name blk))
  11.       (setq blocks(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))))
  12.       (vlax-for n (vla-item blocks blk_name)
  13.         (cond ((= (vla-get-objectname n) "AcDbBlockReference")
  14.               (setq lst(append (sk_get_blk->ent n) lst ))
  15.                )
  16.               (t (setq lst(cons n lst)))
  17.               )
  18.         )
  19.       (reverse lst)
  20.       )
  21.     )
  22.   )

  23. ;;test
  24. (defun insertbl ( en / obj all_blk_en lst i)
  25.   (setq obj(vlax-ename->vla-object en))
  26.   (setq all_blk_en(mapcar 'vlax-vla-object->ename (sk_get_blk->ent obj)))
  27.   (setq lst '())
  28.   ;(setq i 0)

  29. (mapcar  '(lambda (x)
  30.           (if (= (cdr(assoc 0 (entget X))) "TEXT")
  31. (PROGN
  32. (setq lst (append lst (list(read(cdr(assoc 1 (entget X)))))))
  33. ;(setq i (1+ i))
  34. )
  35.   )
  36.           )
  37.          all_blk_en
  38. )
  39.   lst
  40.   )



  41. ;(VL-SORT PZX '(lambda(E1 E2) (EQUAL E1 E2  ) ) )
  42. (DEFUN SAME (L1 / L2 l3);;;;;
  43.   (WHILE L1 (IF(MEMBER (CAR L1)(CDR L1))(SETQ L2(APPEND L2 (LIST(CAR L1))))

  44.            (SETQ L3(APPEND L3 (LIST(CAR L1))))
  45.               )
  46.     (SETQ L1(VL-REMOVE(CAR L1 )L1))
  47.     )

  48. (append l2 l3))


  49. (DEFUN SAMETIMES (L1 / ) ;;;;;;
  50.   (MAPCAR'(LAMBDA(X)(CONS X(- (LENGTH L1)(LENGTH(VL-REMOVE X L1))))) l1))

  51. (defun c:wzfltj ( / lst newlst x1 x2 x3 pzx ssa ii no en ptb pzx)

  52. (setq ssa (ssget '((0 . "insert") )))
  53.                 (setq ii   0
  54.                       no  0
  55.                   )
  56.                   (repeat (sslength ssa)
  57.                        (setq en (ssname ssa ii)
  58.                             ptb (insertbl en)
  59.           pzx (append pzx ptb)
  60.            ii  (1+ ii)               )
  61.                     )
  62.   
  63. (setq lst nil  newlst nil x1 0)
  64. (setq newlst (same(SAMETIMES PZX)))


  65. (setq x2 (getpoint "\起始位置"))
  66.   (setq x3 (polar x2  0 12000))
  67.   
  68.     (command "text" "j" "c" (polar x2 (* pi 0.5) 3000) "2000" "0" "种类" "")
  69.   (command "text" "j" "c" (polar x3 (* pi 0.5) 3000) "2000" "0" "数量" "")
  70.   (entmake (list '(0 . "line") '(8 . "0") (cons 10 (polar x2 (* pi 0.5) 3000))  (cons 11 (polar x3 (* pi 0.5) 3000)) ))
  71.   (repeat (length newlst)
  72.     (command "text" "j" "c" x2 "1500" "0" (vl-princ-to-string (car (nth x1 newlst))) "")
  73.     (command "text"  "j" "c" x3 "1500" "0" (vl-princ-to-string(cdr(nth x1 newlst))) "")
  74.     (entmake (list '(0 . "line") '(8 . "0") (cons 10 x2)  (cons 11 x3) ))
  75.     (setq x2(polar x2 (* pi 1.5) 3000))
  76.     (setq x3 (polar x2  0 12000))
  77.     (setq x1(1+ x1))
  78.     )
  79.       
  80. (PRINC)               
  81. )

  82.          
发表于 2022-5-12 17:31:19 | 显示全部楼层
达个历害了``````
发表于 2022-8-22 16:56:46 | 显示全部楼层
这个很有借鉴!!
发表于 2023-7-1 20:06:53 | 显示全部楼层
图层指定了,不是承台编号,统计不了,这个只选前面一个字母就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 20:44 , Processed in 0.199601 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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