找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 895|回复: 11

[求助] [求助]:文本样式

[复制链接]
发表于 2003-8-15 11:24:16 | 显示全部楼层 |阅读模式

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

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

×
由于我要从一个字体转到另一种字体,以前的字体可能是不一样的。现在我要将它们都用作"txt.shx,hztxt.shx"。如果一个一个的改去实在有一些麻烦,要是图中字体样式比较多的话,这个特点就更突出了。
请各位朋友帮一个忙,给我做一个LSP或ARX,能一次性将图中所有的字体都改成我上面所说的那种。
谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-15 23:01:46 | 显示全部楼层
设一字型"txt.shx,hztxt.shx"假定为aaa

(sssetfirst nil  (ssget '((0  . "*text"))))

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

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-17 11:17:02 | 显示全部楼层
;用下面的试试
;其实上面就是这一过程
;1.设字型 2.选文字 3.用ctrl+1改字型.

  1. ;下面0.8是宽高比.自己调.
  2. ;把每个文字的字型改了
  3. (defun c:cs (/ en j ss)
  4.   (command "undo" "group")
  5.   (if (not (tblsearch "STYLE" "hz-txt"))
  6.     (command "style" "hz-txt" "txt,hztxt" "0" "0.8" "" "" "" "")
  7.   )
  8.   (setq ss (ssget '((0 . "*text"))))
  9.   (repeat (progn
  10.             (setq j -1)
  11.             (sslength ss)
  12.           )
  13.     (setq en (entget (ssname ss (setq j (1+ j)))))
  14.     (entmod (setq en (subst
  15.                        (cons 7 "hz-txt")
  16.                        (assoc 7 en)
  17.                        en
  18.                      )
  19.             )
  20.     )
  21.   )
  22.   (command "undo" "end")
  23.   (princ)
  24. )


当然也可以把所有的字型改为你要的.

  1. ;把每个字型定义改了
  2. (defun c:cs( / styles doc)
  3. (setq styles (vla-get-TextStyles(setq doc (vla-get-activedocument(vlax-get-acad-object)))))
  4. (vlax-for st styles
  5.   (vla-put-FontFile st "txt.shx")
  6.   (vla-put-bigFontFile st "hztxt.shx")
  7. )
  8. (vla-regen doc acActiveViewport)
  9. (princ)
  10. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-17 13:23:59 | 显示全部楼层
我自己也编写了一个:


  1.   [FONT=courier new]
  2. ((defun c:txt(/ style_list n i style_name style_name_list font bigfont)
  3.   (command "undo" "group")
  4.   (setq style_list (ai_table "style" 2))
  5.   (setq n (length style_list))
  6.   (setq i 0)
  7.   (repeat n
  8.     (setq style_name (nth i style_list))
  9.     (setq style_name_list (tblsearch "style" style_name))
  10.     (setq font (cdr (assoc 3 style_name_list)))
  11.     (setq bigfont (cdr (assoc 4 style_name_list)))
  12.     (if (or (/= font "txt.shx") (and (/= bigfont "HZTXT.shx") (/= bigfont "tjhzd.shx")))
  13.       (command "-style" style_name "txt.shx,hztxt.shx" "" "" "" "" "")
  14.     )
  15.     (setq i (1+ i))
  16.   )
  17.   (command "undo" "end")
  18.   princ()
  19. )
  20.   [/FONT]


我感觉下面的这一句代码执行的很慢,请各位朋友指点!
      (command "-style" style_name "txt.shx,hztxt.shx" "" "" "" "" "")
另外,在14下面与晓东工具箱好象有冲突。
错误: null function
((ST) (IF (AND (/= ST "Function cancelled") (/= ST "quit / exit abort")) (PRINC
(STRCAT "\n错误: " ST "\n"))) (XDRX_SYSVAR_POP) (XDRX_DRAWING_VIEWRES)
(XDRX_PBAREND) (XDRX_END) (SETQ *ERROR* $XDLSP_ERROR))*Cancel*
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-17 15:28:27 | 显示全部楼层
princ()不对

应该很慢,每个command都要刷新一下图.字多的话很慢的.


  1. (defun c:txt( / bigfont font name sty)
  2.   (command "undo" "group")
  3.   (setq sty(tblnext "style" t))
  4.   (while sty
  5.     (setq name (cdr(assoc 2 sty)))
  6.     (setq font (cdr (assoc 3 sty)))
  7.     (setq bigfont (cdr (assoc 4 sty)))
  8.     (if (or (wcmatch font "txt.shx") (wcmatch bigfont "HZTXT.shx,tjhzd.shx") )
  9.       (command "-style" style_name "txt.shx,hztxt.shx" "" "" "" "" "")
  10.     )
  11.     (setq sty(tblnext "style"))
  12.   )
  13.   (command "undo" "end")
  14.   (princ)
  15. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-17 16:09:39 | 显示全部楼层
aeo:
请问能不能将
(command "-style" style_name "txt.shx,hztxt.shx" "" "" "" "" "")
改成别的语句,使它执行的更快一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-17 19:43:18 | 显示全部楼层
既然都改成txt.hztxt
那还不如设一个txt.hztxt比如aaa
再把所有的字改为aaa
purge掉不要的.---第四贴上面的.


不过一个图也就一次,时间长不到哪去的,慢一点无仿.
如果用2000的话,第四贴下面的应该要快一点.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-8-17 22:18:02 | 显示全部楼层
以前在论坛发过的。

  1. ;|
  2. 说明:safnt 重新定义图中所有字型定义,resfnt 恢复图中原始字型定义
  3.       需要XDRX_API支持,ONLY for 2000+
  4. |;
  5. (defun c:safnt (/ n stl $old_stl)
  6.   (xdrx_sysvar_push "textstyle")
  7.   (setq stl ($xdlsp_symbol->list "style"))
  8.   (setq
  9.     $old_stl (mapcar
  10.                '(lambda        (x)
  11.                   (list        (car x)
  12.                         (last x)
  13.                         (if (/= (cdr (assoc 4 (entget (last x)))) "")
  14.                           (strcat
  15.                             (cdr
  16.                               (assoc 3
  17.                                      (entget (last x))
  18.                               )
  19.                             )
  20.                             ","
  21.                             (cdr
  22.                               (assoc 4
  23.                                      (entget (last x))
  24.                               )
  25.                             )
  26.                           )
  27.                           (cdr (assoc 3 (entget (last x))))
  28.                         )
  29.                        
  30.                   )
  31.                                         ;stl
  32.                 )
  33.                stl
  34.              )
  35.   )
  36.   ;;建立词典,随图保存
  37.   (vlax-ldata-put "#myaxis" "style" $old_stl)
  38.   (foreach n $old_stl
  39.     (setq _name            (car n)
  40.           e            (cadr n)
  41.           _styleshx (last n)
  42.     )
  43.     (if
  44.       (OR (wcmatch _styleshx "*ttf*")
  45.           (not
  46.             (findfile (strcat (cdr (assoc 3 (entget (cadr n)))) ".shx"))
  47.           )
  48.           (not
  49.             (findfile (strcat (cdr (assoc 4 (entget (cadr n)))) ".shx"))
  50.           )
  51.           (wcmatch _styleshx "*pfb")
  52.       )
  53.       (xdrx_setenttodb (cadr n))
  54.       (xdrx_modent 3 "gbenor.shx" 4 "gbcbig.shx")
  55.     )
  56.   )
  57.   (xdrx_object_regen)
  58.   (xdrx_sysvar_pop)
  59.   (xdrx_end)
  60.   (princ)
  61. )
  62. (defun c:resfnt        (/ a oldtxtsty)
  63.   (setq oldtxtsty (getvar "textstyle"))
  64.   (setq a (vlax-ldata-get "#myaxis" "style"))
  65.   (foreach n a
  66.     (command "-style"
  67.              (car n)
  68.              (cadr n)
  69.              ""
  70.              ""
  71.              ""
  72.              ""
  73.              ""
  74.              (if (= oldtxtsty (caar a))
  75.                ""
  76.              )
  77.     )
  78.     (setq a (cdr a))
  79.   )
  80.   (command)
  81.   (vlax-ldata-delete "#myaxis" "style")
  82.   (setvar "textstyle" oldtxtsty)
  83.   (princ)
  84. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-6-17 20:05:47 | 显示全部楼层
你将上面的HZTXT.shx,tjhzd.shx
改成仿宋的字体就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 05:28 , Processed in 0.214084 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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