找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1983|回复: 9

[建议]:屏幕上显示文字的函数

[复制链接]
发表于 2009-8-5 11:44:06 | 显示全部楼层 |阅读模式

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

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

×
autocad 有在屏幕上显示动态直线的函数grdraw,没有在屏幕上显示文字的函数,有没有高手用其他语言写一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-8-7 17:40:53 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

举报

发表于 2009-8-13 12:17:24 | 显示全部楼层
下面是Terry Miller写的Vector_text.lsp你只做很少改动便可以改成Grdraw_text.
但只能下英文,而且要好效果还得下点功夫。

;-------------------------------------------------------------------------------
; vector_text - Draws text in a dialog image tile
; Arguments: 6
;   Justify = Justification option of "L" "ML" "TL" "C" "M" "TC" "R" "MR" or "TR" ;   X# = Starting X location ;   Y# = Starting Y location ;   Rotation# = Rotation angle of 0 or 90 ;   Color# = Color number of text ranging from 0 to 255 ;   TextStr = Text string to draw
; Returns: Draws text string in a dialog image tile
; Note: Use this function between a start_image and an end_image command.
; Example: (vector_text "M" 110 25 0 5 "Hello World")
;-------------------------------------------------------------------------------
(defun vector_text (Justify X# Y# Rotation# Color# TextStr / ChrList@ FontList@
  Item Num# Width# XY# X1# X2# Y1# Y2#)
  (setq Justify (strcase Justify))
  (if (not (member Justify (list "L" "ML" "TL" "C" "M" "TC" "R" "MR" "TR")))     (progn (princ "\nvector_text syntax error:\nJustification options are L, ML, TL, C, M, TC, R, MR, and TR.")(exit))   );if   (if (and (< Color# 0)(> Color# 255))     (progn (princ "\nvector_text syntax error:\nColor value ranges between 0 and 255.")(exit))   );if   (if (or (< X# 0)(< Y# 0))     (progn (princ "\nvector_text syntax error:\nValues for X and Y must be a positive number.")(exit))   );if   (if (not (or (= Rotation# 0)(= Rotation# 90)))     (progn (princ "\nvector_text syntax error:\nRotation angle can only be 0 or 90 degrees.")(exit))   );if   (setq FontList@ (GetFontList TextStr))
  (setq Width# 0)
  (if (= Rotation# 0)
    (progn
      (if (member Justify (list "TL" "TC" "TR"))         (setq Y# (1- Y#))       );if       (if (member Justify (list "ML" "M" "MR"))
        (setq Y# (- Y# 5))
      );if
      (if (member Justify (list "L" "C" "R"))         (setq Y# (- Y# 9))       );if       (foreach Item FontList@         (setq Width# (+ Width# (nth 0 Item)))       );foreach       (if (member Justify (list "C" "M" "TC"))
        (setq X# (- X# (fix (+ (/ Width# 2.0) 0.5))))
      );if
      (if (member Justify (list "R" "MR" "TR"))         (setq X# (- X# Width#))       );if       (foreach ChrList@ FontList@         (setq Num# 1)         (while (< Num# (length ChrList@))           (setq XY# (nth Num# ChrList@)                 X1# (+ X# (nth Num# ChrList@))                 Y1# (+ Y# (nth (1+ Num#) ChrList@))                 X2# (+ X# (nth (+ Num# 2) ChrList@))                 Y2# (+ Y# (nth (+ Num# 3) ChrList@))           );setq           (if (and (/= XY# -1)(> X1# -1)(> Y1# -1)(> X2# -1)(> Y2# -1))             (vector_image X1# Y1# X2# Y2# Color#)           );if           (setq Num# (+ Num# 4))         );while         (setq X# (+ X# (nth 0 ChrList@)))       );foreach     );progn     (progn       (if (member Justify (list "TL" "TC" "TR"))
        (setq X# (1- X#))
      );if
      (if (member Justify (list "ML" "M" "MR"))         (setq X# (- X# 5))       );if       (if (member Justify (list "L" "C" "R"))
        (setq X# (- X# 9))
      );if
      (foreach Item FontList@
        (setq Width# (+ Width# (nth 0 Item)))
      );foreach
      (if (member Justify (list "C" "M" "TC"))         (setq Y# (+ Y# (fix (+ (/ Width# 2.0) 0.5))))       );if       (if (member Justify (list "R" "MR" "TR"))
        (setq Y# (+ Y# Width#))
      );if
      (foreach ChrList@ FontList@
        (setq Num# 1)
        (while (< Num# (length ChrList@))
          (setq XY# (nth Num# ChrList@)
                X1# (+ X# (nth (1+ Num#) ChrList@))
                Y1# (- Y# (nth Num# ChrList@))
                X2# (+ X# (nth (+ Num# 3) ChrList@))
                Y2# (- Y# (nth (+ Num# 2) ChrList@))
          );setq
          (if (and (/= XY# -1)(> X1# -1)(> Y1# -1)(> X2# -1)(> Y2# -1))
            (vector_image X1# Y1# X2# Y2# Color#)
          );if
          (setq Num# (+ Num# 4))
        );while
        (setq Y# (- Y# (nth 0 ChrList@)))
      );foreach
    );progn
  );if
);defun vector_text
;-------------------------------------------------------------------------------
; GetFontList - Gets vector points of font string
; Arguments: 1
;   Str = Text string ; Returns: List of vector points of font string ;------------------------------------------------------------------------------- (defun GetFontList (Str / C ChrList@ FontList@ Num# PercentPercent:)   ;-----------------------------------------------------------------------------   ; PercentPercent: - Replaces special characters begining with %%.   ; Arguments: 1   ;   Str = String
  ; Returns: String with %%d, %%c and %%p characters replaced.
  ;-----------------------------------------------------------------------------
  (defun PercentPercent: (Str)     (if (wcmatch Str "*%%D*")
      (setq Str (FindReplace Str "%%D" (chr 176)));degree
    );if
    (if (wcmatch Str "*%%d*")       (setq Str (FindReplace Str "%%d" (chr 176)));degree     );if     (if (wcmatch Str "*%%P*")
      (setq Str (FindReplace Str "%%P" (chr 177)));plus/minus
    );if
    (if (wcmatch Str "*%%p*")       (setq Str (FindReplace Str "%%p" (chr 177)));plus/minus     );if     (if (wcmatch Str "*%%C*")
      (setq Str (FindReplace Str "%%C" (chr 248)));diameter
    );if
    (if (wcmatch Str "*%%c*")       (setq Str (FindReplace Str "%%c" (chr 248)));diameter     );if     (if (wcmatch Str "*&#216;*")
      (setq Str (FindReplace Str (chr 216) (chr 248)));diameter
    );if
    Str   );defun PercentPercent:   ;-----------------------------------------------------------------------------   ; Start of main function   ;-----------------------------------------------------------------------------   (setq Str (PercentPercent: Str))   (setq Num# 1)   (repeat (strlen Str)
    (setq C (substr Str Num# 1))
    (setq ChrList@
      (cond
        ((= C" ")'(3 -1 -1 -1 -1))((= C"!")'(3 1 7 1 1 1 9 1 9))((= C"\"")'(5 1 1 1 3 4 1 4 3))((= C"#")'(7 1 7 6 7 1 3 6 3 2 1 2 9 5 1 5 9))((= C"")'(6 3 1 3 10 1 8 1 8 2 9 4 9 1 3 1 4 4 6 2 5 4 2 2 2 5 8 5 7 5 3 5 3))((= C"%")'(8 1 8 7 2 4 8 4 8 1 2 1 2 2 3 3 3 2 1 3 1 4 2 4 2 5 7 6 7 5 9 6 9 7 8 7 8))((= C"&")'(6 1 6 1 8 2 9 3 9 4 8 4 7 1 2 1 3 2 4 2 5 3 6 3 6 2 1 2 1 3 2 3 3 5 9 5 9 5 6 5 6))((= C"'")'(2 1 1 1 3))((= C"(")'(3 1 2 1 10 2 11 2 11 2 1 2 1))((= C")")'(3 2 2 2 10 1 11 1 11 1 1 1 1))((= C"*")'(4 1 4 3 2 1 2 3 4))((= C"+")'(6 1 6 5 6 3 4 3 8))((= C",")'(3 1 10 2 9))((= C"-")'(3 1 6 2 6))((= C".")'(3 1 9 1 9))((= C"/")'(5 1 9 4 2 4 1 4 1))((= C"0")'(6 1 2 1 8 2 9 4 9 2 1 4 1 5 2 5 8))((= C"1")'(6 3 1 3 9 1 2 2 2))((= C"2")'(6 5 9 1 9 1 8 4 5 1 2 1 2 2 1 4 1 5 2 5 4))((= C"3")'(6 1 8 1 8 2 9 4 9 1 2 1 2 4 5 3 5 2 1 4 1 5 8 5 6 5 2 5 4))((= C"4")'(6 5 7 1 7 4 1 4 9 3 2 1 7))((= C"5")'(6 5 1 1 1 1 8 1 8 4 9 2 9 1 1 1 5 2 4 4 4 5 5 5 8))         ((= C"6")'(6 1 8 1 2 2 9 4 9 4 5 2 5 2 1 4 1 5 8 5 6 5 2 5 2))((= C"7")'(6 5 1 2 8 1 1 5 1 2 9 2 9))((= C"8")'(6 1 6 1 8 2 9 4 9 1 2 1 4 2 5 4 5 2 1 4 1 5 6 5 8 5 2 5 4))((= C"9")'(6 1 8 1 8 2 9 4 9 1 2 1 4 2 5 4 5 2 1 4 1 5 2 5 8))((= C":")'(3 1 9 1 9 1 4 1 4))((= C";")'(3 1 10 2 9 2 4 2 4))((= C"<")'(6 1 6 4 9 1 6 4 3))((= C"=")'(6 1 7 5 7 1 5 5 5))((= C">")'(6 4 6 1 9 1 3 4 6))((= C"?")'(6 3 6 3 7 3 9 3 9 1 2 1 2 4 5 4 5 2 1 4 1 5 2 5 4))((= C"@")'(11 4 10 8 10 4 1 7 1 1 4 1 7 2 9 3 9 2 8 2 9 4 5 4 6 3 2 2 2 2 2 2 3 8 7 10 7 5 7 6 7 7 4 5 4 7 4 7 6 8 2 9 2 9 2 9 3 10 4 10 7))((= C"A")'(7 3 1 5 6 1 7 5 7 0 9 0 8 1 6 3 1 6 8 6 9))((= C"B")'(7 1 1 1 9 1 9 4 9 1 5 4 5 1 1 4 1 5 6 5 8 5 2 5 4))((= C"C")'(7 2 9 5 9 2 1 5 1 1 2 1 8 6 8 6 8 6 2 6 2))((= C"D")'(8 1 1 1 9 1 9 4 9 1 1 4 1 6 3 6 7 5 8 5 8 5 2 5 2))((= C"E")'(7 1 9 5 9 1 1 5 1 1 1 1 9 1 5 4 5))((= C"F")'(6 1 1 5 1 1 1 1 9 1 5 4 5))((= C"G")'(8 4 5 6 5 2 1 5 1 1 2 1 8 4 9 2 9 6 5 6 9 5 8 5 8 6 2 6 2))         ((= C"H")'(8 1 5 6 5 1 1 1 9 6 1 6 9))((= C"I")'(3 1 1 1 9))((= C"J")'(5 3 8 3 1 1 9 2 9 0 7 0 8))((= C"K")'(7 2 5 6 9 5 1 2 4 1 1 1 9))((= C"L")'(6 1 9 5 9 1 1 1 9))((= C"M")'(9 4 8 6 3 1 9 1 1 4 8 2 3 7 1 7 9))((= C"N")'(8 1 1 1 9 2 2 3 5 4 6 4 6 6 9 6 1 5 7 5 8))((= C"O")'(8 2 9 5 9 2 1 5 1 1 2 1 8 6 2 6 8))((= C"P")'(7 5 5 1 5 1 1 5 1 1 9 1 1 6 2 6 4))((= C"Q")'(8 5 8 4 7 2 9 5 9 2 1 5 1 1 2 1 8 6 2 6 8 6 10 6 10))((= C"R")'(8 1 1 5 1 5 5 1 5 1 9 1 1 6 6 6 9 6 2 6 4))((= C"S")'(7 1 8 1 8 2 9 4 9 1 2 1 4 2 5 4 5 2 1 4 1 5 6 5 8 5 2 5 2))((= C"T")'(7 1 1 5 1 3 1 3 9))((= C"U")'(8 2 9 5 9 1 1 1 8 6 1 6 8))((= C"V")'(7 5 4 3 9 1 4 3 9 0 1 1 4 6 1 5 4))((= C"W")'(11 5 4 3 9 1 4 3 9 0 1 1 4 10 1 9 4 9 4 7 9 5 4 7 9 5 3 5 3))((= C"X")'(7 1 3 5 7 1 7 5 3 0 9 0 8 0 1 0 2 6 8 6 9 6 1 6 2))((= C"Y")'(7 3 5 5 3 3 6 3 9 1 3 3 5 0 1 0 2 6 1 6 2))((= C"Z")'(7 0 8 6 2 0 9 6 9 0 1 6 1))((= C"[")'(3 1 1 1 11 2 11 2 11 2 1 2 1))((= C"\\")'(5 1 2 4 9 1 1 1 1))
        ((= C"]")'(3 2 1 2 11 1 11 1 11 1 1 1 1))((= C"^")'(6 1 2 3 0 3 0 5 2))((= C"_")'(6 0 11 5 11))((= C"`")'(3 1 1 2 2))((= C"a")'(6 2 6 5 6 5 9 2 9 1 8 1 7 4 4 2 4 5 9 5 5))((= C"b")'(6 1 1 1 9 1 9 4 9 1 4 4 4 5 5 5 8))((= C"c")'(6 1 5 1 8 2 9 4 9 2 4 4 4 5 8 5 8 5 5 5 5))((= C"d")'(6 2 4 5 4 2 9 5 9 1 5 1 8 5 9 5 1))((= C"e")'(6 1 6 5 6 1 5 1 8 2 9 4 9 2 4 4 4 5 8 5 8 5 5 5 5))((= C"f")'(3 1 2 1 9 2 4 2 4 2 1 2 1))((= C"g")'(6 2 4 5 4 2 9 5 9 1 5 1 8 4 11 1 11 5 4 5 10))((= C"h")'(6 1 1 1 9 2 5 2 5 3 4 4 4 5 5 5 9))((= C"i")'(2 1 9 1 4 1 1 1 1))((= C"j")'(2 1 4 1 11 1 1 1 1))((= C"k")'(6 5 9 2 6 1 1 1 9 2 6 4 4))((= C"l")'(2 1 1 1 9))((= C"m")'(8 1 9 1 4 4 9 4 5 3 4 2 4 7 9 7 5 5 4 6 4))((= C"n")'(6 1 9 1 4 2 5 2 5 3 4 4 4 5 5 5 9))((= C"o")'(6 1 5 1 8 2 9 4 9 2 4 4 4 5 8 5 5))((= C"p")'(6 1 4 1 11 1 9 4 9 1 4 4 4 5 8 5 5))((= C"q")'(6 5 9 2 9 5 4 2 4 1 8 1 5 5 4 5 11))((= C"r")'(3 1 9 1 4 2 4 2 4))((= C"s")'(5 1 5 4 8 1 8 1 8 2 9 3 9 2 4 3 4 4 5 4 5))         ((= C"t")'(3 1 1 1 8 2 9 2 9 2 4 2 4))((= C"u")'(6 1 4 1 8 2 9 3 9 4 8 4 8 5 9 5 4))((= C"v")'(6 3 9 5 4 1 4 3 9))((= C"w")'(8 6 9 4 4 1 4 1 7 2 9 4 4 7 4 7 7))((= C"x")'(5 1 4 2 7 3 6 4 9 1 9 1 8 2 7 2 7 4 4 4 5))((= C"y")'(5 4 4 4 7 1 4 1 7 1 11 0 11 2 8 2 10 3 8 3 8))((= C"z")'(5 1 8 4 5 1 9 4 9 1 4 4 4))((= C"{")'(4 2 6 2 9 3 10 3 10 1 5 1 5 2 4 2 1 3 0 3 0))((= C$"|")'(2 1 1 1 10))((= C$"}")'(4 2 6 2 9 1 10 1 10 2 4 2 1 3 5 3 5 1 0 1 0))((= C"~")'(7 2 2 5 3 1 3 1 3 6 2 6 2))((= C(chr 176))'(4 1 2 2 3 2 1 3 2))((= C(chr 177))'(6 1 9 5 9 1 5 5 5 3 3 3 7))((= C$(chr 248))'(6 3 5 5 3 1 8 3 6 4 8 3 8 1 4 1 6 3 3 2 3 5 5 5 7))
      );cond
    );setq
    (setq FontList@ (append FontList@ (list ChrList@)))
    (setq Num# (1+ Num#))
  );repeat
  (if FontList@ FontList@ (list '(3 -1 -1 -1 -1)))
);defun GetFontList
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

举报

已领礼包: 2个

财富等级: 恭喜发财

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

举报

已领礼包: 2个

财富等级: 恭喜发财

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

举报

发表于 2009-9-6 17:42:53 | 显示全部楼层
方法:
1.反编译汉字字形shx-》shp,提取汉字
2.在gr过程中取屏幕高度,设字高比例,写text,动态更新,退出时删除
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

举报

发表于 2009-9-7 08:48:28 | 显示全部楼层

Re: [建议]:屏幕上显示文字的函数

最初由 dailx 发布
[B]autocad 有在屏幕上显示动态直线的函数grdraw,没有在屏幕上显示文字的函数,有没有高手用其他语言写一个 [/B]


动态显示啥都可以的,用grread,最好是先制造出图元,然后不断更新图元,。

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

举报

已领礼包: 2个

财富等级: 恭喜发财

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

举报

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

举报

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

举报

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

本版积分规则

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

GMT+8, 2025-4-6 16:54 , Processed in 0.442257 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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