求一段LISP源码(MTEXT查找定位)
本帖最后由 尘缘一生 于 2022-11-17 20:21 编辑以上图示,为MTEXT多行字,其中包含“张三”三处
代码找到它,和它的中心坐标,输出一个表
((张三 pt1) (张三 pt2) (张三pt3))
想炸开的想法不在此列,禁言!
(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: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
sto111 发表于 2022-11-19 22:33
你需要的坐标是张三的中心坐标,还是它的插入坐标啊?
如果是中心坐标,可以使用textbox这个函数
插入坐标,中心点,都可以,关键是多行MTEXT如何找,根据上面黄大师说的,实际也是有办法的,只是,很难精确。 搜索学习entget,wcmatch代码案例,对照群码表, 你这截图让整个论坛都岌岌可危,建议删了。 xiangganglv 发表于 2022-11-17 19:58
你这截图让整个论坛都岌岌可危,建议删了。
哈哈6666666666666666 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=91554&highlight=%B2%E9%D5%D2&_dsign=aff0107a,这里面应该有你需要的 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=175593&highlight=%B2%E9%D5%D2&_dsign=这里面应该有你需要的
xyp1964 发表于 2022-11-18 13:18
院长就是终结者
页:
[1]
2