乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 102|回复: 19

[编程交流] 匹配文本-文本开关

[复制链接]

13

主题

90

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 14:26:51 | 显示全部楼层 |阅读模式
我有这个代码来匹配多行文字,文字,属性等。。
 
  1. (defun c:tw  (/ cEnt mEnt)
  2. (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
  3.           (member (cdr (assoc 0 (entget cEnt)))
  4.                   '("TEXT" "MTEXT" "ATTRIB")))
  5.    (progn
  6.      (redraw cEnt 3)
  7.      (while (and (setq mEnt (car (nentsel "\nSelect Destination Text: ")))
  8.                  (member (cdr (assoc 0 (entget mEnt)))
  9.                          '("TEXT" "MTEXT" "ATTRIB")))
  10.        (entmod (subst (assoc 1 (entget cEnt))
  11.                       (assoc 1 (entget mEnt))
  12.                       (entget mEnt))))
  13.      (redraw cEnt 4))
  14.    (princ "\n<!> Incorrect Selection <!>"))
  15. (princ))
  16. (defun c:mt2  (/ cEnt mEnt sLst)
  17. (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
  18.           (member (cdr (assoc 0 (entget cEnt)))
  19.                   '("TEXT" "MTEXT" "ATTRIB")))
  20.    (progn
  21.      (redraw cEnt 3)
  22.      (if (setq ss (ssget "_X" '((-4 . "<NOT") (0 . "TEXT,MTEXT,INSERT") (-4 . "NOT>"))))
  23.        (mapcar '(lambda (x) (redraw x 2)) (setq sLst (mapcar 'cadr (ssnamex ss)))))
  24.      (while (and (setq mEnt (car (nentsel "\nSelect Destination Text: ")))
  25.                  (member (cdr (assoc 0 (entget mEnt)))
  26.                          '("TEXT" "MTEXT" "ATTRIB")))
  27.        (entmod (subst (assoc 1 (entget cEnt))
  28.                       (assoc 1 (entget mEnt))
  29.                       (entget mEnt)))))
  30.    (princ "\n<!> Incorrect Selection <!>"))
  31. (command "_regenall")
  32. (princ))
  33. (defun c:mt3  (/ cEnt ss)
  34. (vl-load-com)
  35. (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
  36.           (member (cdr (assoc 0 (entget cEnt)))
  37.                   '("TEXT" "MTEXT" "ATTRIB")))
  38.    (progn
  39.      (redraw cEnt 3)
  40.      (if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  41.        (foreach x  (vl-remove-if 'listp
  42.                      (mapcar 'cadr (ssnamex ss)))
  43.          (entmod (subst (assoc 1 (entget cEnt))
  44.                         (assoc 1 (entget x))
  45.                         (entget x))))))
  46.    (princ "\n<!> Incorrect Selection <!>"))
  47. (command "_regenall")
  48. (princ))

 
我可以修改它吗?如何将文本开关与反向“文本a”和“文本B”匹配?
 
Z
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:33:16 | 显示全部楼层
http://cadtips.cadalyst.com/notestext/switch-text
回复

使用道具 举报

13

主题

90

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 14:34:55 | 显示全部楼层
谢谢wizman,效果很好
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:37:52 | 显示全部楼层
不客气,佐格,我觉得这也很方便,我们感谢作者。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:41:12 | 显示全部楼层
你没有发现它缺少了一个子函数,即:spextm还是只有我?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:45:36 | 显示全部楼层
这当然更好:
 
[也适用于属性]
 
  1. [i][color=#990099];; Switch Text Values  by Lee McDonnell[/color][/i]
  2. [i][color=#990099];; 08.06.2009[/color][/i]
  3. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:stv [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ent1 ent2 ObjLst[b][color=RED])[/color][/b]
  4. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  5. [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent1 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect 1st Text or Attribute: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  6.                   [b][color=RED]([/color][/b][b][color=BLUE]member[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent1[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b] [b][color=#ff00ff]"TEXT"[/color][/b] [b][color=#ff00ff]"ATTRIB"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7.    [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again."[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  8. [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent2 [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect 2nd Text or Attribute: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  9.                   [b][color=RED]([/color][/b][b][color=BLUE]member[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"MTEXT"[/color][/b] [b][color=#ff00ff]"TEXT"[/color][/b] [b][color=#ff00ff]"ATTRIB"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  10.    [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\nMissed, Try Again."[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  11. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ObjLst [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] ent1 ent2[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  12. [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
  13.    [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
  14.      [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]Obj1 Str[b][color=RED])[/color][/b]
  15.        [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] Obj1 Str[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] ObjLst
  16.    [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]reverse[/color][/b] ObjLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  17. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:46:04 | 显示全部楼层
谢谢你指点李,我放弃了那个,但奇怪的是我记得用了那个,或者可能是另一个Lisp程序。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:50:39 | 显示全部楼层
 
嗯,对于这样一个简单的任务,代码可以压缩很多
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 14:54:36 | 显示全部楼层
 
 
我用它的时候一定是在做梦,哈哈,干得好,李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:56:59 | 显示全部楼层
 
呵呵,干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 23:59 , Processed in 0.450482 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表