明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 墙脚哥

请高手完善超级文字编辑的图层功能

[复制链接]
发表于 2018-9-26 18:09 | 显示全部楼层
支持块内文字 属性块内文字吗
回复

使用道具 举报

发表于 2019-8-24 14:32 | 显示全部楼层
dabingrain 发表于 2016-8-8 10:44
代码太多,来个文本文件

程序可以选择修改图块文字,而且存回图块,但是参考文件可以选择修改文字,但不能存回参考文件,是否可以再增进一下程序,谢谢。
回复

使用道具 举报

发表于 2019-8-26 22:22 | 显示全部楼层
dabingrain 发表于 2016-8-8 10:44
代码太多,来个文本文件

这个比较好用,块中的文字也可以修改,不过就是修改完毕后,如果打回车键,不能直接确定,只能鼠标点击确定才行。如果过能直接打回车确定就更方便了。毕竟用鼠标还是要找准确定键的位置的。
回复

使用道具 举报

发表于 2019-9-16 07:50 | 显示全部楼层
如果能实现框选就更完美了
回复

使用道具 举报

发表于 2019-9-16 18:40 | 显示全部楼层
涛涛_1048 发表于 2019-8-26 22:22
这个比较好用,块中的文字也可以修改,不过就是修改完毕后,如果打回车键,不能直接确定,只能鼠标点击确 ...

这个简单。找到这个,加上 allow_accept = true ; 即可
  1. "                : edit_box {\n"
  2.      "                        label= "文字:";\n"
  3.      "                        key = "text";\n"
  4.     "                        edit_width = 50;\n"
  5.      "                        allow_accept = true;\n"
  6.       "                }\n"
回复

使用道具 举报

发表于 2019-9-17 17:54 | 显示全部楼层
这个插件还有一个问题,就是要是修改文字的话,不能读取文字原来的图层和颜色,编辑后图层和颜色都变成了当前图层的了。
回复

使用道具 举报

发表于 2019-9-25 12:34 | 显示全部楼层
修改标注文字移动后又回到了原来的状态怎么解决啊,就和没改一样
回复

使用道具 举报

发表于 2020-1-27 15:38 | 显示全部楼层
支持,很好用~
回复

使用道具 举报

