明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5404|回复: 17

炒冷饭:字编辑器(改过变色,不改不变)

  [复制链接]
发表于 2012-3-2 15:06:45 | 显示全部楼层 |阅读模式
本帖最后由 yjr111 于 2012-3-2 22:13 编辑

flytoday发给我的网上的程序,今天有空完善了一下,一次设定即可,中途可变更修改颜色      
  1. edit:dialog
  2. {
  3.   label="文字编辑";
  4.   :edit_box
  5.   {
  6.     label="文字:";
  7.     key="edit";
  8.     edit_width=40;
  9.     //height=2;
  10.     //fixed_height=true;
  11.     allow_accept=true;
  12.   }
  13.   :row
  14.   {
  15.     :text{value="修改颜色:";width=5;}
  16.     :image_button{height=2;key="tucengcolor";width=4;}
  17.     ok_cancel;
  18.   }
  19.   spacer;
  20. }
  1. (defun newerr()
  2.   (setq *error* olderr esel nil edata nil d nil new nil do nil ss nil name nil)
  3.   (command "undo" "e")
  4.   (princ)
  5. )

  6. (defun c:ue(/ esel edata enme id new do ss name)
  7.   (setq olderr *error* *error* newerr )
  8.   (if (not colorname )(setq colorname 1)colorname)
  9.   (gc)
  10.   (setvar "cmdecho" 0)
  11.   (command "undo" "be")
  12.   (VL-LOAD-COM)
  13.   (setq AcadObject(vlax-get-acad-object)
  14.         AcadDocument(vla-get-ActiveDocument Acadobject)
  15.         mSpace(vla-get-ModelSpace Acaddocument)
  16. )
  17. (defun getdata14(color / ccc);;;定义获取acad标准颜色函数
  18.     (setq ccc(acad_colordlg color t))
  19.     (if (not ccc)(setq ccc color))
  20.     ccc
  21.     )
  22.   (defun c_img(key color);;;定义初始化颜色图像按钮函数
  23.     (if color
  24.       (progn
  25.         (start_image key)
  26.         (fill_image 0 0 (dimx_tile key)(dimy_tile key)color)
  27.         (end_image)
  28.         )
  29.       )
  30.     )
  31.   (setq esel (nentsel "\n选择文字"))
  32.   (setq edata (entget (car esel)))
  33.   (setq oldwenzi (cdr(assoc 1 edata)))
  34.   (if
  35.     (and
  36.       (> (length esel) 2)
  37.       (= (cdr (assoc 0 (entget (car esel)))) "MTEXT")
  38.       (= (cdr (assoc 0 (entget (car (last esel))))) "DIMENSION")
  39.     )
  40.     (setq enme (car (last esel)) edata (entget enme))
  41.   )
  42.   (cond
  43.     (
  44.       (or
  45.         (= (cdr (assoc 0 edata)) "TEXT")
  46.         (= (cdr (assoc 0 edata)) "MTEXT")
  47.         (= (cdr (assoc 0 edata)) "DIMENSION")
  48.         (= (cdr (assoc 0 edata)) "ATTRIB")
  49.         (= (cdr (assoc 0 edata)) "ATTDEF")
  50.       )
  51.       (if (> (setq id (load_dialog "ue.dcl")) 0)
  52.         (if (new_dialog "edit" id)
  53.           (progn
  54.              (cond
  55.               (
  56.                 (= (cdr (assoc 0 edata)) "DIMENSION")
  57.                 (set_tile "edit" (vl-string-subst  "" "\\A1;" (cdr (assoc 1 (entget (car esel))))))
  58.                 (set_tile "error" "尺寸文字")
  59.               )
  60.               (
  61.                 (and (> (length esel) 2)(= (cdr (assoc 0 (entget (car (last esel))))) "INSERT"))
  62.                 (set_tile "edit" (cdr (assoc 1 edata)))
  63.                 (set_tile "error" "块中文字")
  64.               )
  65.               (
  66.                 (and (= (length esel) 2)(= (cdr (assoc 0 (entget (car esel)))) "TEXT"))
  67.                 (set_tile "edit" (cdr (assoc 1 edata)))
  68.                 (set_tile "error" "普通文字")
  69.               )
  70.               (
  71.                 (and (= (length esel) 2)(= (cdr (assoc 0 (entget (car esel)))) "MTEXT"))
  72.                 (set_tile "edit" (cdr (assoc 1 edata)))
  73.                 (set_tile "error" "段落文字")
  74.               )
  75.               (
  76.                 (and (= (length esel) 2)(= (cdr (assoc 0 (entget (car esel)))) "ATTRIB"))
  77.                 (set_tile "edit" (cdr (assoc 1 edata)))
  78.                 (set_tile "error" "属性文字")
  79.               )
  80.               (
  81.                 (and (= (length esel) 2)(= (cdr (assoc 0 (entget (car esel)))) "ATTDEF"))
  82.                 (set_tile "edit" (cdr (assoc 2 edata)))
  83.                 (set_tile "error" "属性定义")
  84.               )
  85.             )
  86.             (mode_tile "edit" 2)
  87.             (c_img "tucengcolor" colorname)
  88.             (action_tile "edit" "(setq new $value)")
  89.             (set_tile "tucengcolor" (strcat"   "(itoa colorname)))
  90.             (action_tile "tucengcolor" "(setq colorname(getdata14 colorname))(c_img $key colorname)");;;;图层颜色按钮的动作
  91.             (action_tile "accept" "(setq result T)(done_dialog 1)")
  92.             (action_tile "cancel" "(done_dialog 0)")
  93.             (start_dialog)
  94.           )
  95.         )
  96.       )
  97.       (unload_dialog id)
  98.       (if result
  99.         (progn
  100.           (if (= (cdr (assoc 0 (entget (car esel)))) "ATTDEF")
  101.             (setq edata (subst (cons 2 new) (assoc 2 edata) edata))
  102.             (setq edata (subst (cons 1 new) (assoc 1 edata) edata))
  103.           )
  104.           (entmod edata)
  105.           (if (and (> (length esel) 2)(= (cdr (assoc 0 (entget (car (last esel))))) "INSERT"))
  106.             (progn
  107.               (setq name (cdr (assoc 2 (entget (car (last esel))))))
  108.               (setq ss (ssget "x" '((0 . "insert"))) n 0)
  109.               (repeat (sslength ss)
  110.                 (setq esel (ssname ss n) n (1+ n))
  111.                 (if (= (cdr (assoc 2 (entget esel))) name)
  112.                   (progn
  113.                     (entupd esel)
  114.                       )
  115.                     )
  116.               )
  117.             )
  118.             (progn
  119.             (entupd (car esel))
  120.              )
  121.           )
  122.         )
  123.       )
  124.     )
  125.     (T (princ "\n不是文字"))
  126.   )
  127.   (setq newwenzi (cdr(assoc 1 edata)))
  128.   (if (/= oldwenzi newwenzi)
  129.     (progn
  130.    (vla-put-color (vlax-ename->vla-object (car esel)) colorname)
  131.    ;(vla-Regen AcadDocument :vlax-true)
  132.    (entupd (car esel))
  133.    )
  134.     )
  135.   (newerr)
  136.   (princ)
  137. )

复制代码





本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
flytoday + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-3-2 15:18:59 | 显示全部楼层
好程序,美中不足的是速度有点慢
发表于 2012-3-2 15:25:15 | 显示全部楼层
一直觉得AutoCAD在保留修改过程这一点上很不好,实践中不得不使用各种方法来纪录各种修改过程和某些需要纪录的内容,注释...

怎么就不能给对象们增加一个 Comment 属性呢? 目前只能用 Hyperlink 来暂时替代这个需求.
我希望能在光标Rollover对象时,能自动显示其 Comment 提示文字(如:何时修改的,为何修改的,其表示什么...),就象其他的 Layer,Color属性那样.
发表于 2012-3-2 15:28:32 | 显示全部楼层
好程序,美中不足的是我没用得起来,不知道别的兄弟测试的结果如何?

点评

把对话框复制后保存为ue.dcl,放在支持路径下,不知道你是不是这一步没做?  发表于 2012-3-2 17:00
发表于 2012-3-2 17:34:44 | 显示全部楼层
puzb2001 发表于 2012-3-2 15:28
好程序,美中不足的是我没用得起来,不知道别的兄弟测试的结果如何?

具体是放到什么路径下 大侠可以告诉一下吗?
发表于 2012-3-2 17:36:32 | 显示全部楼层
楼主 这个怎么用呀  dcl 文件又怎么弄呢?能具体点吗  
发表于 2012-3-2 17:46:22 | 显示全部楼层
本帖最后由 429014673 于 2012-3-2 17:47 编辑

如果每次都没有REGEN就好了。。。。图档大就不好了。。。。块文字好像不变色

点评

说的是,测试时小文档没感觉,可以用enmod、enupd单个更新速度应该就快了  发表于 2012-3-2 19:29
发表于 2012-3-2 22:13:26 | 显示全部楼层
本帖最后由 puzb2001 于 2012-3-2 22:13 编辑

试试把LTSCALE调高点看看?是不是速度就快了

点评

下载fas测试一下吧,感觉不慢  发表于 2012-3-2 22:15
发表于 2012-3-3 10:02:38 | 显示全部楼层
yjr111 兄:“下载fas测试一下吧,感觉不慢”。正解,谢谢
发表于 2012-6-29 10:53:17 | 显示全部楼层
很有意思的文字编辑,比过去r14下面的ddedit还要强大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 10:43 , Processed in 0.702903 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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