明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3369|回复: 13

[源码] 绘制文字矢量

[复制链接]
发表于 2016-5-17 11:48:20 | 显示全部楼层 |阅读模式
  1. ;;;函数名称:cs-GrText
  2. ;;;函数功能:显示文字矢量
  3. ;;;调用方法:(cs-GrText lst)
  4. ;;;参数说明:lst为nil时,如(cs-GrText ?),显示使用方法
  5. ;;;          lst为表时,如(cs-GrText (list point str1 str2 str3 ...))


  6. (defun cs-GrText  (lst / A ASC OSTR PT SCL STR VEC XCO YCO)
  7.   (defun cs-get-txt  (filename / FILE OUT TEMP)
  8.     (if (setq filename (findfile filename))
  9.       (progn
  10.         (setq out '())
  11.         (setq file (open filename "r"))
  12.         (while (setq temp (read-line file))
  13.           (setq out (cons temp out))
  14.           )
  15.         (close file)
  16.         (setq out (reverse out))
  17.         )
  18.       )
  19.     )
  20.   (or *cszk*
  21.       (and (princ "\n正在初始化字库")
  22.            (setq *cszk* (mapcar 'read (CS-GET-TXT "hztxt.txt")))
  23.            (princ "\r初始化字库成功\n")
  24.            )
  25.       )
  26.   (if lst
  27.     (progn
  28.       (setq pt  (car lst)
  29.             str (apply 'strcat (cons (cadr lst) (mapcar '(lambda (x) (strcat "\n" x)) (cddr lst))))
  30.             )
  31.       (setq scl (/ (getvar 'viewsize) (cadr (getvar 'screensize)))
  32.             scl (* 0.12 scl)
  33.             pt  (trans pt 1 2)
  34.             )
  35.       (if (/= str (car *cs_strvec*))
  36.         (progn
  37.           (setq xco  0
  38.                 yco  0
  39.                 ostr str)
  40.           (while (> (strlen str) 0)
  41.             (cond
  42.               ((member (substr str 1 3) '("%%d" "%%D"))
  43.                (setq asc "%%d"
  44.                      str (substr str 4))
  45.                )
  46.               ((member (substr str 1 3) '("%%c" "%%C"))
  47.                (setq asc "%%c"
  48.                      str (substr str 4))
  49.                )
  50.               ((member (substr str 1 3) '("%%p" "%%P"))
  51.                (setq asc "%%p"
  52.                      str (substr str 4))
  53.                )
  54.               ((> (ascii (substr str 1 1)) 126)
  55.                (setq asc (substr str 1 2)
  56.                      str (substr str 3)
  57.                      )
  58.                )
  59.               (t
  60.                (setq asc (substr str 1 1)
  61.                      str (substr str 2)
  62.                      )
  63.                )
  64.               )
  65.             (cond
  66.               ((= " " asc)
  67.                (setq xco (+ xco 127.0))
  68.                )
  69.               ((= "\t" asc)
  70.                (setq xco (+ xco 16000.0))
  71.                )
  72.               ((= "\n" asc)
  73.                (setq xco 0
  74.                      yco (- yco 180.0)
  75.                      )
  76.                )
  77.               ((setq vec
  78.                       (cons
  79.                         (mapcar
  80.                           '(lambda (a)
  81.                              (list (+ (car a) xco) (+ (cadr a) yco))
  82.                              )
  83.                           (cdr (assoc asc *cszk*))
  84.                           )
  85.                         vec
  86.                         )
  87.                      )
  88.                (setq xco (+ xco 127.0))
  89.                )
  90.               )
  91.             )
  92.           (setq vec (apply 'append vec))
  93.           (setq *cs_strvec* (append (list ostr 2) vec))
  94.           )
  95.         )
  96.       (grvecs (cdr *cs_strvec*)
  97.               (list
  98.                 (list scl 0.0 0.0 (+ (car pt) (* 50.0 scl)))
  99.                 (list 0.0 scl 0.0 (+ (cadr pt) (* -200.0 scl)))
  100.                 (list 0.0 0.0 scl 0.0)
  101.                 '(0.0 0.0 0.0 1.0)
  102.                 )
  103.               )
  104.       )
  105.     (xslist '("(cs-grtext (list pt str))"
  106.               "pt 参考点"
  107.               "str   文本")
  108.             )
  109.     )
  110.   (princ)
  111.   )
  1. ;;;以下为示例程序
  2. (defun c:cstest  (/ pt)
  3.   (while (member (car (setq pt (grread t 4 2))) '(2 25 5))
  4.     (if (= 5 (car pt))
  5.       (progn
  6.         (redraw)
  7.         (cs-grtext (list (cadr pt) "测试信息提示" "选择实体" "点击鼠标左键退出"))
  8.         )
  9.       )
  10.     )
  11.   (redraw)
  12.   (princ)
  13.   )
说明,字库文件须放在acad的搜索路径中

本帖子中包含更多资源

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

x

点评

附件无法下载  发表于 2019-10-18 16:43

评分

参与人数 3明经币 +3 收起 理由
USER2128 + 1 很给力!
自贡黄明儒 + 1 很给力!
vectra + 1

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-8-6 15:47:56 | 显示全部楼层
ynhh 发表于 2020-12-25 11:46
原来是在屏幕上显示文字
不知能不能有空画图应用提示之类的实例?
谢谢

测试成功,对啊,不怎么画图的时候怎么运用~
发表于 2021-12-14 00:06:51 | 显示全部楼层
大佬 这个程序能不能和entsel  或者ssget结合呢,比如说我选择对象的时候 就这样提示,而不是命令行提示选择对象
发表于 2020-12-25 11:46:12 | 显示全部楼层
原来是在屏幕上显示文字
不知能不能有空画图应用提示之类的实例?
谢谢
发表于 2016-5-17 13:55:16 | 显示全部楼层
楼主:函数xslist没有定义
 楼主| 发表于 2016-5-17 17:40:16 | 显示全部楼层
USER2128 发表于 2016-5-17 13:55
楼主:函数xslist没有定义
  1. (defun xslist (lst / )
  2.    (mapcar '(lambda(x)
  3.       (princ "\n")
  4.       (vl-princ1-to-string x)
  5.       )
  6.      lst)
  7. (princ)
  8. )
发表于 2016-5-19 14:55:18 来自手机 | 显示全部楼层
应用????
发表于 2016-5-23 08:47:10 | 显示全部楼层
本帖最后由 ps122hb 于 2016-5-23 12:13 编辑

好像没反应,单行多行都试了
发表于 2016-5-25 11:36:56 | 显示全部楼层
没看出来有什么反应啊
发表于 2019-9-11 18:52:40 | 显示全部楼层
测试成功了,很好用,必须吧字库群文件放到搜索路径内才能显示
发表于 2021-12-14 08:23:56 | 显示全部楼层
上个图看看就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 11:28 , Processed in 0.176767 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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