找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2167|回复: 30

[讨论]:程序:改变文字高度

[复制链接]
发表于 2005-3-23 13:08:31 | 显示全部楼层 |阅读模式

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

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

×
(defun c:ct( / s h h1 h2 i si)
           (setvar "cmdecho" 0)
           (setq s(ssget))
           (setq h(getreal "\nEnter text hight:"))
           (setq h1(/ h 1.5))
           (setq h2(/ h 5))
           (while s
                 (setq i 0)
                 (while (<= i (- (sslength s) 1))
                        (setq si(ssname s i))
                        (if (= "TEXT" (cdr (assoc 0 (entget si))))
                            (command "change" si "" "" "" "" h "" "")
                        )
                        (if (= "DIMENSION" (cdr (assoc 0 (entget si))))
                            (command "dimoverride" "dimtxt" h "dimasz" h1 "dimexe" h2 "dimexo" h2 "" si "")
                        )
                        (setq i (1+ i))
                 )
                 (setq s nil)
           )
)

********************************************************************************
上面的程序是改变文字高度的,目前有2个问题,希望哪个高手来修正一下:
1,如果一次选择许多的文字或标注时,有些个别文字不会更改新的高度,而是将文字变成带角度:1~10度不等(这里所说的文字带角度是指少数或个别,大多数运行OK)
2,如果选择到文字和标注就正常运行,如果选择到其它物体时结束后提示:
选择对象:
Enter text hight:10
未知命令“CT”。按 F1 查看帮助。
未知命令“CT”。按 F1 查看帮助。
未知命令“CT”。按 F1 查看帮助。
未知命令“CT”。按 F1 查看帮助。
未知命令“CT”。按 F1 查看帮助。
nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2005-3-24 13:07:30 | 显示全部楼层
有没有高手给改一下啊,谢了~!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-3-26 17:59:36 | 显示全部楼层
楼上的朋友,你说的很对,可以解决第2点问题,可第1点问题框选所有文字后,出现及少个别文字不改高度而将文字改了角度,该如何纠正呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-3-27 17:20:53 | 显示全部楼层
第1点问题框选所有文字后,出现及少个别文字不改高度而将文字改了角度,该如何纠正呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-27 19:28:21 | 显示全部楼层
再试试
[php]
(defun c:ct (/ s h h1 h2 i si)
  (setvar "cmdecho" 0)
  (setq        s (ssget '((-4 . "<OR")
                   (0 . "TEXT")
                   (0 . "DIMENSION")
                   (-4 . "OR>")
                  )
          )
  )
  (setq h (getreal "\nEnter text hight:"))
  (setq h1 (/ h 1.5))
  (setq h2 (/ h 5))
  (while s
    (setq i 0)
    (while (<= i (- (sslength s) 1))
      (setq si (ssname s i))
      (if (= "TEXT" (cdr (assoc 0 (entget si))))
        (progn
          (setq        D (entget si)
                d (subst (cons 40 h) (assoc 40 d) d)
          )
          (entmod d)

        )
        (if (= "DIMENSION" (cdr (assoc 0 (entget si))))
          (command "dimoverride"       "dimtxt"         h
                   "dimasz"  h1               "dimexe"         h2
                   "dimexo"  h2               ""         si
                   ""
                  )
        )

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

使用道具 举报

发表于 2005-3-27 20:41:58 | 显示全部楼层
支持框选:改字高、字宽、旋转角度、倾斜角
[php]
;;;加载通用函数
;;;下载:http://www.xdcad.net/forum/showthread.php?s=&threadid=325268
(load "xyp_lib")

;;;改字高
(defun c:test1 ()
  (setq        SS (ssget '((0 . "TEXT")))
        th (ureal 1 "" "\n新字高" th)
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (sub_upd s1 40 th))
  (princ)
)
;;;改字宽
(defun c:test2 ()
  (setq        SS (ssget '((0 . "TEXT")))
        tw (ureal 1 "" "\n新字宽" tw)
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (sub_upd s1 41 tw))
  (princ)
)
;;;改字旋转角度
(defun c:test3 ()
  (setq        SS (ssget '((0 . "TEXT")))
        ta (ureal 1 "" "\n新旋转角度" ta)
        taa(ang2rad ta)
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (sub_upd s1 50 taa))
  (princ)
)
;;;改字倾斜角
(defun c:test4 ()
  (setq        SS (ssget '((0 . "TEXT")))
        ta (ureal 1 "" "\n新倾斜角" ta)
        taa(ang2rad ta)
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (sub_upd s1 51 taa))
  (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-27 21:12:23 | 显示全部楼层
嘿嘿,xyp1964倒是经常推销自己的“产品------(load "xyp_lib")”,你的通用函数是很好,不过对于初学者来,不一定有帮助,既然有人提出问题,那就在这个问题上找出毛病,不然就不用提问题直接找你们高手要个现成的就行了,所以我个人的观点还是请高手们不要忙于抛出自己编写的东西,给新手们一个学习思考的机会,这样大家才会进步。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-3-27 21:46:11 | 显示全部楼层
对于以上程序主要应用了两个自定义函数:ureal、sub_upd。
如果觉得程序实用、简洁,那就参照使用吧。
但决不是“老王卖瓜,……”高手太多,都是在相互切磋和学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-27 22:02:45 | 显示全部楼层
程序未仔细看,对于未知命令本人倒是有所体会,一般来说,每一个“未知命令”意味着调用COMMAND时多用了一个回车,试着在COMMAND的最后面删一双引号看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-3-27 22:39:22 | 显示全部楼层
我也很纳闷,刚才试了几次,的确有一小部份的文字会出错,问题的关键肯定是"change",也许是个bug,按道理不可能啊,要么换成9楼的那种方法了,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-27 23:05:53 | 显示全部楼层
看看change选项:
命令: change
选择对象: 找到 1 个
选择对象:  指定修改点或 [特性(P)]: p
输入要修改的特性
[颜色(C)/标高(E)/图层(LA)/线型(LT)/线型比例(S)/线宽(LW)/厚度(T)]:

哪里有改变字高的选项?

当不提供“P”选项时确实可以改字高,但有时出错。
利用(sub_upd 40 s1 text-hight)函数直接改字高速度较快,但对标注、Mtext不起作用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 02:32 , Processed in 0.388535 second(s), 66 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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