明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 64768|回复: 415

有没有这样的LISP,启用后改过的字自动变颜色?

  [复制链接]
发表于 2012-2-28 19:53:22 | 显示全部楼层 |阅读模式
本帖最后由 puzb2001 于 2012-3-6 10:29 编辑

如题,答案详8楼9楼。根据老大们的思路,写了一个简单的代码详31楼,各位老大能不能看看31楼的问题?谢谢

发表于 2019-1-13 00:36:06 | 显示全部楼层
Gu_xl 发表于 2012-3-1 09:56
示例代码中:tt命令启动文字修改监视,tt1命令可以查看修改的文字(文字变红),tt2命令关闭文字监视,文 ...

如何保存在字典里,老大
发表于 2019-1-13 16:46:09 | 显示全部楼层
Gu_xl 发表于 2012-2-29 18:53
;;文字变动监视示例代码
**** 本内容被作者隐藏 ****

牛逼的程序
发表于 2021-1-18 14:29:03 | 显示全部楼层

真是不错的插件啊!谢谢提供!
发表于 2012-2-28 20:24:44 | 显示全部楼层
这个问题逻辑有问题,不可能有这样的程序
 楼主| 发表于 2012-2-29 08:34:08 | 显示全部楼层
本帖最后由 puzb2001 于 2012-2-29 08:54 编辑

为什么不可能?楼上的请看如下程序,不过是VBA的程序而已,使用时放到搜索文件夹,工具-宏-VBA管理器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2012-2-29 13:15:03 | 显示全部楼层
这个确实有

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

使用ED后,字体变红?真的吗,在哪儿?  发表于 2012-6-30 16:52
发表于 2012-2-29 14:37:41 | 显示全部楼层
看错了,我还以为是"启动"CAD呢,原来是“启动lisp”。程序一般都是叫“运行”的
发表于 2012-2-29 15:04:38 | 显示全部楼层
这个好像不复杂吧
 楼主| 发表于 2012-2-29 15:36:10 | 显示全部楼层
