明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 943|回复: 2

[已解答] 请教这个代码为什么无法选中数字?

[复制链接]
发表于 2015-12-27 19:06:51 | 显示全部楼层 |阅读模式

(defun c:ee ( / apple_txt nl apple_nl apple_kkj apple_getstr apple_hb1 apple_hb0 apple_oldjd x y z apple_wz apple apple_wz1 zkh zkh1 apple_newjd obj qq nb nb1)
  (vl-load-com)
  (setq apple_txt nil nl nil apple_nl nil apple_kkj nil apple_getstr nil)
  (if (ssget '((0 . "* text")))
    (vlax-for obj (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
      (setq apple_txt (cons(strcat(vla-get-textstring obj) "*")apple_txt))
      )
    )  
  (setq apple_hb (vl-catch-all-apply 'strcat apple_txt))
  (while (vl-string-search "\\p" apple_hb)
    (setq apple_hb (vl-string-subst "*" "\\p" apple_hb))
    )
  (setq apple_hb0 apple_hb)
  (while
    (setq nb (vl-string-search "{" apple_hb)
          nb1 (vl-string-search "}" apple_hb))
          (setq nl (cons (substr apple_hb (+ nb 1)(- nb1 (- nb 1))) nl))
           (setq apple_hb (substr apple_hb (+ nb1 2)))
          )
    (setq apple_hb1 (vl-catch-all-apply 'strcat nl))
    (mapcar
      '(lambda (x)
         (setq apple_hb0 (vl-string-subst " " x apple_hb0))
         ) nl
      )
    (while
      (setq apple_wz (vl-string-search ";" apple_hb1))
      (setq apple_hb1 (substr apple_hb1 (+ apple_wz 2)))
      (setq zkh (vl-string-search "}" apple_hb1))
      (setq zkh1 (vl-string-search "\\" apple_hb1)
            )
      (cond
        ((null zkh1)(setq qq zkh))
        (t (setq qq (min zkh zkh1)))
        )
      (setq apple_nl (cons (substr apple_hb1 1 (+ qq 1)) apple_nl))
      (setq apple_hb1 (substr apple_hb1 (+ qq 2)))
      )
    (setq apple_nl (cons apple_hb0 apple_nl))
    (setq apple_nl (vl-catch-all-apply 'strcat apple_nl))
    (mapcar '(lambda (y)
               (if (not(or(and(<= y 57)(>= y 48)) (= y 46) (= y 45)))
                    (setq y 32))
                (setq apple_kkj (cons y apple_kkj)))
               (vl-string->list apple_nl)
               )
        (setq apple_kkj (vl-string-trim " " (vl-list->string (reverse apple_kkj))))
        (while
              (setq apple_wz1 (vl-string-search " " apple_kkj))
              (setq apple_getstr (cons (substr apple_kkj 1 apple_wz1) apple_getstr))
              (setq apple_kkj (vl-string-trim " " (substr apple_kkj (+ apple_wz1 2))))
              )
     (setq apple_getstr
        (mapcar '(lambda (z)
        (atof z)
                   )
                (vl-remove "." (vl-remove "-"(cons apple_kkj apple_getstr))))
           )
    (setq apple_jsjg (vl-catch-all-apply '+ apple_getstr))
    (princ "\n&所选文字中数字的和为&:")
    (princ apple_jsjg)
    (cond ((null apple_oldjd) (setq apple_oldjd 2)))
    (initget 4)
    (setq apple_newjd (getint(strcat "\n&输入计算精度&<" (rtos apple_oldjd) ">")))
    (if (not apple_newjd)
      (setq apple_newjd apple_oldjd) (setq apple_oldjd apple_newjd)
      )
    (vl-cmdf ".text" (getpoint "\n&计算结果插入点&:")(getdist "\n&输入字高&:") " " (rtos apple_jsjg 2 apple_newjd))
    (princ)
    )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-12-27 20:16:45 | 显示全部楼层
本帖最后由 lxw320 于 2015-12-27 20:19 编辑

((0 . "*text")) *与text间不能有空格
  1. (defun c:ee ( / apple_txt nl apple_nl apple_kkj apple_getstr apple_hb1 apple_hb0 apple_oldjd x y z apple_wz apple apple_wz1 zkh zkh1 apple_newjd obj qq nb nb1)
  2.         (vl-load-com)
  3.         (setq apple_txt nil nl nil apple_nl nil apple_kkj nil apple_getstr nil)
  4.         (if (ssget '((0 . "*text")))
  5.                 (vlax-for obj (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
  6.                         (setq apple_txt (cons(strcat(vla-get-textstring obj) "*")apple_txt))
  7.                 )
  8.         )  
  9.         (setq apple_hb (vl-catch-all-apply 'strcat apple_txt))
  10.         (while (vl-string-search "\\p" apple_hb)
  11.                 (setq apple_hb (vl-string-subst "*" "\\p" apple_hb))
  12.         )
  13.   (setq apple_hb0 apple_hb)
  14.         (while
  15.                 (setq nb (vl-string-search "{" apple_hb)
  16.                         nb1 (vl-string-search "}" apple_hb))
  17.                 (setq nl (cons (substr apple_hb (+ nb 1)(- nb1 (- nb 1))) nl))
  18.                 (setq apple_hb (substr apple_hb (+ nb1 2)))
  19.         )
  20.         (setq apple_hb1 (vl-catch-all-apply 'strcat nl))
  21.         (mapcar
  22.                 '(lambda (x)
  23.                          (setq apple_hb0 (vl-string-subst " " x apple_hb0))
  24.                  ) nl
  25.         )
  26.         (while
  27.                 (setq apple_wz (vl-string-search ";" apple_hb1))
  28.                 (setq apple_hb1 (substr apple_hb1 (+ apple_wz 2)))
  29.                 (setq zkh (vl-string-search "}" apple_hb1))
  30.                 (setq zkh1 (vl-string-search "\" apple_hb1)
  31.                 )
  32.                 (cond
  33.                         ((null zkh1)(setq qq zkh))
  34.                         (t (setq qq (min zkh zkh1)))
  35.                 )
  36.                 (setq apple_nl (cons (substr apple_hb1 1 (+ qq 1)) apple_nl))
  37.                 (setq apple_hb1 (substr apple_hb1 (+ qq 2)))
  38.         )
  39.         (setq apple_nl (cons apple_hb0 apple_nl))
  40.         (setq apple_nl (vl-catch-all-apply 'strcat apple_nl))
  41.         (mapcar '(lambda (y)
  42.                                                  (if (not(or(and(<= y 57)(>= y 48)) (= y 46) (= y 45)))
  43.                                                          (setq y 32))
  44.                                                  (setq apple_kkj (cons y apple_kkj)))
  45.                 (vl-string->list apple_nl)
  46.         )
  47.         (setq apple_kkj (vl-string-trim " " (vl-list->string (reverse apple_kkj))))
  48.         (while
  49.                 (setq apple_wz1 (vl-string-search " " apple_kkj))
  50.                 (setq apple_getstr (cons (substr apple_kkj 1 apple_wz1) apple_getstr))
  51.                 (setq apple_kkj (vl-string-trim " " (substr apple_kkj (+ apple_wz1 2))))
  52.         )
  53.         (setq apple_getstr
  54.                 (mapcar '(lambda (z)
  55.                                                          (atof z)
  56.                                                  )
  57.                         (vl-remove "." (vl-remove "-"(cons apple_kkj apple_getstr))))
  58.         )
  59.         (setq apple_jsjg (vl-catch-all-apply '+ apple_getstr))
  60.         (princ "\n所选文字中数字的和为:")
  61.         (princ apple_jsjg)
  62.         (cond ((null apple_oldjd) (setq apple_oldjd 2)))
  63.         (initget 4)
  64.         (setq apple_newjd (getint(strcat "\n输入计算精度<" (rtos apple_oldjd) ">")))
  65.         (if (not apple_newjd)
  66.                 (setq apple_newjd apple_oldjd) (setq apple_oldjd apple_newjd)
  67.         )
  68.         (vl-cmdf "text" (getpoint "\n计算结果插入点:")(getdist "\n输入字高:") 0 (rtos apple_jsjg 2 apple_newjd))
  69.         (princ)
  70. )
 楼主| 发表于 2015-12-28 05:31:52 | 显示全部楼层
多谢lxw320,我习惯性的在写完一个单词或者字符后敲一下空格,然后就悲剧了,这个代码我都检查好几遍了,还是有些没检查出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 00:45 , Processed in 0.183301 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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