块文字 如何求和?
块文字 用as nbs等求和插件 无法求和 求大佬支招最简单的办法用ET工具爆破,成普通文字之后就可以求和了。
ET命令burst
自贡黄明儒 发表于 2023-2-28 11:26
最简单的办法用ET工具爆破,成普通文字之后就可以求和了。
ET命令burst
感谢 爆破太残忍了,写个代码提取不就得了 烟盒迷唇 发表于 2023-2-28 15: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) ;_块内圆对象的圆心坐标
)
https://mp.weixin.qq.com/s/k0kAc9nzMbfQ3tPVbEEOiA zml84 发表于 2023-2-28 22:31
https://mp.weixin.qq.com/s/k0kAc9nzMbfQ3tPVbEEOiA
大佬 这个怎么用 在哪里操作啊 本帖最后由 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)
)
如果本人来处理类似问题,先会规范下块的文字,一般用属性。然后用数据提取把某类块的属性提取到Excel中,在Excel,用公式或Power Qurey,想怎么处理就怎么处理,如相同属性值求和,求废弃均值;某些属性计数,等等。
页:
[1]
2