明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 503|回复: 1

求助代码修改

[复制链接]
发表于 2020-5-28 13:17:46 | 显示全部楼层 |阅读模式
下面是论坛上的代码,文字查找并标记,如何改一下实现:
新建图层aa,并把标记放图层aa上
  1. ;;http://bbs.mjtd.com/forum.php?mod=viewthread&tid=175593&extra=&highlight=%B2%E9%D5%D2&page=2
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;;查找文字2017.09.04增加通配符
  4. (defun czt (sst hand1 / filter sst ss enttxt po ptmid i SearchTXT)
  5.   (if sst
  6.     (progn ;_1
  7.       (setq filter (list '(0 . "*TEXT") (cons 1 sst)))
  8.       (if (= hand1 "1")
  9.         (setq ss (ssget "x" (list '(0 . "*TEXT") (cons 1 sst))))
  10.         (setq ss (ssget (list '(0 . "*TEXT") (cons 1 sst))))
  11.       )
  12.       (if (and (= radio1 "1") ss);
  13.         (progn
  14.           ;;;   (setq basepoint (getpoint "\n指定线段发射基点:"))
  15.           (setq entPtLst '())
  16.           (setq i 0)
  17.           (repeat (sslength ss)
  18.             (setq enttxt (ssname ss i))
  19.             (setq po (cdr (assoc 10 (entget enttxt))))
  20.             (setq ptmid (getmidpo (entbox enttxt)))
  21.             (setq entPtLst (cons ptmid entPtLst))
  22.             ;;;   (if basepoint
  23.             ;;;    (entmakex (list '(0 . "line") '(100 . "AcDbEntity") '
  24.             ;;;               (100 . "ACDbCircle") (cons 8 "-文字线")(cons 10 ptmid)
  25.             ;;;               (cons 11 basepoint)(cons 62 1) '(210 0. 0. 1.))
  26.             ;;;  )
  27.             ;;;    )
  28.             (setq i (+ 1 i))
  29.           )
  30.           ;;;    (princ (strcat "成功处理:" (rtos i) "个对象"))
  31.           (setq SearchTXT (strcat "成功查找:" findtxt  " 共"(rtos i 5) "个对象"))
  32.           (dynamicMTxt SearchTXT 8 entPtLst)
  33.         )
  34.         ;(princ "\n没有找到对象!")
  35.       )
  36.       (if (and (= radio2 "1") ss)
  37.         (sssetfirst nil ss)
  38.       )
  39.     ) ;_progn 1
  40.     (alert "\n您没有选择文字哦!!!")
  41.   )
  42.   ;(endcmd)
  43.   (princ)
  44. )
  45. (defun textstring_find ( / $value Return enttxt findtxt idcl_idtxt po ptmid @dclfiledame)
  46.   (defun write-dialog (dialog_string_1st / @dclfiledame @dclfiled)
  47.     (setq @dclfiledame (vl-filename-mktemp nil nil ".dcl"))
  48.     (setq @dclfiled (open @dclfiledame "w"))
  49.     (foreach x dialog_string_1st
  50.       (write-line x @dclfiled)
  51.     )
  52.     (close @dclfiled)
  53.     @dclfiledame
  54.   )
  55.   (setq findtext:dialog-lst
  56.     (list
  57.       "findtext:dialog{"
  58.       "//:text{label="支持通配符*查找";is_enabled = false;}"
  59.       "label="文字查找";"
  60.       ":column{//label="文字";boxed_row"
  61.       ":row{"
  62.       "label = "是否做标记";"
  63.       ":row{"
  64.       ":radio_button{label="是";key="radio1";}"
  65.       ":radio_button{label="否";key="radio2";}"
  66.       "}"
  67.       ":toggle{label="加前通配符";key="tog1";}"
  68.       ":toggle{label="加后通配符";key="tog2";}"
  69.       ":toggle{label="全图";key="hand1";}"
  70.       "}"
  71.       ":row{"
  72.       "label = "文本输入";"
  73.       ":column{"
  74.       ":edit_box{label="输入文字:";"
  75.       "initial_focus="text2";"
  76.       "key="text2";"
  77.       "edit_width=30;"
  78.       "fixed_width=true;  "
  79.       "}"
  80.       "}                                                                                    "
  81.       "}   //column"
  82.       "}   //boxed_row"
  83.       "//:text{label="Design by:半途中 QQ:455383153";is_enabled = false;}"
  84.       "ok_cancel;"
  85.       "}"
  86.     )
  87.   )
  88.   (setq @dclfiledame(write-dialog findtext:dialog-lst))
  89.   (if (and (= radio1 nil) (= radio2 nil))
  90.     (setq  radio1 "1"
  91.       radio2 "0"
  92.     )
  93.   )
  94.   (if (not tog1)
  95.     (setq tog1 "0")
  96.   )
  97.   (if (not tog2)
  98.     (setq tog2 "0")
  99.   )
  100.   (if (not hand1)
  101.     (setq hand1 "0")
  102.   )
  103.   (if (not text2findtxt_name)
  104.     (setq text2findtxt_name "请输入查找的文字")
  105.   )
  106.   (prompt "\n请选择:")
  107.   (setq idcl_idtxt (load_dialog @dclfiledame))
  108.   (new_dialog "findtext" idcl_idtxt)
  109.   (set_tile "text2" text2findtxt_name)
  110.   (set_tile "radio1" radio1)
  111.   (set_tile "radio2" radio2)
  112.   (set_tile "tog1" tog1)
  113.   (set_tile "tog2" tog2)
  114.   (set_tile "hand1" hand1)
  115.   (mode_tile "text2" 2)
  116.   (action_tile "radio1" "(setq radio1 (vl-princ-to-string 1))(setq radio2  (vl-princ-to-string 0) )")
  117.   (action_tile "radio2" "(setq radio2 (vl-princ-to-string 1))(setq radio1 (vl-princ-to-string 0))")
  118.   (action_tile "tog1" "(setq tog1 $value)")
  119.   (action_tile "tog2" "(setq tog2 $value)")
  120.   (action_tile "hand1" "(setq hand1 $value)")
  121.   (action_tile "text2" "(setq text2findtxt_name (get_tile "text2"))")
  122.   (action_tile "accept" "(done_dialog 1)")
  123.   (action_tile "cancel" "(done_dialog 0)")
  124.   (setq Return (start_dialog))
  125.   (unload_dialog idcl_idtxt)
  126.   (vl-file-delete @dclfiledame)
  127.   (IF (= Return 1)
  128.     (progn
  129.       (if (and (= tog1 "1") (= tog2 "1"))
  130.         (setq findtxt (strcat "*" text2findtxt_name "*"))
  131.       )
  132.       (if (and (= tog1 "1") (= tog2 "0"))
  133.         (setq findtxt (strcat "*" text2findtxt_name))
  134.       )
  135.       (if (and (= tog1 "0") (= tog2 "1"))
  136.         (setq findtxt (strcat text2findtxt_name "*"))
  137.       )
  138.       (if (and (= tog1 "0") (= tog2 "0"))
  139.         (setq findtxt text2findtxt_name)
  140.       )
  141.       (czt findtxt hand1)
  142.     )
  143.   )
  144.   (princ)
  145. );;;defun
  146. ;;单个物体的最小(正交)包围框
  147. (defun entbox (ent / ll ur)
  148.   (vl-load-com)
  149.   (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
  150.   (mapcar 'vlax-safearray->list (list ll ur))
  151. )
  152. ;;求两点中点
  153. (defun getmidpo  (pts / P1 P2 X Y)
  154.   (setq  p1 (car pts)
  155.     p2 (cadr pts)
  156.   )
  157.   (if (= (length p1) (length p2))
  158.     nil
  159.     (setq p1 (list (car p1) (cadr p1))
  160.       p2 (list (car p2) (cadr p2))
  161.     )
  162.   )
  163.   (mapcar '(lambda (X Y) (* (+ X Y) 0.5)) P1 P2)
  164. )
  165. (defun dynamicMTxt (MtextStr high pntlst / entlist pt CNTNNEW MOUSE MseButton ENT MsePt);_by wizman
  166.   (setq entlist '())
  167.   (foreach x pntlst
  168.     (setq pt x)
  169.     (setq entlist (cons (MkRedLine x pt) entlist))
  170.   )
  171.   (entmake (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") '(7 . "Standard")(CONS 40 high) (cons 62 3)(cons 1 MtextStr) (cons 10 (cadr (grread t 13 1)))))
  172.   (setq CnTnNew t)
  173.   (while (and (or (= (car (setq mouse (grread t 13 1))) 5)
  174.                 (= (car mouse) 12)
  175.                 (= (car mouse) 2)
  176.               )
  177.            CnTnNew
  178.          )
  179.     ;_ 所谓grread函数就是不断重新画图,直到给点为止。
  180.     (setq MseButton (car mouse))
  181.     (if  (= MseButton 2) ;_点右键
  182.       (setq CnTnNew nil)
  183.     )
  184.     (if  (= MseButton 3) ;_点左键3为正常的鼠标左键,
  185.       (setq CnTnNew nil)
  186.     )
  187.     (if  (= MseButton 5) ;_5为移动点
  188.       (progn
  189.         (setq ent (entlast))
  190.         (if ent
  191.           (entdel ent)
  192.         )
  193.         (setq MsePt (cadr mouse))
  194.         (entmake (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") '(7 . "Standard")(CONS 40 high)(cons 62 3) (cons 1 MtextStr) (cons 10 MsePt)))
  195.         (foreach x entlist
  196.           (upd x 11 MsePt)
  197.           (not (redraw x 3))
  198.         )
  199.       ) ;_progn
  200.     );_if
  201.   ) ;_while
  202.   (princ)
  203. )
  204. (defun MKRedLine(pt1 pt2)
  205.   (entmakex (list '(0 . "LINE") (cons 62 1)(cons 10 pt1) (cons 11 pt2)))
  206. )
  207. ;;更新组码值
  208. (defun upd (e i v / a)
  209.   (setq e (entget e))
  210.   (if (setq a (assoc i e))
  211.     (entmod (subst (cons i v) a e))
  212.   )
  213. )
  214. (princ)
  215. (princ"\n字符查找,命令TTF")
  216. (defun c:ttf ()(textstring_find))


发表于 2020-5-28 13:46:13 | 显示全部楼层
替换后面的TTF,按理来说你都是金牌会员了不应该不会啊
(defun c:ttf ()
        (SETVAR "CMDECHO" 0)
        (command "-layer" "m" "aa" "c" 1 ""  "L" "continuous" "" "")
        (textstring_find)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 02:54 , Processed in 0.157264 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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