找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2301|回复: 9

(完成)[编程申请]:解决中英文等高。

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-8-12 17:56:17 | 显示全部楼层

程序写好了,请试用

程序写好了,请试用...


                               
登录/注册后可看大图



  1. [FONT=courier new]
  2. ;|
  3.    命令:txt_hzen
  4.    
  5.    功能:将一个包含汉字和英文的字符串,按照汉字和英文分开,英文高度可以缩小
  6.    
  7.    说明:1、对于标点符号,定义在plist,这个里面的标点如果紧跟汉字后面,当汉字整体不进行处理。
  8. |;
  9. (defun c:txt_hzen (/ $txt_hzen_pro  ss e str)
  10.   (defun $txt_hzen_pro (e / $txt_enamke1 $txt_enamke2 hztxt entxt pj box ed
  11.                           ed1 thigh oldpj oldtxt oldhigh ang str cha tf
  12.                           plist
  13.                        )
  14.     (defun $txt_entmake1 ()
  15.       (if (/= entxt "")
  16.         (progn
  17.           (setq pj1 pj)
  18.           (if (/= $txt_hzen_enpos 0)
  19.             (setq pj1 (mapcar
  20.                         '+
  21.                         pj
  22.                         (list 0.0 (/ thigh $txt_hzen_enpos) 0.0)
  23.                       )
  24.             )
  25.           )
  26.           (setq ed1 (subst
  27.                       (cons 1 entxt)
  28.                       oldtxt
  29.                       ed
  30.                     )
  31.                 ed1 (subst
  32.                       (cons 10 pj1)
  33.                       oldpj
  34.                       ed1
  35.                     )
  36.                 ed1 (subst
  37.                       (cons 40 (* $txt_hzen_enhigh thigh))
  38.                       oldhigh
  39.                       ed1
  40.                     )
  41.           )
  42.           (entmake ed1)
  43.           (setq box ($xdlsp_textbox (entget (entlast)))
  44.                 pj (polar pj ang (+ (/ thigh $txt_hzen_endis) (-
  45.                                                                  (caadr box)
  46.                                                                  (caar box)
  47.                                                               )
  48.                                  )
  49.                    )
  50.           )
  51.           (setq entxt "")
  52.         )
  53.       )
  54.     )
  55.     (defun $txt_entmake2 ()
  56.       (if (/= hztxt "")
  57.         (progn
  58.           (setq ed1 (subst
  59.                       (cons 1 hztxt)
  60.                       oldtxt
  61.                       ed
  62.                     )
  63.                 ed1 (subst
  64.                       (cons 10 pj)
  65.                       oldpj
  66.                       ed1
  67.                     )
  68.           )
  69.           (entmake ed1)
  70.           (setq box ($xdlsp_textbox (entget (entlast)))
  71.                 pj (polar pj ang (+ (/ thigh $txt_hzen_endis) (-
  72.                                                                  (caadr box)
  73.                                                                  (caar box)
  74.                                                               )
  75.                                  )
  76.                    )
  77.           )
  78.           (setq hztxt "")
  79.         )
  80.       )
  81.     )
  82.     (setq plist ".,;:")                       ; 标点符号过滤表
  83.     (setq pj (xdrx_getentdxf 10)
  84.           str (xdrx_getentdxf 1)
  85.           ang (xdrx_getentdxf 50)
  86.           thigh (xdrx_getentdxf 40)
  87.           ed (entget e)
  88.           oldtxt (cons 1 str)
  89.           oldpj (cons 10 pj)
  90.           oldhigh (cons 40 thigh)
  91.           entxt ""
  92.           hztxt ""
  93.     )
  94.     ($xdlsp_text_todb str)
  95.     (while (setq cha ($xdlsp_text_getstr))
  96.       (if ($xdlsp_text_ishz cha)
  97.         (progn
  98.           ($txt_entmake1)
  99.           (setq hztxt (strcat hztxt cha))
  100.         )
  101.         (progn
  102.           (setq tf nil)
  103.           (if (/= "" hztxt)
  104.             (progn
  105.               (if (xdrx_string_find plist cha)
  106.                 (setq hztxt (strcat hztxt cha)
  107.                       tf t
  108.                 )
  109.               )
  110.             )
  111.           )
  112.           (if (not tf)
  113.             (progn
  114.               (setq entxt (strcat entxt cha))
  115.               ($txt_entmake2)
  116.             )
  117.           )
  118.         )
  119.       )
  120.     )
  121.     ($txt_entmake1)
  122.     ($txt_entmake2)
  123.     (entdel e)
  124.     (princ)
  125.   )
  126. ;|
  127.   主程序
  128. |;
  129.   (prompt "\n请选取要中英文处理的文字[All-全选]<退出>:")
  130.   (if (setq ss (ssget '((0 . "text"))))
  131.     (progn
  132.       (if (not $txt_hzen_enhigh)
  133.         (setq $txt_hzen_enhigh 0.8)
  134.       )
  135.       (if (not $txt_hzen_enpos)
  136.         (setq $txt_hzen_enpos 8)
  137.       )
  138.       (if (not $txt_hzen_endis)
  139.         (setq $txt_hzen_endis 8)
  140.       )
  141.       (setq tf t)
  142.       (while tf
  143.         (initget "H P D")

  144.         (prompt (strcat "\n{英文字高系数:" (rtos $txt_hzen_enhigh 2 2)
  145.                         " / 英文上移系数:" (itoa $txt_hzen_enpos)
  146.                         " / 英汉间距系数:" (itoa $txt_hzen_endis) "}"
  147.                 )
  148.         )
  149.         (if (setq tf (getkword "\n修改英文系数: [H-字高/ P-上移/ D-英汉间距]<不变>:"))
  150.           (progn
  151.             (initget 6)
  152.             (cond
  153.               ((= "H" tf)
  154.                 (if (setq thigh (getreal (strcat "\n英文和中文字高比<"
  155.                                                  (rtos $txt_hzen_enhigh 2 2)
  156.                                                  ">:"
  157.                                          )
  158.                                 )
  159.                     )
  160.                   (setq $txt_hzen_enhigh thigh)
  161.                 )
  162.               )
  163.               ((= "P" tf)
  164.                 (initget 4)
  165.                 (if (setq pos (getint (strcat "\n英文从基线上移高度(字高几分之一)<"
  166.                                               (itoa $txt_hzen_enpos) ">:"
  167.                                       )
  168.                               )
  169.                     )
  170.                   (setq $txt_hzen_enpos pos)
  171.                 )
  172.               )
  173.               ((= "D" tf)
  174.                 (if (setq endis (getint (strcat "\n英汉间距(字高几分之一)<"
  175.                                                 (itoa $txt_hzen_endis) ">:"
  176.                                         )
  177.                                 )
  178.                     )
  179.                   (setq $txt_hzen_endis endis)
  180.                 )
  181.               )
  182.             )
  183.           )
  184.         )
  185.       )
  186.       (xdrx_setsstodb ss 0)
  187.       (while (setq e (xdrx_getentdata 0))
  188.         (setq str (xdrx_getentdxf 1))
  189.         (if (and
  190.               ($xdlsp_text_hasHz str)
  191.               ($xdlsp_text_hasEn str)
  192.             )
  193.           (progn
  194.             ($txt_hzen_pro e)
  195.           )
  196.         )
  197.       )
  198.     )
  199.   )
  200.   (princ)
  201. )[/FONT]


下面程序是这个程序发布时候,以前写过的所有“文字处理”的程序,其中部分程序修改了功能,请下载最新的附件...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2009-3-7 12:27:24 | 显示全部楼层
鼓励一下。收藏借鉴参考
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

发表于 2009-3-8 00:19:49 | 显示全部楼层
用了字符没有变化啊,我用的是2006版本
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-30 17:58:10 | 显示全部楼层
请问楼主,这段程序如何用?

点评

12年前的帖子给翻出来了, 拷贝回去,保存成扩展名LSP的文件,在CAD下加载,然后用命令: 执行。 如果你怎么加载也不会,那么需要在论坛多看看置顶的帖子,多学学相关知识了。  详情 回复 发表于 2014-11-30 18:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-30 18:01:51 | 显示全部楼层
xiayouxyj1 发表于 2014-11-30 17:58
请问楼主,这段程序如何用?

12年前的帖子给翻出来了,

拷贝回去,保存成扩展名LSP的文件,在CAD下加载,然后用命令: txt_hzen 执行。

如果你怎么加载也不会,那么需要在论坛多看看置顶的帖子,多学学相关知识了。

点评

谢谢。lisp程序,我会用。只是没有提示是什么代码。  详情 回复 发表于 2014-11-30 18:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-11-30 18:03:27 | 显示全部楼层
XDSoft 发表于 2014-11-30 18:01
12年前的帖子给翻出来了,

拷贝回去,保存成扩展名LSP的文件,在CAD下加载,然后用命令: txt_hzen 执 ...

谢谢。lisp程序,我会用。只是没有提示是什么代码。

点评

在论坛上,你能看到明文的代码,基本上是LISP,如果你发现里面有 defun ,那就肯定是LISP了。这个程序12年了,不保证还是否能正常,试试吧。你可以下载晓东工具箱3.0版本,2005年以前论坛所有的工具基本都在里面了,  详情 回复 发表于 2014-11-30 18:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-30 18:06:46 | 显示全部楼层
xiayouxyj1 发表于 2014-11-30 18:03
谢谢。lisp程序,我会用。只是没有提示是什么代码。

在论坛上,你能看到明文的代码,基本上是LISP,如果你发现里面有 defun ,那就肯定是LISP了。这个程序12年了,不保证还是否能正常,试试吧。你可以下载晓东工具箱3.0版本,2005年以前论坛所有的工具基本都在里面了,安装直接运行。

点评

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

使用道具 举报

发表于 2014-11-30 18:23:31 | 显示全部楼层
XDSoft 发表于 2014-11-30 18:06
在论坛上,你能看到明文的代码,基本上是LISP,如果你发现里面有 defun ,那就肯定是LISP了。这个程序12 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 07:56 , Processed in 0.205735 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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