明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1228|回复: 10

[提问] 求为文字添加标题线的lisp程序

[复制链接]
发表于 2014-11-27 14:14 | 显示全部楼层 |阅读模式
文字下面两条线,一条宽的一条细的.
谢谢!!

本帖子中包含更多资源

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

x
发表于 2014-11-27 15:29 | 显示全部楼层
自己搜索 论坛有!!!
 楼主| 发表于 2014-11-27 16:38 | 显示全部楼层
找了半天没找到才发帖问的,不知道这个东西应该怎么称呼? 是不是我叫的不对,不是标题线?
发表于 2014-11-27 17:02 | 显示全部楼层
我贴一个收集的简单的,是单线,自己改为双线就行。
  1. (defun c:lsp_40()
  2.     (initget "T B A")
  3.     (setq typ (getkword "\n画线型式 [T顶线,B底线,A上下线] <B>: "))
  4.     (if (null typ) (setq typ "B"))
  5.     (setq dd (getdist "\n字与线间距 <2>: "))
  6.     (if (null dd) (setq dd 2.0))
  7.     (setq ss (ssget))
  8.     (setq i 0)
  9.     (repeat (sslength ss)
  10.        (setq ssn (ssname ss i))
  11.        (setq ssdata (entget ssn))
  12.        (setq key (cdr (assoc 0 ssdata)))
  13.        (if (= key "TEXT")
  14.           (progn
  15.              (command "ucs" "e" ssn)
  16.              (setq box (textbox ssdata))
  17.              (setq p1 (car box))
  18.              (setq p3 (cadr box))
  19.              (setq p2 (list (car p3) (cadr p1)))
  20.              (setq p4 (list (car p1) (cadr p3)))
  21.              (setq ang (angle p1 p4))
  22.              (setq ee (entlast))
  23.              (cond ((= typ "T") (command "line" (polar p4 ang dd) (polar p3 ang dd) ""))
  24.                    ((= typ "B") (command "line" (polar p1 (- ang) dd) (polar p2 (- ang) dd) ""))
  25.                    ((= typ "A") (command "line" (polar p4 ang dd) (polar p3 ang dd) "")
  26.                                 (command "line" (polar p1 (- ang) dd) (polar p2 (- ang) dd) ""))
  27.              )   
  28.           )   
  29.         )
  30.         (setq i (1+ i))
  31.      )
  32.      (command "ucs" "")
  33.      (prin1)
  34. )  
发表于 2014-11-27 17:45 | 显示全部楼层
文本加双下划线

  1. ;;;;;;***************************文本加双下划线
  2. (defun c:T4 (/     box   ent   ent1  h     nent1 nent2 np1   np2
  3.        np3   np4   old_lay     p     p1x   p1y   p2x   p2y
  4.        px     py   r     snap  test
  5.       )
  6.   (setq ent1 (car (entsel "\n选择文本:")))
  7.   (setvar "cmdecho" 0);;;; 关闭命令响应
  8.   (command ".UNDO" "BE")    ; 设置undo起点
  9.   (setq snap (getvar "osmode"))
  10.   (setvar "osmode" 0);;;; 关闭捕捉
  11.   (setq old_lay (getvar "clayer"))  ; 保存当前图层
  12.   (setq ent (entget ent1))
  13.   (if (= "MTEXT" (cdr (assoc 0 ent)))  ; 如选多行文本,则转化为单行文本
  14.     (progn
  15.       (command ".EXPLODE" ent1)
  16.       (setq ent1 (entlast))
  17.       (setq ent (entget ent1))
  18.     )
  19.     (princ)
  20.   )
  21.   (setq  p    (cdr (assoc 10 ent))  ; 文本基点坐标
  22.   h    (cdr (assoc 40 ent))  ; 文本高度
  23.   r    (cdr (assoc 50 ent))  ; 文本旋转角度
  24.   TEST (cdr (assoc 8 ent))  ; 文本所在图层
  25.   )
  26.   (setq box (textbox ent))    ; 文本框坐标
  27.   (setq  p1x (car (car box))    ; 文本左下角X坐标
  28.   p1y (car (cdr (car box)))
  29.   p2x (car (car (cdr box)))  ; 文本右上角X坐标
  30.   p2y (car (cdr (car (cdr box))))
  31.   px  (car p)
  32.   py  (car (cdr p))
  33.   );;;; 下面程序计算划线的起终点坐标。如需修改只需调整0.2、0.3、0.56三个参数
  34.   (setq np1 (list (- px (* h 0.2)) (- py (* h 0.4)) 0.0))
  35. ;;;; 第一条线段左端点坐标。(* h 0.2)指水平方向距离文本基点0.2倍文本高度,(* h
  36. ;;;; 0.3)竖直方向距0.3倍字高。
  37.   (setq np2 (list (+ p2x (+ px (* h 0.2))) (- py (* h 0.4)) 0.0))
  38. ;;;; 第一条线段右端点坐标
  39.   (setq np3 (list (- px (* h 0.2)) (- py (* h 0.56))))
  40. ;;;; 第二条线段左端点坐标
  41.   (setq np4 (list (+ p2x (+ px (* h 0.2))) (- py (* h 0.56)) 0.0))
  42. ;;;; 第二条线段右端点坐标
  43.   (SETVAR "CLAYER" TEST)    ; 文本所在图层设为当前图层
  44.   (COMMAND "pline" np1 "w" (/ h 10) (/ h 10) np2 "")
  45. ;;;; 第一条下划线。(/ h
  46. ;;;; 10)指第一条下划线宽度为文本高度的0.1倍,如需调整下划线宽度可以调整10的数值。
  47.   (setq nent1 (entlast))
  48.   (COMMAND "line" np3 np4 "")    ; 第二条下划线
  49.   (setq nent2 (entlast))
  50.   (if (/= r 0.0);;;; 如果文本不水平则旋转下划线角度
  51.     (progn
  52.       (COMMAND "rotate" nent1 "" p (* 180.0 (/ r pi)))
  53.       (COMMAND "rotate" nent2 "" p (* 180.0 (/ r pi)))
  54.     )
  55.   )
  56.   (setvar "osmode" snap)
  57.   (setvar "clayer" old_lay)    ; 恢复当前图层
  58.   (command ".UNDO" "E")
  59.   (princ)
  60. )

点评

标得很详细,我这种不懂的都能改成一根细线,太棒了,谢谢  发表于 2017-12-17 21:39
不错不错  发表于 2017-12-17 21:15
发表于 2014-11-27 20:03 | 显示全部楼层
不支持天正的文字

点评

想支持天正,天正不是有现成的吗?还求个鸟  发表于 2014-11-27 23:55
发表于 2014-12-4 12:26 | 显示全部楼层
bai2000 发表于 2014-11-27 20:03
不支持天正的文字

楼主发的就是天正的,没必要抛开天正折腾自己!
 楼主| 发表于 2014-12-7 23:13 | 显示全部楼层
谢谢楼上各位,谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 17:22 , Processed in 0.291575 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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