ddk1983 发表于 2023-2-28 10:39:20

块文字 如何求和?

块文字 用as nbs等求和插件 无法求和 求大佬支招

自贡黄明儒 发表于 2023-2-28 11:26:34

最简单的办法用ET工具爆破,成普通文字之后就可以求和了。
ET命令burst

ddk1983 发表于 2023-2-28 11:31:51

自贡黄明儒 发表于 2023-2-28 11:26
最简单的办法用ET工具爆破,成普通文字之后就可以求和了。
ET命令burst

感谢

烟盒迷唇 发表于 2023-2-28 15:35:31

爆破太残忍了,写个代码提取不就得了

ddk1983 发表于 2023-2-28 15:48:36

烟盒迷唇 发表于 2023-2-28 15:35
爆破太残忍了,写个代码提取不就得了

这个技术 办不了

zml84 发表于 2023-2-28 22:30:35

本帖最后由 zml84 于 2023-2-28 22:33 编辑

块内实体,提取可参见:


;;;============================================================*
;;;功能:获取块定义内部实体。                               *
;;;测试:(QL-BLOCK-get "3柱墩")                                 *
;;;日期:zml84 于 2022-11-27                              *
(defun QL-BLOCK-get (block_name / lst_ent ent pt lst_pt)
   (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分析,获取圆心坐标   
         (foreach ent lst_ent
            ;;;(print ent)   
                           (if (and (= (cdr (assoc 0 ent)) "CIRCLE")
                      (< 0.25(cdr (assoc 40 ent)) 3.0)                  )   
               (setqpt(cdr (assoc 10 ent))
                     lst_pt (cons pt lst_pt)      
            )   
            )   
                  )
      )
)   
   ;;返回
(reverse lst_pt) ;_块内圆对象的圆心坐标
)










zml84 发表于 2023-2-28 22:31:55

https://mp.weixin.qq.com/s/k0kAc9nzMbfQ3tPVbEEOiA

ddk1983 发表于 2023-3-2 14:54:19

zml84 发表于 2023-2-28 22:31
https://mp.weixin.qq.com/s/k0kAc9nzMbfQ3tPVbEEOiA

大佬 这个怎么用 在哪里操作啊

zml84 发表于 2023-3-12 20:58:00

本帖最后由 zml84 于 2023-3-12 21:25 编辑




;;;============================================================*
;;;功能:块(普通块)内文字求和                                 *
;;;日期:zml84 练习于 2023-03-12                               *
(defun c:tt (/sslstienentblock_nametmpsum)

    (princ "\n功能:块(普通块)内文字求和")
   
    (if (setq ss (ssget '((0 . "INSERT"))))
      (progn
            ;; 1、逐个块查找
            (setq lst'()
                  i0
            )
            (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")
                  (setqstr(cdr (assoc 1 ent))
                        lst_str(cons str lst_str)
                  )
                )
            )
      )
    )
    ;;返回
    (reverse lst_str)
)

pym 发表于 2023-3-13 16:32:36

如果本人来处理类似问题,先会规范下块的文字,一般用属性。然后用数据提取把某类块的属性提取到Excel中,在Excel,用公式或Power Qurey,想怎么处理就怎么处理,如相同属性值求和,求废弃均值;某些属性计数,等等。
页: [1] 2
查看完整版本: 块文字 如何求和?