明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 287|回复: 3

[提问] 如何改写下,不过滤图层?

[复制链接]
发表于 2024-8-21 19:38:54 | 显示全部楼层 |阅读模式
5明经币


论坛找到的,xiabin68的程序,想改写下,不过滤图层

请大佬帮忙!


;;给大家一个查找文字,块并用线指出来的程序,作者:xiabin68

(defun c:tt ()
(command "cmdecho" "0")
(command "osmode" "0")
(setq bl (getvar "clayer"))
(initget 7 "1 2")

;;(setq b (getkword "\n 1 屏幕拾取/2 键入:"))
(princ "\n   请在屏幕拾取文字:")
(setq b "1")

(if (= b "1")
     (progn
(setq cc (entsel"  【注意】只能选择块或文字:"))
;(setq pt_cc (getpoint  "\n 指定定位连线端点:"))
(setq pt_cc (cadr cc))


(if (/= cc nil)
(progn
(setq c (entget (car cc)))
(setq nnn (cdr (assoc 0 c)))
(setq name (assoc 0 c))
(setq lr (assoc 1 c))
(setq km (assoc 2 c))
(setq a1 (assoc 8 c))
(if (= nnn "TEXT")
    (setq ss (ssget "x" (list '(0 . "MTEXT,TEXT") a1 lr)))
)
(if (= nnn "MTEXT")
  (SETQ SS (SSGET "X" (LIST '(0 . "MTEXT,TEXT") a1 lr)))
  )
(if (= nnn "INSERT")
  (setq ss (ssget "x" (list name km a1)))
  )
)
(princ "没有选择任何内容!")
)
)
     )
(if (= b "2")
  (progn
  (setq a (getstring "要查找的字符串:"))
   (setq a1 (getstring "字符串所在图层:"))
   (setq ss (ssget "x" (list '(0 . "MTEXT,TEXT") (cons 1 (STRCAT "*"a"*" "," "*"a "," a"*")) (cons 8 a1))))
  )
  )
(if (/= ss nil)
(progn
(setq i (sslength ss))
(setq j 0)
(command "-layer" "m" "BJTP" "C" "1" "" "")
(repeat i
(setq a (entget (ssname ss j)))
(setq XY (cdr (assoc 10 a)))

;;(COMMAND "LINE" XY "-1500,-1500" "")
(COMMAND "LINE" XY pt_cc "")

(setq j (+ 1  j))
  )
(PRINC (strcat "共找到"(rtos i 2 0)"处!"))
(command "layer" "s" bl "")
  )
  (princ "没有找到你要的内容!")
  )
)
  


最佳答案

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-21 19:38:55 | 显示全部楼层
  1. (defun c:tt ()
  2. (command "cmdecho" "0")
  3. (command "osmode" "0")
  4. (setq bl (getvar "clayer"))
  5. (princ "\n   请在屏幕拾取文字:")
  6. (if (setq cc (entsel"  【注意】只能选择块或文字:"))
  7.      (progn
  8.   (setq pt_cc (cadr cc))
  9.     (if (/= cc nil)
  10.     (progn
  11.     (setq c (entget (car cc)))
  12.     (setq nnn (cdr (assoc 0 c)))
  13.     (setq name (assoc 0 c))
  14.     (setq lr (assoc 1 c))
  15.     (setq km (assoc 2 c))
  16.    
  17.     (if (= nnn "TEXT")
  18.         (setq ss (ssget "x" (list '(0 . "MTEXT,TEXT")  lr)))
  19.     )
  20.     (if (= nnn "MTEXT")
  21.       (SETQ SS (SSGET "X" (LIST '(0 . "MTEXT,TEXT")  lr)))
  22.       )
  23.     (if (= nnn "INSERT")
  24.       (setq ss (ssget "x" (list name km )))
  25.       )
  26.     )
  27.     (princ "没有选择任何内容!")
  28.     )
  29.    
  30.     (if (/= ss nil)
  31. (progn
  32. (setq i (sslength ss))
  33. (setq j 0)
  34. (command "-layer" "m" "BJTP" "C" "1" "" "")
  35. (repeat i
  36. (setq a (entget (ssname ss j)))
  37. (setq XY (cdr (assoc 10 a)))

  38. (COMMAND "LINE" XY pt_cc "")

  39. (setq j (+ 1  j))
  40.   )
  41. (PRINC (strcat "共找到"(rtos i 2 0)"处!"))
  42. (command "layer" "s" bl "")
  43.   )
  44.   (princ "没有找到你要的内容!")
  45.   )
  46.    
  47.    
  48.    
  49.    
  50. )
  51.      )

  52. )
回复

使用道具 举报

发表于 2024-8-21 20:06:04 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-8-21 20:07 编辑

把 (cons 8 a1)去掉就是了

(setq ss (ssget "x" (list '(0 . "MTEXT,TEXT") a1 lr)))
(setq ss (ssget "x" (list name km a1)))
去掉a1

回复

使用道具 举报

 楼主| 发表于 2024-8-21 22:03:35 | 显示全部楼层
感谢各位大佬的帮助与分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:38 , Processed in 0.195613 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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