tnvsb 发表于 2022-7-5 13:13:54

带pref的数字求和

尊敬的各位:,
我得到了一个lisp代码,它可以很好地用于带后缀字母的数字求和,但不适用于带前缀字母的数字。请查看附件和下面的lisp代码。
 
(定义C:ADCC(/cpent elist en ip newtext pt ss sum sumtxt)
(原理“\n\t\t>>选择文本以获取摘要>>>”)
(如果
;;在屏幕上选择文字/多行文字:
(setq ss(ssget’((0。“*TEXT”)))
;; 如果选中,则:
(程序
  ;; 存储第一个文本实体,以便进一步使用:
(setq cpent(ssname ss 0))
  ;; 将初始和设置为零:
(setq和0。)
  ;; 通过选定文本/多文本循环:
(虽然
    ;; 获取所选内容中的第一个文本:
(setq en(ssname ss 0))
    ;; 获取它们的实体列表:
(setq elist(entget en))
    ;; 从实体列表中按键1获取文本字符串:
(setq txt(cdr(assoc 1 elist)))
    ;; 创建输出字符串:
(setq sumtxt
                   ;; 连接字符串:
(strcat)
                     ;; 将数字转换为字符串:
(实时操作系统
                       ;; 将文字的数字值相加:
(setq sum(+(atof txt)sum))
                       ;; 2表示公制单位(3表示工程):
                       2
                       ;; 通过电流设置精度:
(getvar“dimdec”))
                  )
    ;; 从选择集中删除实体:
(ssdel en ss)
    )
  ;; 在命令行中显示消息:
(princ(strcat“\nSumm=“sumtxt”)
(setq pt(getpoint“\n指定新文本位置:”)
  ;; 获取存储实体的插入点:
(setq ip(cdr(assoc 10(entget cpent)))
  ;; 将文本实体复制到新的目标点:
(命令“_copy”cpent“”ip pt)
  ;; 获取上次创建的实体:
(setq newtxt(entlast))
  ;; 获取它们的实体列表:
(setq elist(entget newtext))
  ;; 使用新文本字符串修改实体列表:
(entmod(subst(cons 1 sumtxt)(assoc 1 elist)elist)
  ;; 更新更改:
(entupd NewText)
  )
)
(普林斯)
  )
(princ“\n带STX的START命令…”)
(普林斯)

Tharwat 发表于 2022-7-5 13:34:07

这里还有两个AutoLISP论坛,您还没有在其中发布。 
 
http://www.autolisp.com/forum/autocad/autolisp
 
https://www.theswamp.org/index.php?board=2.0

tnvsb 发表于 2022-7-5 14:03:14

非常感谢,先生。

tnvsb 发表于 2022-7-5 14:28:58

但是我的组织屏蔽了这些网站,所以无法发布。
页: [1]
查看完整版本: 带pref的数字求和