找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1152|回复: 5

(已完成)[编程申请]:求给选择的文字(TEXT)加下画线的程序...

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2002-8-3 21:19:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
谢谢晓东和EACHY,这么快就把“读剪切板的程序”写好了,用后感觉真的不错,以后有什么建议我在贴上来。

我再贴个申请吧,别嫌我烦啊:)

还是字符串的,能写个程序把TEXT加上下滑线吗?

谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-8-3 23:00:36 | 显示全部楼层
写好了两个程序,一个是加下划线,另个是删除下划线,请试用...


  1. [FONT=courier new]

  2. ;|
  3.    命令:txt_setuline
  4.    
  5.    功能:给选取的TEXT文字加下滑线(过滤掉前后空格)
  6.    
  7.    说明:1、下划线到文字底距离是字高的八分之一
  8.         2、下划线所在层是LAYERDEF.DAT中定义的“公共文字”对应的英文层名。

  9.         程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
  10.         LISP目录,自己加入到菜单里面就可以非常方便的使用了。
  11.         关于程序的建议请到“晓东CAD空间-编程申请”论坛
  12.         [url]http://www.xdcad.net/forum留言[/url]         
  13. |;

  14. (defun c:txt_setuline (/ ss e ang basept box thigh lyr)
  15.   (xdrx_begin)
  16.   (xdrx_ucson)
  17.   (setq lyr (xdrx_getlyrname "公共文字"))
  18.   (while (progn
  19.            (prompt "\n请选取要加下划线的文字<退出>:")
  20.            (setq ss (ssget '((0 . "text"))))
  21.          )
  22.     (xdrx_setsstodb ss 0)
  23.     (while (setq e (xdrx_getentdata 0))
  24.       (setq ang (xdrx_getentdxf 50)
  25.             basept (xdrx_getentdxf 10)
  26.             thigh (xdrx_getentdxf 40)
  27.       )
  28.       (if (not (equal ang 0.0 1e-5))
  29.         (progn
  30.           (command "._rotate" e "" basept (angtos (- ang)))
  31.           (setq box (xdrx_entity_box e)
  32.                 box (apply
  33.                       'xdrx_pointsoffset
  34.                       (cons (/ thigh 8) box)
  35.                     )
  36.                 box (apply
  37.                       'xdrx_pointsrotate
  38.                       (cons basept (cons ang box))
  39.                     )
  40.           )
  41.           (command "._rotate" e "" basept (angtos ang))
  42.         )
  43.         (progn
  44.           (setq box (xdrx_entity_box e)
  45.                 box (apply
  46.                       'xdrx_pointsoffset
  47.                       (cons (/ thigh 8) box)
  48.                     )
  49.           )
  50.         )
  51.       )
  52.       (xdrx_line1 (car box) (cadr box))
  53.       (xdrx_setenttodb (entlast))
  54.       (xdrx_modent 8 lyr 62 9)
  55.     )
  56.   )
  57.   (xdrx_ucsoff)
  58.   (xdrx_end)
  59.   (princ)
  60. )
  61. ;|
  62.   命令:txt_ruline
  63.   
  64.   功能:删除选择的文字下划线

  65.         程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
  66.         LISP目录,自己加入到菜单里面就可以非常方便的使用了。
  67.         关于程序的建议请到“晓东CAD空间-编程申请”论坛
  68.         [url]http://www.xdcad.net/forum留言[/url]         
  69.   
  70. |;
  71. (defun c:txt_ruline (/ ss lyr)
  72.   (xdrx_begin)
  73.   (setq lyr (xdrx_getlyrname "公共文字"))
  74.   (prompt "\n请选取要删除的文字下划线<所有>:")
  75.   (if (not (setq ss (ssget (list '(0 . "line") '(62 . 9) (cons 8 lyr
  76.                                                          )
  77.                            )
  78.                     )
  79.            )
  80.       )
  81.     (setq ss (ssget "x" (list '(0 . "line") '(62 . 9) (cons 8 lyr))))
  82.   )
  83.   (command "._erase" ss "")
  84.   (xdrx_end)
  85.   (princ)
  86. )

  87. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-28 13:21:05 | 显示全部楼层
这样可以更简单:AutoCAD中已经有了这个功能,在需要加下划线的文字前后都加上%%u,就能给指定文字加下划线!或者在某个字符前加%%u,则该字符后所有的文字都加下划线。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-28 14:31:46 | 显示全部楼层
这样当然没有自己编的程序简单,只要点一下就可以在文字下直接加上去了,不用一个个去加%%U了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-29 10:10:47 | 显示全部楼层
确实非常方便
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-9-30 00:21:33 | 显示全部楼层
最初由 pxt2001 发布
[B]这样可以更简单:AutoCAD中已经有了这个功能,在需要加下划线的文字前后都加上%%u,就能给指定文字加下划线!或者在某个字符前加%%u,则该字符后所有的文字都加下划线。 [/B]

我觉得还是有这个必要,因为有时候想从下划线引一根线到实体,%%U就比较麻烦了,如果使用LEAD,则下划线必须与引线同颜色,也是不好。我先下载试用。谢谢XD。

1.另外由于我有时候希望下划线的颜色能否设一个变量,如果需要可以设置,如果不设置,原变量存在,则按上次变量,不不存在,则按随层,应如何修改程序,是否需要增加全局变量。
2.我觉下划线到文字底距离是字高的八分之一太小了,所以为改为了子高的1/5.
3.我觉得下划线比文字两端的延长不够,但不知道调整那一个参数才可以延长,希望能指点(我对LISP连入门水平都没有达到)
4.下划线的层如果我已经确定,是否直接按下面的程序,换成相应的层名即可(我把LAYERDEF.DAT中加了一句“下划  T2  2",按并把下面程序的"公共文字"全部改为”下划“,但出现的层名字为"T",颜色为7,并不是我希望的T2,是否名字一定要为英文)。

[PHP]

;|
   命令:txt_setuline
   
   功能:给选取的TEXT文字加下滑线(过滤掉前后空格)
   
   说明:1、下划线到文字底距离是字高的5分之一
        2、下划线所在层是LAYERDEF.DAT中定义的“公共文字”对应的英文层名。

        程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
        LISP目录,自己加入到菜单里面就可以非常方便的使用了。
        关于程序的建议请到“晓东CAD空间-编程申请”论坛
        http://www.xdcad.net/forum留言         
|;

(defun c:txt_setuline (/ ss e ang basept box thigh lyr)
  (xdrx_begin)
  (xdrx_ucson)
  (setq lyr (xdrx_getlyrname "公共文字"))  
;能否直接把该句改为“  (setq lyr ("T2"))  ”
  (while (progn
           (prompt "\n请选取要加下划线的文字<退出>:")
           (setq ss (ssget '((0 . "text"))))
         )
    (xdrx_setsstodb ss 0)
    (while (setq e (xdrx_getentdata 0))
      (setq ang (xdrx_getentdxf 50)
            basept (xdrx_getentdxf 10)
            thigh (xdrx_getentdxf 40)
      )
      (if (not (equal ang 0.0 1e-5))
        (progn
          (command "._rotate" e "" basept (angtos (- ang)))
          (setq box (xdrx_entity_box e)
                box (apply
                      'xdrx_pointsoffset
                      (cons (/ thigh 5) box)
                    )
                box (apply
                      'xdrx_pointsrotate
                      (cons basept (cons ang box))
                    )
          )
          (command "._rotate" e "" basept (angtos ang))
        )
        (progn
          (setq box (xdrx_entity_box e)
                box (apply
                      'xdrx_pointsoffset
                      (cons (/ thigh 5) box)
                    )
          )
        )
      )
      (xdrx_line1 (car box) (cadr box))
      (xdrx_setenttodb (entlast))
      (xdrx_modent 8 lyr 62 9) ;9是否能设全局变量,自由调整,对删除有没有影响
    )
  )
  (xdrx_ucsoff)
  (xdrx_end)
  (princ)
)
;|
  命令:txt_ruline
  
  功能:删除选择的文字下划线

        程序配合XDRX_API build 20630+版本使用,朋友们可以把这个LISP拷贝到“晓东工具箱”的安装的
        LISP目录,自己加入到菜单里面就可以非常方便的使用了。
        关于程序的建议请到“晓东CAD空间-编程申请”论坛
        http://www.xdcad.net/forum留言         
  
|;
(defun c:txt_ruline (/ ss lyr)
  (xdrx_begin)
  (setq lyr (xdrx_getlyrname "公共文字"))
;能否直接把该句改为“  (setq lyr ("T2"))  ”
  (prompt "\n请选取要删除的文字下划线<所有>:")
  (if (not (setq ss (ssget (list '(0 . "line") '(62 . 9) (cons 8 lyr
                                                         )
                           )
                    )
           )
      )
    (setq ss (ssget "x" (list '(0 . "line") '(62 . 9) (cons 8 lyr))))
  )
  (command "._erase" ss "")
  (xdrx_end)
  (princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-21 13:26 , Processed in 0.185207 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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