明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10949|回复: 15

给文字外面加框

  [复制链接]
发表于 2005-5-2 14:45:00 | 显示全部楼层 |阅读模式
为文字加一个矩形框,文字的高度可以求出,但宽度求不出来,应怎么办,文字长度是不固定的
发表于 2005-5-2 17:32:00 | 显示全部楼层
文字加框的最简单的方法就是用形位公差来写文字。
发表于 2005-5-3 23:15:00 | 显示全部楼层
本帖最后由 作者 于 2009-9-27 20:54:09 编辑

参考程序:
  1. (DEFUN C:TXTBLK () ;文字加框
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETVAR "OSMODE" 0)
  5. (PRINC "\nSelect Text : ")
  6. (IF (SETQ SS (SSGET '((0 . "TEXT")))) (PROGN
  7.   (COMMAND ".UNDO" "BE")
  8.   (SETQ SL (SSLENGTH SS) I 0)
  9.   (REPEAT SL
  10.    (SETQ ENT (ENTGET (SSNAME SS I)) I (1+ I))
  11.    (SETQ TEMP    (CADR (TEXTBOX (LIST (ASSOC 1 ENT))))
  12.          PT_BASE (CDR (ASSOC 10 ENT))
  13.          ANG     (CDR (ASSOC 50 ENT)) ;文字转角
  14.          TEXTW   (CDR (ASSOC 41 ENT)) ;文字高宽比
  15.          TEMP_W  (* (CAR TEMP) TEXTW) ;实际字宽
  16.          TEMP_H  (CADR TEMP))
  17.    (COMMAND "PLINE" PT_BASE
  18.             (SETQ PT (POLAR PT_BASE (+ (/ PI 2) ANG) TEMP_H))
  19.             (POLAR PT ANG TEMP_W)
  20.             (POLAR PT_BASE ANG TEMP_W)
  21.             "C")
  22.   )
  23.   (COMMAND ".UNDO" "E")
  24. ))
  25. (SETVAR "OSMODE" OLDOS)
  26. (SETVAR "CMDECHO" 1)
  27. (PRINC)
  28. )
复制代码
运行上面程序可以给图中已写文字加框。
发表于 2005-5-4 08:49:00 | 显示全部楼层
(defun c:textblk (/ ss n en ed textva tb)
(setq ss (ssget '((0 . "TEXT"))))
(setq n 0)
(while (> (sslength ss) n)
(setq en (ssname ss n))
(setq ed (entget en))
(setq textva (assoc 1 ed))
(setq tb (textbox (list textva)))
(command "_.ucs" "Object" en)
(command "_.RECTANG" (car tb) (cadr tb))
(setq n (1+ n))
)
(princ)
) 用 TEXTBOX 函数
发表于 2005-5-5 21:55:00 | 显示全部楼层
可以啊,不过做到最后一步时能不能多一个选项,让你选择这个矩形框的缩放倍数(以矩形中心为缩放基点),和字一样大不好看,字也看不清


比如:


请输入缩放倍数<1.2>:
发表于 2005-5-5 22:17:00 | 显示全部楼层
本帖最后由 作者 于 2009-9-27 20:54:59 编辑

加上缩放倍数
  1. ;文字加外框
  2. (DEFUN C:TXTBLK ()
  3. (SETVAR "CMDECHO" 0)
  4. (SETQ OLDOS (GETVAR "OSMODE"))
  5. (SETVAR "OSMODE" 0)
  6. (PRINC "\nSelect Text : ")
  7. (IF (SETQ SS (SSGET '((0 . "TEXT")))) (PROGN
  8.   (COMMAND ".UNDO" "BE")
  9.   (SETQ SC (GETDIST "\n输入缩放比例<1>")
  10.         SC (IF SC SC 1))
  11.   (SETQ SL (SSLENGTH SS) I 0)
  12.   (REPEAT SL
  13.    (SETQ ENT (ENTGET (SSNAME SS I)) I (1+ I))
  14.    (SETQ TEMP    (CADR (TEXTBOX (LIST (ASSOC 1 ENT))))
  15.          PT_BASE (CDR (ASSOC 10 ENT))
  16.          ANG     (CDR (ASSOC 50 ENT)) ;文字转角
  17.          TEXTW   (CDR (ASSOC 41 ENT)) ;文字高宽比
  18.          TEMP_W  (* (CAR TEMP) TEXTW) ;实际字宽
  19.          TEMP_H  (CADR TEMP)
  20.          TH (* TEMP_H SC)             ;字高放大
  21.          SSC (* (- TH TEMP_H) 0.5)
  22.          TEMP_W (+ TEMP_W SSC SSC)    ;字宽加大同样边距
  23.          PT_BASE (POLAR (POLAR PT_BASE (+ ANG PI) SSC) (+ (/ PI -2) ANG) SSC))
  24.    (COMMAND "PLINE" PT_BASE
  25.             (SETQ PT (POLAR PT_BASE (+ (/ PI 2) ANG) TH))
  26.             (POLAR PT ANG TEMP_W)
  27.             (POLAR PT_BASE ANG TEMP_W)
  28.             "C")
  29.   )
  30.   (COMMAND ".UNDO" "E")
  31. ))
  32. (SETVAR "OSMODE" OLDOS)
  33. (SETVAR "CMDECHO" 1)
  34. (PRINC)
  35. )
复制代码
发表于 2005-5-6 11:08:00 | 显示全部楼层
完美的程序,收藏,多谢大狭
发表于 2005-5-13 00:17:00 | 显示全部楼层
也发一个:

本帖子中包含更多资源

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

x
发表于 2005-6-3 00:19:00 | 显示全部楼层
有个严重的问题


如果给中文字(如hztxt.shx)加框了,再给其他字加框就出错了(一直以中文字的框为大小了)
发表于 2005-6-4 22:21:00 | 显示全部楼层
  1. (load "xyp_lib");加载通用函数
  2. ;|
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 通用函数下载地址:
  10. http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554
  11. |;(defun c:wbk ()
  12.    (CMDLA0)
  13.    (setq  ss (ssget '((0 . "TEXT")))
  14.   n   -1
  15.    )
  16.    (while (setq s1 (ssname ss (setq n (1+ n))))
  17.        (setq tb (textbox (list (assoc 1 (entget s1))))       )
  18.        (command "_.ucs" "Object" s1)
  19.        (command "_.RECTANG" (car tb) (cadr tb))
  20.        (setq s1 (entlast))
  21.        (command "scale" s1 "" (_midp (car tb) (cadr tb)) "1.1")
  22.    )
  23.    (command "_.ucs" "")
  24.    (CMDLA1)
  25. )
  26. (princ "wbk   (文本框)")
  27. (princ)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-27 20:46 , Processed in 0.184666 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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