lrd1861 兄,yjr111 兄,langjs 兄,或各位大侠能不能弄一个共享一下啦?谢谢
发表于 2012-2-29 16:00:06 | 显示全部楼层
  1. ;;文本编辑扩展工具,文本修改后变换颜色显示。可以设置ddedit命令修改后文本
  2. ;;的颜色,默认为当前系统颜色号加一,确认不修改为修改文本颜色号加一。
  3. ;;作者:南京市市政设计研究院 嵇龙(ll_j@21cn.com)
  4. ;;                                  025-3283626

  5. (defun ett_ct()
  6.   (initget "C  ")
  7.   (setq s0 (entsel "\n设置颜色C / 选取文本:"))
  8.   (cond
  9.     ( (= s0 "C") (ett_col))
  10.     ( (= s0 "") nil)
  11.     ( (and (= (type s0) 'LIST) (= (cdr (assoc 0 (entget (car s0)))) "TEXT"))
  12.       (redraw (setq sn (car s0)) 3)
  13.       (setq s1 (entget sn)
  14.             n1 (cdr (assoc 1 s1))
  15.       )
  16.       (command "_.DDEDIT" sn "")
  17.       (entupd sn)
  18.       (if (/= n1 (cdr (assoc 1 (entget sn))))
  19.         (progn
  20.           (setq s1 (entget sn))
  21.           (if (/= (assoc 62 s1) nil)
  22.             (setq s1 (subst (cons 62 c2) (assoc 62 s1) s1))
  23.             (setq s1 (cons (cons 62 c2) s1))
  24.           )
  25.           (entmod s1)
  26.           (redraw sn 1)
  27.         )
  28.         (progn
  29.           (setq s1 (entget sn) c3(+ c2 1))
  30.           (if (= c3 257) (setq c3 1))
  31.           (if (/= (assoc 62 s1) nil)
  32.             (setq s1 (subst (cons 62 c3) (assoc 62 s1) s1))
  33.             (setq s1 (cons (cons 62 c3) s1))
  34.           )
  35.           (entmod s1)
  36.           (redraw sn 1)
  37.         )
  38.       )
  39.       (setq sn nil)
  40.       (ett_ct)
  41.     )
  42.     (t (ett_ct))
  43.   )
  44. )

  45. (defun ett_col()
  46.   (setq c1 c2)
  47.   (setq c2 (acad_colordlg c2))
  48.   (if (= c2 nil) (setq c2 c1))
  49.   (ett_ct)
  50. )

  51. (defun c:ett(/ sn s0 s1 c1 c2 c3 n1)
  52.   (setq c1 (getvar "CECOLOR"))
  53.   (if (or (= c1 "BYLAYER") (= c1 "BYBLOCK"))
  54.     (setq c1 1)
  55.     (setq c1 (1+ (read c1)))
  56.   )
  57.   (if (= c1 256) (setq c1 1))
  58.   (setq c2 c1)
  59.   (princ (strcat "\n当前颜色号 " (getvar "cecolor") ",设置颜色号 " (itoa c2) "。"))
  60.   (ett_ct)
  61.   (princ)
  62. )

  63. (princ "\n**Text文本编辑扩展工具。作者:南京市市政设计研究院 嵇龙。**")
  64. (princ "\n**命令:ett")
发表于 2012-2-29 18:53:30 | 显示全部楼层
;;文字变动监视示例代码
  1. ;;启动监视
  2. (defun c:tt()
  3.   (or *dbreactor*
  4.       (setq *dbreactor* (vlr-acdb-reactor nil '((:vlr-objectModified . Dbdified)
  5.                                                 )
  6.                           )
  7.             )
  8.       )
  9.   (princ "\n文字编辑监视器启动")
  10.   (princ)
  11.   )
  12. ;;反应器
  13. (defun Dbdified (reactor_object obj / e)
  14.     (if (or (= "MTEXT" (GXL-DXF (cadr obj) 0))
  15.             (= "TEXT" (GXL-DXF (cadr obj) 0))
  16.             )
  17.       (progn
  18.         (if (not (member (setq e (cadr obj)) *ModifiedList*))
  19.           (progn
  20.           (setq *ModifiedList* (cons (cadr obj) *ModifiedList*)
  21.                 *enlst* nil)
  22.           (princ (strcat "\n" (itoa (length *ModifiedList*)) "个文字对象被修改!"))
  23.           )
  24.           )
  25.       )
  26.       )
  27.     )
  28. ;;显示更改文字
  29. (defun c:tt1 ()
  30.   (if *ModifiedList*
  31.     (foreach en *ModifiedList*
  32.       (if (entget en)
  33.         (progn
  34.           (vlr-remove *dbreactor*)
  35.           (setq *ModifiedData*
  36.                  (cons (cond ((setq color (gxl-dxf en 62)) (cons en color))
  37.                              (t (cons en 256))
  38.                              )
  39.                        *ModifiedData*)
  40.                 )
  41.         (gxl-ch_ent en 62 1)
  42.           (vlr-add *dbreactor*)
  43.         )
  44.         )
  45.       )
  46.     )
  47.   (princ)
  48.   )
  49. ;;关闭监视
  50. (defun c:tt2 ()
  51.   (foreach a *ModifiedData*
  52.     (gxl-ch_ent (car a) 62 (cdr a))
  53.     )
  54.   (setq *ModifiedData* nil *ModifiedList* nil)
  55.   (vlr-remove *dbreactor*)
  56.   (setq *dbreactor* nil)
  57.   (princ "\n文字编辑监视器关闭")
  58.   (princ)
  59.   )
  60. (defun gxl-dxf (ent i)
  61.     (cond ((= (type ent) 'ename)
  62.             (cdr (assoc i (entget ent '("*"))))
  63.              )
  64.           ((= (type ent) 'list)
  65.            (cdr (assoc i ent))
  66.            )
  67.     ) ;_ if
  68.   )
  69. (defun gxl-CH_Ent (ent i pt / en)
  70.   (if (assoc i (setq en (entget ent)))
  71.     (setq en (subst (cons i pt) (assoc i en) en))
  72.     (setq en (append en (list (cons i pt))))
  73.     )
  74.     (entmod en)
  75.   )

点评

加载后,cad显示读入的 (八进制) 字符不正确,这是咋回事儿?  发表于 2015-11-26 08:56
这招确实狠啊  发表于 2012-9-26 19:24

评分

参与人数 1金钱 +5 收起 理由
LV_XR + 5 怎么使用?我加载后输入tt,显示; 错误: no.

查看全部评分

发表于 2012-2-29 19:19:18 | 显示全部楼层
变更后换颜色,非常有用!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-1 10:27 , Processed in 0.364632 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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