明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8038|回复: 32

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

[复制链接]
发表于 2016-8-7 18:18:24 | 显示全部楼层 |阅读模式
10明经币
在论坛上找到一个超级文字编辑的源码,本人非常喜欢,在此对作者无私的分享表示感谢!但使用过程发现插件的图层功能无法使用(比如原文字图层为0层,用超级文字编辑修改为图层2或者其他图层,但确认退出后还是0层),估计源码不全或者是存在哪些错漏,希望各位高手能出手相助,把源码完善。在此表示感谢!





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

最佳答案

查看完整内容

看看是否满意
发表于 2016-8-7 18:18:25 | 显示全部楼层
看看是否满意

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2016-8-8 10:43:19 | 显示全部楼层
  1. ;;; 自定义UnDo范围
  2. ;;(princ "\n修改文字已加载,启动命令ed.")
  3. (defun EF:UNDOBegin ()
  4.   (setvar "CMDECHO" 0)
  5.   (command "_.undo" "_group")
  6.   (princ)
  7. )
  8. ;;; end defun
  9. (defun EF:UNDOEnd ()
  10.   (setvar "CMDECHO" 0)
  11.   (command "_.undo" "_end")
  12.   (princ)
  13. )
  14. ;;; end defun
  15. (defun C:ed (/ dcl_id1 oba ob1 obn obt ptn otxt txt sty styno lay cyn layno
  16.                                                         hig wid ang col cnu etlst style layer
  17.                                                 )
  18.   (graphscr)
  19.   (EF:UNDOBegin)
  20.   (setq olderr *error*)
  21.   (defun *error* (msg)
  22.     (princ "\n*ERROR*...")
  23.     (princ msg)
  24.     (princ)
  25.   )                                       ; end defun error.
  26.   (defun set_color (conm / costr)
  27.     (defun map_color (ckey mno)
  28.       (start_image ckey)
  29.       (fill_image 0 0 (DimX_tile ckey) (DimY_tile ckey) mno)
  30.       (end_image)
  31.     )                                       ; end defun
  32.     (cond
  33.       ((= 0 conm)
  34.                                 (setq costr "Byblock")
  35.       )
  36.       ((= 1 conm)
  37.                                 (setq costr "Red")
  38.       )
  39.       ((= 2 conm)
  40.                                 (setq costr "Yellow")
  41.       )
  42.       ((= 3 conm)
  43.                                 (setq costr "Green")
  44.       )
  45.       ((= 4 conm)
  46.                                 (setq costr "Cyan")
  47.       )
  48.       ((= 5 conm)
  49.                                 (setq costr "Bule")
  50.       )
  51.       ((= 6 conm)
  52.                                 (setq costr "Magenta")
  53.       )
  54.       ((= 7 conm)
  55.                                 (setq costr "color")
  56.       )
  57.       ((= 256 conm)
  58.                                 (setq costr "Bylayer")
  59.       )
  60.       (t
  61.                                 (setq costr "")
  62.       )
  63.     )                                       ; end cond
  64.     (cond
  65.       ((= 0 col)
  66.                                 (map_color "col" 7)
  67.       )
  68.       ((= 256 col)
  69.                                 (map_color "col" (cdr (assoc 62 (tblsearch "layer" lay))))
  70.       )
  71.       (t
  72.                                 (map_color "col" conm)
  73.       )
  74.     )                                       ; end cond
  75.     (if (= 256 conm)
  76.       (set_tile "cnu" (strcat "<" (itoa (cdr (assoc 62 (tblsearch "layer"
  77.                                                                                                                                                                                                                                  lay
  78.                                                                                                                                                                                                                          )
  79.                                                                                                                                                                                  )
  80.                                                                                                                                                                 )
  81.                                                                                                                                         ) ">" costr
  82.                                                                                         )
  83.       )
  84.       (set_tile "cnu" (strcat "<" (itoa conm) ">" costr))
  85.     )                                       ; end if
  86.                
  87.                
  88.   )                                       ; end set_color
  89.   (defun map_keylist (key keylst)      ; set popuplist
  90.     (start_list key)
  91.     (mapcar
  92.       'add_list
  93.       keylst
  94.     )
  95.     (end_list)
  96.   )                                       ; end map
  97.   (defun layer_get_all (/ lay layer layname)
  98.     (setq layer nil                       ; All layer
  99.                         lay (tblnext "LAYER" T)
  100.     )
  101.     (while (/= lay nil)
  102.       (setq layname (cdr (assoc 2 lay))
  103.                                 layer (cons layname layer)
  104.       )
  105.       (setq lay (tblnext "LAYER"))
  106.     )
  107.     (setq layer (ACAD_Strlsort layer))
  108.     layer                               ; all layer.
  109.                
  110.                
  111.   )                                       ; end defun
  112.   (defun style_get_all (/ sty style sty_list)
  113.     (setq sty_list nil
  114.                         sty (tblnext "style" t)
  115.     )
  116.     (setq style (cdr (assoc 2 sty)))
  117.     (while style
  118.       (if (/= "" style)
  119.                                 (setq sty_list (append
  120.                                                                                                  sty_list
  121.                                                                                                  (list style)
  122.                                                                                          )
  123.                                 )
  124.       )
  125.       (setq sty (tblnext "style"))
  126.       (setq style (cdr (assoc 2 sty)))
  127.     )                                       ; end while]
  128.     (setq sty_list (ACAD_Strlsort sty_list))
  129.     sty_list
  130.   )                                       ; end defun
  131.   (defun set_error (str)
  132.     (set_tile "error" str)
  133.   )                                       ; end defun
  134.   (defun sub_mtext (color entlist / ei newlist)
  135.     (setq ei 0
  136.                         newlist nil
  137.     )
  138.     (while (< ei (length entlist))
  139.       (setq newlist (cons (nth ei entlist) newlist))
  140.       (if (= 8 (car (nth ei entlist)))
  141.                                 (setq newlist (cons (cons 62 color) newlist))
  142.       )                                       ; end if
  143.       (setq ei (1+ ei))
  144.     )                                       ; end while
  145.     (reverse newlist)
  146.   )                                       ; end defun
  147.   (setq ob1 (entsel "\n选择要修改的任何文本:"))
  148.   (SETQ obn (car ob1)
  149.                 ptn (car (cdr ob1))
  150.   )
  151.   (setq obt (car (nentselp ptn)))
  152.   (setq oba (cdr (assoc 0 (entget obt))))
  153.   (if (or
  154.                                 (= oba "TEXT")
  155.                                 (= oba "MTEXT")
  156.                                 (= oba "ATTRIB")
  157.       )
  158.     (setq otxt (cdr (assoc 1 (entget obt))))
  159.   )                                       ; end if
  160.   (if (= oba "ATTDEF")
  161.     (setq otxt (cdr (assoc 2 (entget obt))))
  162.   )                                       ; end if
  163.   (if otxt
  164.     (progn
  165.       (setq sty (cdr (assoc 7 (entget obt)))
  166.                                 lay (cdr (assoc 8 (entget obn)))
  167.                                 hig (cdr (assoc 40 (entget obt)))
  168.                                 wid (cdr (assoc 41 (entget obt)))
  169.                                 ang (cdr (assoc 50 (entget obt)))
  170.       )                                       ; end setq
  171.       (if (or
  172.                                                 (= oba "TEXT")
  173.                                                 (= oba "MTEXT")
  174.                                                 (= oba "ATTRIB")
  175.                                         )
  176.                                 (setq col (cdr (assoc 62 (entget obt))))
  177.                                 (setq col (cdr (assoc 62 (entget obn))))
  178.       )                                       ; end if
  179.       (setq ang (* 180 (/ ang pi)))
  180.       (if (null col)
  181.                                 (progn
  182.                                         (setq cyn 0)
  183.                                         (setq col 256)
  184.                                 )
  185.                                 (setq cyn 1)
  186.       )
  187.       (setq style (style_get_all))
  188.       (setq layer (layer_get_all))
  189.       (setq styno (- (length style) (length (member sty style))))
  190.       (setq layno (- (length layer) (length (member lay layer))))
  191.                        
  192.                         (setq dclname
  193.                                 (cond  
  194.                                         ((setq tempname (vl-filename-mktemp "tt-dcl-tmp.dcl") filen (open tempname "w"))
  195.                                                 (foreach stream  
  196.                                                         '(  
  197.                                                                  "\n"
  198.                                                                  "文字修改:dialog {\n"
  199.                                                                  "        label = "文字编辑...";\n"
  200.                                                                  "        : boxed_radio_column {\n"
  201.                                                                  "                label = "超级文字编辑...";\n"
  202.                                                                  "                : edit_box {\n"
  203.                                                                  "                        label= "文字:";\n"
  204.                                                                  "                        key = "text";\n"
  205.                                                                  "                        edit_width = 50;\n"
  206.                                                                  
  207.                                                                  "                }\n"
  208.                                                                  "                : row {\n"
  209.                                                                  "                        : popup_list {\n"
  210.                                                                  "                                label="样式";\n"
  211.                                                                  "                                key = "sty";\n"
  212.                                                                  "                                edit_width = 13;\n"
  213.                                                                  "                                fixed_width = true;\n"
  214.                                                                  "                        }\n"
  215.                                                                  "                        : edit_box {\n"
  216.                                                                  "                                label="高度";\n"
  217.                                                                  "                                key = "hig";\n"
  218.                                                                  "                                edit_width = 7;\n"
  219.                                                                  "                                fixed_width = true;\n"
  220.                                                                  "                        }\n"
  221.                                                                  "                        : edit_box {\n"
  222.                                                                  "                                label="宽度";\n"
  223.                                                                  "                                key = "wid";\n"
  224.                                                                  "                                edit_width = 7;\n"
  225.                                                                  "                                fixed_width = true;\n"
  226.                                                                  "                        }\n"
  227.                                                                  "                }\n"
  228.                                                                  "                : row {\n"
  229.                                                                  "                        : popup_list {\n"
  230.                                                                  "                                label="图层";\n"
  231.                                                                  "                                key = "lay";\n"
  232.                                                                  "                                edit_width = 13;\n"
  233.                                                                  "                                fixed_width = true;\n"
  234.                                                                  "                        }\n"
  235.                                                                  "                        : image_button {\n"
  236.                                                                  "                                key = "col";\n"
  237.                                                                  "                                width= 4;\n"
  238.                                                                  "                                aspect_ratio = 0.75;\n"
  239.                                                                  "                                fixed_width = true;\n"
  240.                                                                  "                        }\n"
  241.                                                                  "                        : text_part {\n"
  242.                                                                  "                                key = "cnu";\n"
  243.                                                                  "                                width= 12;\n"
  244.                                                                  "                                fixed_width = true;\n"
  245.                                                                  "                        }\n"
  246.                                                                  "                        : edit_box {\n"
  247.                                                                  "                                label="角度";\n"
  248.                                                                  "                                key = "ang";\n"
  249.                                                                  "                                edit_width = 7;\n"
  250.                                                                  "                                fixed_width = true;\n"
  251.                                                                  "                        }\n"
  252.                                                                  "                }\n"
  253.                                                                  "                spacer_1;\n"
  254.                                                                  "        }\n"
  255.                                                                  "        : row {\n"
  256.                                                                  "                alignment = right;\n"
  257.                                                                  "                : spacer {\n"
  258.                                                                  "                        width = 1;\n"
  259.                                                                  "                        fixed_width = true;\n"
  260.                                                                  "                        }\n"
  261.                                                                  "                ok_cancel;\n"
  262.                                                                  "        }\n"
  263.                                                                  "        errtile;\n"
  264.                                                                  "}\n"
  265.                                                          )
  266.                                                         (princ stream filen)
  267.                                                 )
  268.                                                 (close filen)
  269.                                                 tempname
  270.                                         )))
  271.                        
  272.       (setq dcl_id1 (load_dialog dclname))
  273.       (if (not (new_dialog "文字修改" dcl_id1))
  274.                                 (exit)
  275.       )
  276.       (set_color col)
  277.       (set_tile "text" otxt)
  278.       (set_tile "hig" (rtos hig 2 2))
  279.       (set_tile "wid" (rtos wid 2 2))
  280.       (set_tile "ang" (rtos ang 2 2))
  281.       (mode_tile "text" 2)
  282.       (map_keylist "sty" style)
  283.       (set_tile "sty" (itoa styno))
  284.       (map_keylist "lay" layer)
  285.       (set_tile "lay" (itoa layno))
  286.       (action_tile "text" "(setq txt $value)")
  287.       (action_tile "sty" "(setq styno (atoi $value))")
  288.       (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 ""))")
  289.       (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 ""))")
  290.       (action_tile "lay" "(setq layno (atoi $value))")
  291.       (action_tile "col" "(if (setq cnu (ACAD_ColorDlg col))(progn (setq col cnu)(set_color col)))")
  292.       (action_tile "ang" "(setq ang (distof $value))")
  293.       (action_tile "accept" "(done_dialog 1)")
  294.       (action_tile "cancel" "(done_dialog 0)")
  295.                        
  296.       (if (= 1 (start_dialog))
  297.                                 (if txt
  298.                                         (progn
  299.                                                 (setq sty (nth styno style))
  300.                                                 (setq lay (nth layno layer))
  301.                                                 (setq ang (* (/ ang 180) pi))
  302.                                                 (setq etlst (entget obt))
  303.                                                 (if (= oba "ATTDEF")
  304.                                                         (setq etlst (subst
  305.                                                                                                                 (cons 2 txt)
  306.                                                                                                                 (assoc 2 etlst)
  307.                                                                                                                 etlst
  308.                                                                                                         )
  309.                                                         )
  310.                                                         (setq etlst (subst
  311.                                                                                                                 (cons 1 txt)
  312.                                                                                                                 (assoc 1 etlst)
  313.                                                                                                                 etlst
  314.                                                                                                         )
  315.                                                         )
  316.                                                 ); end if
  317.                                                 (setq etlst (subst
  318.                                                                                                         (cons 7 sty)
  319.                                                                                                         (assoc 7 etlst)
  320.                                                                                                         etlst
  321.                                                                                                 )
  322.                                                 )
  323.                                                 (setq etlst (subst
  324.                                                                                                         (cons 40 hig)
  325.                                                                                                         (assoc 40 etlst)
  326.                                                                                                         etlst
  327.                                                                                                 )
  328.                                                 )
  329.                                                 (setq etlst (subst
  330.                                                                                                         (cons 41 wid)
  331.                                                                                                         (assoc 41 etlst)
  332.                                                                                                         etlst
  333.                                                                                                 )
  334.                                                 )
  335.                                                 (setq etlst (subst
  336.                                                                                                         (cons 50 ang)
  337.                                                                                                         (assoc 50 etlst)
  338.                                                                                                         etlst
  339.                                                                                                 )
  340.                                                 )
  341.                                                 (setq etlst (subst
  342.                                                                                                         (cons 8 lay)
  343.                                                                                                         (assoc 8 etlst)
  344.                                                                                                         etlst
  345.                                                                                                 )
  346.                                                 )
  347.                                                
  348.                                                 (if (= 1 cyn)
  349.                                                         (setq etlst (subst
  350.                                                                                                                 (cons 62 col)
  351.                                                                                                                 (assoc 62 etlst)
  352.                                                                                                                 etlst
  353.                                                                                                         )
  354.                                                         )
  355.                                                         (if (= "MTEXT" oba)
  356.                                                                 (setq etlst (sub_mtext col etlst))
  357.                                                                 (setq etlst (cons (cons 62 col) etlst))
  358.                                                         )                               ; end if
  359.                                                 )                               ; end if
  360.                                                 (entmod etlst)
  361.                                                 (entupd obt)
  362.                                                 (entupd obn)
  363.                                         )
  364.                                 )                               ; end if
  365.       )                                       ; end if
  366.       (if (= 11 (start_dialog))
  367.                                 (Command "_help")
  368.       )
  369.     )                                       ; end progn
  370.   )                                       ; end if
  371.   (setq *error* olderr)
  372.   (EF:UNDOEnd)
  373.   (princ)
  374.   (unload_dialog dcl_id1)
  375.   (vl-file-delete dclname)
  376. )
  377. ;;; end defun