发表于 2020-2-19 22:39 | 显示全部楼层
;支持天正文字
(defun c:ed (/ dcl_id1 oba ob1 obn obt ptn otxt txt sty styno lay cyn layno hig wid ang col cnu etlst style layer accmcolo)
(vl-load-com)
(setvar "cmdecho" 0)
(graphscr)
(command "_.undo" "_group")
(setq olderr *error*)
(defun *error* (msg)
  (princ "\n*ERROR*...")
  (princ msg)
  (setvar "cmdecho" 1)
  (princ)
)
(defun set_color (conm / costr)
  (defun map_color (ckey mno)
   (start_image ckey)
   (fill_image 0 0 (dimx_tile ckey) (dimy_tile ckey) mno)
   (end_image)
  )
  (cond
   ((= 0 conm)
    (setq costr "Byblock")
   )
   ((= 1 conm)
    (setq costr "Red")
   )
   ((= 2 conm)
    (setq costr "Yellow")
   )
   ((= 3 conm)
    (setq costr "Green")
   )
   ((= 4 conm)
    (setq costr "Cyan")
   )
   ((= 5 conm)
    (setq costr "Bule")
   )
   ((= 6 conm)
    (setq costr "Magenta")
   )
   ((= 7 conm)
    (setq costr "color")
   )
   ((= 256 conm)
    (setq costr "Bylayer")
   )
   (t
    (setq costr "")
   )
  )
  (cond
   ((= 0 col)
    (map_color "col" 7)
   )
   ((= 256 col)
    (map_color "col" (cdr (assoc 62 (tblsearch "layer" lay))))
   )
   (t
    (map_color "col" conm)
   )
  )
  (if (= 256 conm)
   (set_tile "cnu" (strcat "<" (itoa (cdr (assoc 62 (tblsearch "layer" lay)))) ">" costr))
   (set_tile "cnu" (strcat "<" (itoa conm) ">" costr))
  )
)
(defun map_keylist (key keylst)
  (start_list key)
  (mapcar
   'add_list
   keylst
  )
  (end_list)
)
(defun layer_get_all (/ lay layer layname)
  (setq layer nil
    lay (tblnext "LAYER" t)
  )
  (while (/= lay nil)
   (setq layname (cdr (assoc 2 lay))
     layer (cons layname layer)
   )
   (setq lay (tblnext "LAYER"))
  )
  (setq layer (acad_strlsort layer))
  layer
)

(defun style_get_all (/ sty style sty_list)
  (setq sty_list nil
    sty (tblnext "style" t)
  )
  (setq style (cdr (assoc 2 sty)))
  (while style
   (if (/= "" style)
    (setq sty_list (append
            sty_list
            (list style)
           )
    )
   )
   (setq sty (tblnext "style"))
   (setq style (cdr (assoc 2 sty)))
  )
  (setq sty_list (acad_strlsort sty_list))
  sty_list
)
(defun set_error (str)
  (set_tile "error" str)
)
(defun sub_mtext (color entlist / ei newlist)
  (setq ei 0
    newlist nil
  )
  (while (< ei (length entlist))
   (setq newlist (cons (nth ei entlist) newlist))
   (if (= 8 (car (nth ei entlist)))
    (setq newlist (cons (cons 62 color) newlist))
   )
   (setq ei (1+ ei))
  )
  (reverse newlist)
)
(setq ob1 (entsel "\n选择要修改的任何文本:"))
(setq obn (car ob1)
       ptn (car (cdr ob1))
)
(setq obt (car (nentselp ptn)))
(setq oba (cdr (assoc 0 (entget obt))))
(if (or
      (= oba "TEXT")
      (= oba "MTEXT")
      (= oba "ATTRIB")
      (= oba "TCH_TEXT")
      (= oba "TCH_MTEXT")
     )
  (setq otxt (cdr (assoc 1 (entget obt))))
)
(if (= oba "ATTDEF")
  (setq otxt (cdr (assoc 2 (entget obt))))
)
(if otxt
  (progn
   (setq sty (cdr (assoc 7 (entget obt)))
     lay (cdr (assoc 8 (entget obn)))
     hig (cdr (assoc 40 (entget obt)))
     ang (cdr (assoc 50 (entget obt)))
   )
   (if (or
    (= oba "TEXT")
    (= oba "MTEXT")
    (= oba "ATTRIB")
       )
    (progn
     (setq col (cdr (assoc 62 (entget obt))))
     (setq wid (cdr (assoc 41 (entget obt))))
    )
   )
   (if (or
    (= oba "TCH_TEXT")
    (= oba "TCH_MTEXT")
       )
    (setq col (cdr (assoc 62 (entget obt))))
   )
   (if (= oba "ATTDEF")
    (setq col (cdr (assoc 62 (entget obn))))
   )
   (setq ang (* 180 (/ ang pi)))
   (if (null col)
    (progn
     (setq cyn 0)
     (setq col 256)
    )
    (setq cyn 1)
   )
   (setq style (style_get_all))
   (setq layer (layer_get_all))
   (setq styno (- (length style) (length (member sty style))))
   (setq layno (- (length layer) (length (member lay layer))))
   (if (or
    (= oba "TEXT")
    (= oba "MTEXT")
    (= oba "ATTRIB")
    (= oba "ATTDEF")
       )
    (progn
     (setq dclname (cond
            ((setq tempname (vl-filename-mktemp "tt-dcl-tmp.dcl")
               filen (open tempname "w")
             )
             (foreach stream '("\n"
             "文字修改:dialog {\n"
               "    label = \"文字编辑器...\";\n"
               "    : boxed_radio_column {\n"
               "        label = \"文字编辑...\";\n"
               "        : edit_box {\n"
               "            label= \"文字:\";\n"
               "            key = \"text\";\n"
               "            edit_width = 50;\n"
               "                   height = 1.5;\n"
               "                   fixed_height = true;\n"
               "        }\n"
               "        : row {\n"
               "            : popup_list {\n"
               "                label=\"样式\";\n"
               "                key = \"sty\";\n"
               "                edit_width = 13;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : edit_box {\n"
               "                label=\"高度\";\n"
               "                key = \"hig\";\n"
               "                edit_width = 7;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : edit_box {\n"
               "                label=\"宽度\";\n"
               "                key = \"wid\";\n"
               "                edit_width = 7;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "        }\n"
               "        : row {\n"
               "            : popup_list {\n"
               "                label=\"图层\";\n"
               "                key = \"lay\";\n"
               "                edit_width = 13;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : image_button {\n"
               "                key = \"col\";\n"
               "                width= 4;\n"
               "                aspect_ratio = 0.75;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : text_part {\n"
               "                key = \"cnu\";\n"
               "                width= 12;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : edit_box {\n"
               "                label=\"角度\";\n"
               "                key = \"ang\";\n"
               "                edit_width = 7;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "        }\n"
               "        spacer_1;\n"
               "    }\n"
               "    : row {\n"
               "        alignment = right;\n"
               "        : spacer {\n"
               "            width = 1;\n"
               "            fixed_width = true;\n"
               "            }\n"
               "        ok_cancel;\n"
               "    }\n"
               "    errtile;\n"
               "}\n"
              )
              (princ stream filen)
             )
             (close filen)
             tempname
            )
           )
     )
    )
    (progn
     (setq dclname (cond
            ((setq tempname (vl-filename-mktemp "tt-dcl-tmp.dcl")
               filen (open tempname "w")
             )
             (foreach stream '("\n"
             "文字修改:dialog {\n"
               "    label = \"文字编辑器...\";\n"
               "    : boxed_radio_column {\n"
               "        label = \"文字编辑...\";\n"
               "        : edit_box {\n"
               "            label= \"文字:\";\n"
               "            key = \"text\";\n"
               "            edit_width = 50;\n"
               "        }\n"
               "        : row {\n"
               "            : popup_list {\n"
               "                label=\"样式\";\n"
               "                key = \"sty\";\n"
               "                edit_width = 13;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : edit_box {\n"
               "                label=\"高度\";\n"
               "                key = \"hig\";\n"
               "                edit_width = 7;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "        }\n"
               "        : row {\n"
               "            : popup_list {\n"
               "                label=\"图层\";\n"
               "                key = \"lay\";\n"
               "                edit_width = 13;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : image_button {\n"
               "                key = \"col\";\n"
               "                width= 4;\n"
               "                aspect_ratio = 0.75;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : text_part {\n"
               "                key = \"cnu\";\n"
               "                width= 12;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "            : edit_box {\n"
               "                label=\"角度\";\n"
               "                key = \"ang\";\n"
               "                edit_width = 7;\n"
               "                fixed_width = true;\n"
               "            }\n"
               "        }\n"
               "        spacer_1;\n"
               "    }\n"
               "    : row {\n"
               "        alignment = right;\n"
               "        : spacer {\n"
               "            width = 1;\n"
               "            fixed_width = true;\n"
               "            }\n"
               "        ok_cancel;\n"
               "    }\n"
               "    errtile;\n"
               "}\n"
              )
              (princ stream filen)
             )
             (close filen)
             tempname
            )
           )
     )
    )
   )
   (setq dcl_id1 (load_dialog dclname))
   (if (not (new_dialog "文字修改" dcl_id1))
    (exit)
   )
   (if (or
    (= oba "TEXT")
    (= oba "MTEXT")
    (= oba "ATTRIB")
    (= oba "ATTDEF")
       )
    (progn
     (set_tile "wid" (rtos wid 2 3))
     (action_tile "wid" "(setq wid (distof $value))(if (>= 0 wid)(progn (mode_tile \"wid\" 3)(mode_tile \"wid\" 2)(set_error \"Input error ! \"))(set_error \"\"))")
    )
   )
   (set_color col)
   (action_tile "col" "(if (setq cnu (ACAD_ColorDlg col))(progn (setq col cnu)(set_color col)))")
   (set_tile "text" otxt)
   (set_tile "hig" (rtos hig 2 2))
   (set_tile "ang" (rtos ang 2 2))
   (mode_tile "text" 2)
   (map_keylist "sty" style)
   (set_tile "sty" (itoa styno))
   (map_keylist "lay" layer)
   (set_tile "lay" (itoa layno))
   (action_tile "text" "(setq txt $value)")
   (action_tile "sty" "(setq styno (atoi $value))")
   (action_tile "hig" "(setq hig (distof $value))(if (>= 0 hig)(progn (mode_tile \"hig\" 3)(mode_tile \"hig\" 2)(set_error \"Input error ! \"))(set_error \"\"))")
   (action_tile "lay" "(setq layno (atoi $value))")
   (action_tile "ang" "(setq ang (distof $value))")
   (action_tile "accept" "(done_dialog 1)")
   (action_tile "cancel" "(done_dialog 0)")
   (if (= 1 (start_dialog))
    (if txt
     (progn
      (setq sty (nth styno style))
      (setq lay (nth layno layer))
      (setq ang (* (/ ang 180) pi))
      (setq etlst (entget obt))
      (if (or
       (= oba "TCH_MTEXT")
       (= oba "TCH_TEXT")
      )
       (progn
    (setq accmcolo (vla-getinterfaceobject (vlax-get-acad-object) (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
    (cond
     ((= 1 col)
      (vla-setrgb accmcolo 255 0 0)
     )
     ((= 2 col)
      (vla-setrgb accmcolo 255 255 0)
     )
     ((= 3 col)
      (vla-setrgb accmcolo 0 255 0)
     )
     ((= 4 col)
      (vla-setrgb accmcolo 0 255 255)
     )
     ((= 5 col)
      (vla-setrgb accmcolo 0 0 255)
     )
     ((= 6 col)
      (vla-setrgb accmcolo 255 0 255)
     )
     ((= 7 col)
      (vla-setrgb accmcolo 255 255 255)
     )
    )
    (vlax-put-property (vlax-ename->vla-object obt) 'truecolor accmcolo)
    (if (= oba "TCH_TEXT")
     (vlax-put-property (vlax-ename->vla-object obt) 'text txt)
    )
    (vlax-put-property (vlax-ename->vla-object obt) 'textstyle sty)
    (vlax-put-property (vlax-ename->vla-object obt) 'layer lay)
    (vlax-put-property (vlax-ename->vla-object obt) 'height hig)
    (vlax-put-property (vlax-ename->vla-object obt) 'rotation (* (/ ang pi) 180))
       )
       (progn
    (if (= oba "ATTDEF")
     (setq etlst (subst
              (cons 2 txt)
              (assoc 2 etlst)
              etlst
             )
     )
     (setq etlst (subst
              (cons 1 txt)
              (assoc 1 etlst)
              etlst
             )
     )
    )
    (setq etlst (subst
             (cons 7 sty)
             (assoc 7 etlst)
             etlst
            )
    )
    (setq etlst (subst
             (cons 8 lay)
             (assoc 8 etlst)
             etlst
            )
    )
    (setq etlst (subst
             (cons 40 hig)
             (assoc 40 etlst)
             etlst
            )
    )

    (setq etlst (subst
             (cons 50 ang)
             (assoc 50 etlst)
             etlst
            )
    )

    (if (or
         (= oba "TEXT")
         (= oba "MTEXT")
         (= oba "ATTRIB")
         (= oba "ATTDEF")
        )
     (progn
      (setq etlst (subst
               (cons 41 wid)
               (assoc 41 etlst)
               etlst
              )
      )
      (if (= 1 cyn)
       (setq etlst (subst
            (cons 62 col)
            (assoc 62 etlst)
            etlst
               )
       )
       (if (= "MTEXT" oba)
        (setq etlst (sub_mtext col etlst))
        (setq etlst (cons (cons 62 col) etlst))
       )
      )
     )
    )
    (entmod etlst)
    (entupd obt)
    (entupd obn)
       )
      )
     )
    )
   )
   (if (= 11 (start_dialog))
    (command "_help")
   )
  )
)
(setq *error* olderr)
(command "_.undo" "_end")
(unload_dialog dcl_id1)
(vl-file-delete dclname)
(setvar "cmdecho" 1)
(princ)
)


点评

天正单行文字不行啊?  发表于 2020-8-18 12:03
回复

使用道具 举报

发表于 2020-2-20 23:08 | 显示全部楼层
非常不错·好好
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:25 , Processed in 0.212522 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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