明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1529|回复: 10

块文字 如何求和?

[复制链接]
发表于 2023-2-28 10:39:20 | 显示全部楼层 |阅读模式
块文字 用as nbs等求和插件 无法求和 求大佬支招
发表于 2023-2-28 11:26:34 | 显示全部楼层
最简单的办法用ET工具爆破,成普通文字之后就可以求和了。
ET命令burst
 楼主| 发表于 2023-2-28 11:31:51 | 显示全部楼层
自贡黄明儒 发表于 2023-2-28 11:26
最简单的办法用ET工具爆破,成普通文字之后就可以求和了。
ET命令burst

感谢
发表于 2023-2-28 15:35:31 | 显示全部楼层
爆破太残忍了,写个代码提取不就得了
 楼主| 发表于 2023-2-28 15:48:36 | 显示全部楼层
烟盒迷唇 发表于 2023-2-28 15:35
爆破太残忍了,写个代码提取不就得了

这个技术 办不了
发表于 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)                    )   
                 (setq  pt  (cdr (assoc 10 ent))
                       lst_pt (cons pt lst_pt)      
              )   
              )   
                    )  
      )  
  )     
   ;;返回  
  (reverse lst_pt) ;_块内圆对象的圆心坐标
)










发表于 2023-2-28 22:31:55 | 显示全部楼层
 楼主| 发表于 2023-3-2 14:54:19 | 显示全部楼层
zml84 发表于 2023-2-28 22:31
https://mp.weixin.qq.com/s/k0kAc9nzMbfQ3tPVbEEOiA

大佬 这个怎么用 在哪里操作啊
发表于 2023-3-12 20:58:00 | 显示全部楼层
本帖最后由 zml84 于 2023-3-12 21:25 编辑




  1. ;;;============================================================*
  2. ;;;功能:块(普通块)内文字求和                                 *
  3. ;;;日期:zml84 练习于 2023-03-12                               *
  4. (defun c:tt (/  ss  lst  i  en  ent  block_name  tmp  sum)

  5.     (princ "\n功能:块(普通块)内文字求和")
  6.    
  7.     (if (setq ss (ssget '((0 . "INSERT"))))
  8.         (progn
  9.             ;; 1、逐个块查找
  10.             (setq lst  '()
  11.                   i  0
  12.             )
  13.             (repeat (sslength ss)
  14.             
  15.                 (setq en   (ssname ss i)
  16.                       ent   (entget en)
  17.                       block_name (cdr (assoc 2 ent))
  18.                 )
  19.                 (setq tmp (20230312-BLOCK-get-text block_name))
  20.                 (print tmp)
  21.                
  22.                 (setq lst (append lst tmp ))
  23.                
  24.                 (setq i (1+ i))
  25.             )
  26.             
  27.             ;; 2、显示找到的文本内容
  28.             (princ "\n------------------------")
  29.             (print lst)
  30.             (princ " ===>>  ")
  31.             
  32.             ;; 3、求和运算
  33.             (setq sum (apply '+ (mapcar 'eval (mapcar 'read lst))))
  34.             
  35.             ;; 4、显示结果
  36.             (princ sum)
  37.         )
  38.     )
  39.    
  40.     (princ)
  41. )

  42. ;;;============================================================*
  43. ;;;功能:获取  块定义  文字内容。*
  44. ;;;测试:(20230312-BLOCK-get-text   "块1")                     *
  45. ;;;日期:zml84 于 2022-11-27                                   *
  46. ;;;      zml84 修改于 2023-03-12                               *
  47. (defun 20230312-BLOCK-get-text (block_name / lst_ent ent   lst_str)
  48.     (if (setq en (tblobjname "BLOCK" block_name))
  49.         (progn
  50.             ;; 1、获取列表  
  51.             (setq lst_ent '())
  52.             (while (setq en (entnext en))
  53.                 (setq ent     (entget en)
  54.                       lst_ent (cons ent lst_ent)
  55.                 )
  56.             )
  57.             ;; 2、逐个ent分析,获取TEXT对象的文本内容
  58.             ;;    若为纯数值,则记录入表,供后续返回。
  59.             (setq lst_str nil)
  60.             (foreach ent lst_ent
  61.                 ;;(print ent)
  62.                 (if (= (cdr (assoc 0 ent)) "TEXT")
  63.                     (setq  str  (cdr (assoc 1 ent))
  64.                           lst_str  (cons str lst_str)
  65.                     )
  66.                 )
  67.             )
  68.         )
  69.     )
  70.     ;;返回  
  71.     (reverse lst_str)
  72. )


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-3-13 16:32:36 | 显示全部楼层
如果本人来处理类似问题,先会规范下块的文字,一般用属性。然后用数据提取把某类块的属性提取到Excel中,在Excel,用公式或Power Qurey,想怎么处理就怎么处理,如相同属性值求和,求废弃均值;某些属性计数,等等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:42 , Processed in 0.156572 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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