评分

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

查看全部评分

回复

使用道具 举报

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

本帖子中包含更多资源

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

x

点评

能修改参考文件并存回就更完善了。  发表于 2019-8-24 14:33

评分

参与人数 5明经币 +3 金钱 +40 收起 理由
baoxiaozhong + 1 很给力!
淡雅香 + 1 很给力!
头大无恼 + 20 很给力!
ziyouwzb + 20 大师,要是加个文字倾斜角度就更完美了
USER2128 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-8-8 20:15:37 | 显示全部楼层
dabingrain 发表于 2016-8-8 10:46
看看是否满意

非常不错,感谢感谢!!!!!!!!!
回复

使用道具 举报

发表于 2016-9-25 18:18:35 | 显示全部楼层
非常好的工具,感谢dabingrain修正
回复

使用道具 举报

发表于 2017-8-28 15:52:45 | 显示全部楼层
路过,支持楼主
回复

使用道具 举报

发表于 2017-8-31 09:20:42 | 显示全部楼层
非常好用,感谢分享~
回复

使用道具 举报

发表于 2018-8-19 04:13:52 | 显示全部楼层
dear nice
learning
回复

使用道具 举报

发表于 2018-9-14 15:59:57 | 显示全部楼层
怎么启动啊?大神?超级感谢1
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 04:07 , Processed in 0.156517 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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