本帖最后由 zml84 于 2023-3-12 21:25 编辑
- ;;;============================================================*
- ;;;功能:块(普通块)内文字求和 *
- ;;;日期:zml84 练习于 2023-03-12 *
- (defun c:tt (/ ss lst i en ent block_name tmp sum)
- (princ "\n功能:块(普通块)内文字求和")
-
- (if (setq ss (ssget '((0 . "INSERT"))))
- (progn
- ;; 1、逐个块查找
- (setq lst '()
- i 0
- )
- (repeat (sslength ss)
-
- (setq en (ssname ss i)
- ent (entget en)
- block_name (cdr (assoc 2 ent))
- )
- (setq tmp (20230312-BLOCK-get-text block_name))
- (print tmp)
-
- (setq lst (append lst tmp ))
-
- (setq i (1+ i))
- )
-
- ;; 2、显示找到的文本内容
- (princ "\n------------------------")
- (print lst)
- (princ " ===>> ")
-
- ;; 3、求和运算
- (setq sum (apply '+ (mapcar 'eval (mapcar 'read lst))))
-
- ;; 4、显示结果
- (princ sum)
- )
- )
-
- (princ)
- )
- ;;;============================================================*
- ;;;功能:获取 块定义 文字内容。*
- ;;;测试:(20230312-BLOCK-get-text "块1") *
- ;;;日期:zml84 于 2022-11-27 *
- ;;; zml84 修改于 2023-03-12 *
- (defun 20230312-BLOCK-get-text (block_name / lst_ent ent lst_str)
- (if (setq en (tblobjname "BLOCK" block_name))
- (progn
- ;; 1、获取列表
- (setq lst_ent '())
- (while (setq en (entnext en))
- (setq ent (entget en)
- lst_ent (cons ent lst_ent)
- )
- )
- ;; 2、逐个ent分析,获取TEXT对象的文本内容
- ;; 若为纯数值,则记录入表,供后续返回。
- (setq lst_str nil)
- (foreach ent lst_ent
- ;;(print ent)
- (if (= (cdr (assoc 0 ent)) "TEXT")
- (setq str (cdr (assoc 1 ent))
- lst_str (cons str lst_str)
- )
- )
- )
- )
- )
- ;;返回
- (reverse lst_str)
- )
|