好的。。。现在我很困惑
让我们把它分解:
有带超链接的文字/多行文字:
相同的文本字符串相同的超链接
相同的文本字符串不同的超链接
不同的文本字符串相同的超链接
不同的文本字符串不同的超链接
有文字/多行文字:
相同的文本字符串
不同的文本字符串
存在具有超链接的对象:
相同对象类型相同超链接
相同的对象类型不同的超链接
不同的对象类型相同的超链接
不同的对象类型不同的超链接
现在,这段代码将搜索文本/多行文字中的重复文本字符串,并打印一个重复列表。
一个具有超链接,但未过滤重复链接
另一个只是普通的文本
让我们从这个开始
-
- (defun c:test (/ text_obj tobj tobj_v tx-str dp_hl_lst Hlnk_lst dp_tx_lst text_lst)
- (vl-load-com)
- (setq text_obj (ssget "_X" '((0 . "MTEXT,TEXT"))) cnt -1
- )
- (while (setq tobj (ssname text_obj (setq cnt (1+ cnt))))
- (setq tobj_v (vlax-ename->vla-object tobj))
- (if (= (vla-get-count (vla-get-hyperlinks tobj_v)) 1)
- (if
- (member (setq tx-str (vla-get-textstring tobj_v)) Hlnk_lst)
- (setq dp_hl_lst (cons tx-str dp_hl_lst))
- (setq Hlnk_lst (cons tx-str Hlnk_lst))
- )
- (if
- (member (setq tx-str (vla-get-textstring tobj_v)) text_lst)
- (setq dp_tx_lst (cons tx-str dp_tx_lst))
- (setq text_lst (cons tx-str text_lst))
- )
- )
- )
- (textscr)
- (prompt "\n<< List of Duplicate Text String with Hyperlink >>")
- (foreach s
- (LM:Unique_iter dp_hl_lst)
- (princ (strcat "\nFound Duplicate for " s))
- )
- (prompt "\n\n<< List of Duplicate Text\Mtext >>")
- (foreach s
- (LM:Unique_iter dp_tx_lst)
- (princ (strcat "\nFound Duplicate for " s))
- ) (princ)
- )
- ;; Credit to Lee Mac ;;
- (defun LM:Unique_iter (l / r)
- (while (setq x (car l))
- (setq r (cons x r)
- l (vl-remove x (cdr l))))
- (reverse r))
希望这能让你开始 |