明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 284|回复: 3

[提问] 请问怎么用LISP提取每个圆圈或者方框内的文字然后把文字合并起来?

[复制链接]
发表于 2024-6-13 19:53 | 显示全部楼层 |阅读模式
本帖最后由 qqask 于 2024-6-13 19:54 编辑

如图所示,要把每个圆圈或者方框内的上下文字合并起来。

比如说中间的文字要提取出PDG-832A和SF-3606。
网上AI找了些代码,但都写得不全或者运行错误。



  1. (defun c:MergeTextInCircles (/ ss i ename txtpos txt txtlist mergedtxt)
  2.   ; 初始化变量
  3.   (setq txtlist nil)
  4.   (setq mergedtxt "")

  5.   ; 选择包含文字的圆
  6.   (setq ss (ssget "S=C;X;"))
  7.   if ss
  8.     ; 遍历选择集中的每个圆
  9.     (repeat (sslength ss)
  10.       (setq i (ssname ss (setq i (1+ i))))
  11.       (setq circEnt (entget i))
  12.       (if circEnt
  13.         (progn
  14.           ; 获取圆的中心点
  15.           (setq circCtr (cdr (assoc 10 circEnt)))
  16.           ; 查找圆内的所有文字对象
  17.           (mapcar
  18.             '(lambda (ename)
  19.               (setq txtEnt (entget ename))
  20.               (if txtEnt
  21.                 (progn
  22.                   ; 获取文字位置和内容
  23.                   (setq txtpos (cdr (assoc 10 txtEnt)))
  24.                   (setq txt (cdr (assoc 1 txtEnt)))

  25.                   ; 这里需要添加逻辑来确保文字在圆内
  26.                   ; ...

  27.                   ; 将文字内容添加到列表
  28.                   (setq txtlist (cons txt txtlist))
  29.                 )
  30.               )
  31.             )
  32.             ; 这里应该是获取圆内所有文字对象的命令或函数
  33.             ; 例如使用空间搜索或其他方法
  34.             )
  35.           )
  36.         )
  37.       )
  38.     )
  39.     ; 合并文字
  40.     (foreach txt txtlist
  41.       (setq mergedtxt (strcat mergedtxt txt "\P")) ; 假设"\P"在AutoCAD中用作换行符
  42.     )
  43.     ; 假设我们在第一个圆的中心创建合并的文字对象
  44.     (if txtlist
  45.       (command "_.text" (car circCtr) "" mergedtxt)
  46.     )
  47.   )
  48.   (princ)
  49. )

  50. ; 加载LISP程序并运行命令
  51. (load "pmerge_text_in_circles")
  52. (princ "\nLISP程序已加载。输入 'MergeTextInCircles' 来运行。")
  53. (princ)


本帖子中包含更多资源

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

x
发表于 2024-6-13 22:42 | 显示全部楼层
这个问题可大可小啊.
大就是性能考虑,要构建各种树,不过四叉树就好了...
小就是暴力选择...
发表于 2024-6-14 16:32 | 显示全部楼层
这种P&ID图的测点,使用属性块,方便提取信息、统计数量。
发表于 2024-6-14 16:55 | 显示全部楼层
设计信息的组织很重要,否则都是这种用分散的文字去表示实际需要关联的内容,最后还想用程序来获取,哪有这种好事?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-26 18:17 , Processed in 0.152728 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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