明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1802|回复: 19

[提问] 求一段LISP源码(MTEXT查找定位)

[复制链接]
发表于 2022-11-17 19:40 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2022-11-17 20:21 编辑



以上图示,为MTEXT多行字,其中包含“张三”三处
代码找到它,和它的中心坐标,输出一个表
((张三 pt1) (张三 pt2) (张三  pt3))

想炸开的想法不在此列,禁言!

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-11-19 04:15 | 显示全部楼层
(defun c:hqwbxx (/ xzj xzjshl i ty tylb wbnr wnxy 10xy 11xy 72dq 73dq mbwbj wjmch mbwb str)
  (princ "\n选择待提取信息的文本:")


  (setq xzj (ssget '((0 . "MTEXT")))
          xzjshl (sslength xzj))


  (setq i 0)
  (repreat xzjshl
     (setq ty    (ssname xzj i)
             tybl  (entget ty)
             wbnr (cdr (assoc 1 tylb))
             10xy (cdr (assoc 10 tylb))
             11xy (cdr (assoc 11 tylb))
             72dq (cdr (assoc 72 tylb))
             73dq (cdr (assoc 73 tylb)))

     (if (wcmatch wbnr "*张三*")
        (progn
            (cond ( (and (= 72dq 0) (= 73dq 0)) (setq wbxy 10xy) )
                     ( t (setq wbxy 11xy) )
             )

             (setq mbwbj (cons (list wbnr wbxy) mbwbj))
       ) )

        (setq i (1+ i))
   )

   (setq wjmch (getfiled "" "" "txt" 1)
           wjmch (open wjmch "w"))

   (foreach mbwb mbwbj
     (setq wbnr (car mbwb)
             wbxy (cadr mbwb))
     (setq str (strcat wbnr "," (rtos (car wbxy) 2 3) "," (rtos (cadr wbxy) 2 3)))
     (write-line str wjmch)
  )

  (alert "写入文件成功!")
)

这是我即兴编写的,没有调试过,你试试看看,不行的话,你修改一下。
 楼主| 发表于 2022-11-19 20:29 | 显示全部楼层
本帖最后由 尘缘一生 于 2022-11-19 20:32 编辑
sto111 发表于 2022-11-19 04:15
(defun c:hqwbxx (/ xzj xzjshl i ty tylb wbnr wnxy 10xy 11xy 72dq 73dq mbwbj wjmch mbwb str)
  (prin ...

代码经过测试,不是这个意思,你这个对于单行的可以,
主要是,对于一大篇的MTEXT , 对其中特定字符,取得它的位置和字符串。

  • ;;---------------c:hqwbxx
  • (defun c:tt () ;(/ xzj xzjshl i ty tybl wbnr wnxy 10xy 11xy 72dq 73dq mbwbj wjmch mbwb str)
  •   (princ "\n 选择待提取信息的文本:")
  •   (setq xzj (ssget '((0 . "MTEXT"))) xzjshl (sslength xzj))
  •   (setq i 0)
  •   (repeat xzjshl
  •     (setq
  •       ty (ssname xzj i)
  •       tybl (entget ty)
  •       wbnr (cdr (assoc 1 tybl))
  •       10xy (cdr (assoc 10 tybl))
  •       11xy (cdr (assoc 11 tybl))
  •       72dq (cdr (assoc 72 tybl))
  •       73dq (cdr (assoc 73 tybl)))
  •     (if (wcmatch wbnr "*张三*")
  •       (progn
  •         (cond
  •           ((and (= 72dq 0) (= 73dq 0))
  •             (setq wbxy 10xy)
  •           )
  •           (t (setq wbxy 11xy))
  •         )
  •         (setq mbwbj (cons (list wbnr wbxy) mbwbj))
  •       )
  •     )
  •     (setq i (1+ i))
  •   )
  •   (setq wjmch (getfiled "" "" "txt" 1) wjmch (open wjmch "w"))
  •   (foreach mbwb mbwbj
  •     (setq wbnr (car mbwb) wbxy (cadr mbwb))
  •     (setq str (strcat wbnr "," (rtos (car wbxy) 2 3) "," (rtos (cadr wbxy) 2 3)))
  •     (write-line str wjmch)
  •   )
  •   (close wjmch)
  •   (alert "写入文件成功!")
  • mbwbj
  • )


我目前,还是采取:炸开-取得-再还原MTEXT


 楼主| 发表于 2022-11-20 05:25 | 显示全部楼层
sto111 发表于 2022-11-19 22:33
你需要的坐标是张三的中心坐标,还是它的插入坐标啊?
如果是中心坐标,可以使用textbox这个函数

插入坐标,中心点,都可以,关键是多行MTEXT如何找,根据上面黄大师说的,实际也是有办法的,只是,很难精确。
发表于 2022-11-17 19:52 来自手机 | 显示全部楼层
搜索学习entget,wcmatch代码案例,对照群码表,

点评

坐标点位怎么求?  发表于 2022-11-17 19:54
发表于 2022-11-17 19:58 | 显示全部楼层
你这截图让整个论坛都岌岌可危,建议删了。
发表于 2022-11-18 08:36 | 显示全部楼层
xiangganglv 发表于 2022-11-17 19:58
你这截图让整个论坛都岌岌可危,建议删了。

哈哈  6666666666666666
发表于 2022-11-18 08:48 | 显示全部楼层
发表于 2022-11-18 09:53 | 显示全部楼层
发表于 2022-11-18 13:18 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2022-11-18 16:20 | 显示全部楼层

院长就是终结者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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