明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1205|回复: 2

[已解答] 求高手帮忙看看代码,可能是textbox的问题,也可能是entmod的问题

[复制链接]
发表于 2014-12-3 02:15:14 | 显示全部楼层 |阅读模式
本帖最后由 tranney 于 2014-12-3 02:20 编辑

我是设备专业的,经常从建筑调图,发现每个人的图名样式都不一样,所以一张图里面有很多种图名样式,前几天看到有人发的代码,我也根据我的需要修改了一下,谁知道,有点问题,请大伙帮我看看,先谢谢了


  1. ;;;;;;***************************文本加双下划线
  2. (defun c:fe (/   sc  box   ent   ent1  h     nent1 nent2 np1 np2
  3.        np3 np4 np5   old_lay     p     p1x   p1y   p2x   p2y
  4.        px     py   r    snap  test
  5.       )
  6.   (if (= (tblsearch "style" "菜菜字体") nil)
  7.     (command "_.style" "菜菜字体"  "txt,hztxt" "0"  ".7" ""  "" "" "")
  8.   )
  9.     (if (null sc)
  10.     (SETQ sc  (GETVAR "DIMSCALE")))
  11.   (setq ent1 (car (entsel "\n选择文本:")))
  12.   (setvar "cmdecho" 0)
  13. ;;;; 关闭命令响应
  14.   (command ".UNDO" "BE")    ; 设置undo起点
  15.   (setq snap (getvar "osmode"))
  16.   (setvar "osmode" 0)
  17. ;;;; 关闭捕捉
  18.   (setq old_lay (getvar "clayer"))  ; 保存当前图层
  19.   (setq ent (entget ent1))
  20.   (if (= "MTEXT" (cdr (assoc 0 ent)))  ; 如选多行文本,则转化为单行文本
  21.     (progn
  22.       (command ".EXPLODE" ent1)
  23.       (setq ent1 (entlast))
  24.       (setq ent (entget ent1))
  25.     )
  26.     (princ)
  27.   )
  28.   
  29.   (entmod (list  (assoc -1 ent)
  30.     (cons 7 "菜菜字体")
  31.     (cons 8 "0-标题文字")
  32.     (cons 40 600)
  33.     (cons 41 0.8)
  34.     ;(cons 50 0)
  35.     (cons 62 7)
  36.     (cons 370 5)
  37.     )
  38.   )
  39. ;关键获取不了更新的图元参数

  40.   (setq  p    (cdr (assoc 10 ent))  ; 文本基点坐标
  41.       r    (cdr (assoc 50 ent))  ; 文本旋转角度
  42.       test (cdr (assoc 8 ent))  ; 文本所在图层
  43.   )

  44.   (setq box (textbox ent))    ; 文本框坐标
  45.   (setq  p1x (car (car box))    ; 文本左下角X坐标
  46.   p1y (car (cdr (car box)))
  47.   p2x (car (car (cdr box)))  ; 文本右上角X坐标
  48.   p2y (car (cdr (car (cdr box))))
  49.   px  (car p)
  50.   py  (car (cdr p))
  51.   )

  52. ;;;第一条线段左端点坐标
  53.   (setq np1 (list (- px (* sc 0.8)) (- py (* sc 1.5)) 0.0))
  54. ;;;第一条线段右端点坐标
  55.   (setq np2 (list (+ p2x (+ px (* sc 0.8))) (- py (* sc 1.5)) 0.0))
  56. ;;;; 第二条线段左端点坐标
  57.   (setq np3 (list (- px (* sc 0.8)) (- py (* sc 2.5)) 0.0))
  58. ;;;; 第二条线段右端点坐标
  59.   (setq np4 (list (+ p2x (+ px (* sc 0.8))) (- py (* sc 2.5)) 0.0))
  60. ;;;; 第一条线段右端点坐标偏移一点点写比例
  61.   (setq np5 (list (+ p2x (+ px (* sc 2.8))) (- py (* sc 1.5)) 0.0))
  62.   (SETVAR "CLAYER" test)    ; 文本所在图层设为当前图层
  63.   (command "pline" np1 "w" (* sc 0.8) (* sc 0.8) np2 "")
  64.   (setq nent1 (entlast))
  65.   (command "text" "s" "菜菜字体" "J" "BL" np5 "400" 0 "1:100")
  66.   (setq nent3 (entlast))
  67.   (command "line" np3 np4 "")    ; 第二条下划线
  68.   (setq nent2 (entlast))
  69.   (if (/= r 0.0)
  70. ;;;; 如果文本不水平则旋转下划线角度
  71.     (progn
  72.       (command "rotate" nent1 "" p (* 180.0 (/ r pi)))
  73.       (command "rotate" nent2 "" p (* 180.0 (/ r pi)))
  74.       (command "rotate" nent3 "" p (* 180.0 (/ r pi)))
  75.     )
  76.   )
  77.   (setvar "osmode" snap)
  78.   (setvar "clayer" old_lay)    ; 恢复当前图层
  79.   (command ".UNDO" "E")
  80.   (princ)
  81. )

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-12-3 08:19:14 | 显示全部楼层
  1. ;;;;;;***************************文本加双下划线
  2. (defun c:fe (/   sc  box   ent   ent1  h     nent1 nent2 np1 np2
  3.        np3 np4 np5   old_lay     p     p1x   p1y   p2x   p2y
  4.        px     py   r    snap  test
  5.       )
  6.   (setvar "CMDECHO" 0)
  7. ;;;; 关闭命令响应
  8.   (command ".UNDO" "BE")    ; 设置undo起点
  9.   (setq snap (getvar "OSMODE"))
  10.   (setvar "OSMODE" 0)
  11. ;;;; 关闭捕捉
  12.   (setq old_lay (getvar "clayer"))  ; 保存当前图层
  13.   (if (= (tblsearch "style" "菜菜字体") nil)
  14.     (command "_.style" "菜菜字体"  "txt,hztxt" "0"  ".7" ""  "" "" "")
  15.   )
  16.   (if (null sc) (setq sc  (getvar "DIMSCALE")))
  17.   (setq ent1 (car (entsel "\n选择文本:")))
  18.   (setq ent (entget ent1))
  19.   (if (= "MTEXT" (cdr (assoc 0 ent))) (progn  ; 如选多行文本,则转化为单行文本
  20.     (command ".EXPLODE" ent1)
  21.     (setq ent1 (entlast))
  22.     (setq ent (entget ent1))
  23.   ))
  24.   (setq ent (subst (cons 7 "菜菜字体") (assoc 7 ent) ent))
  25.   (setq ent (subst (cons 8 "0-标题文字") (assoc 8 ent) ent))
  26.   (setq ent (subst (cons 40 600) (assoc 40 ent) ent))
  27.   (setq ent (subst (cons 41 0.8) (assoc 41 ent) ent))
  28.   (if (assoc 62 ent)
  29.    (setq ent (subst (cons 62 7) (assoc 62 ent) ent))
  30.    (setq ent (append ent (list(cons 62 7))))
  31.   )
  32.   (entmod (subst (cons 370 5) (assoc 370 ent) ent))
  33. ;关键获取不了更新的图元参数
  34.   (setq  p    (cdr (assoc 10 ent))  ; 文本基点坐标
  35.       r    (cdr (assoc 50 ent))  ; 文本旋转角度
  36.       test (cdr (assoc 8 ent))  ; 文本所在图层
  37.   )
  38.   (setq box (textbox ent))    ; 文本框坐标
  39.   (setq  p1x (caar box)    ; 文本左下角X坐标
  40.   p1y (cadar box)
  41.   p2x (caadr box)  ; 文本右上角X坐标
  42.   p2y (cadadr box)
  43.   px  (car p)
  44.   py  (cadr p))
  45. ;;;第一条线段左端点坐标
  46.   (setq np1 (list (- px (* sc 0.8)) (- py (* sc 1.5)) 0.0))
  47. ;;;第一条线段右端点坐标
  48.   (setq np2 (list (+ p2x (+ px (* sc 0.8))) (- py (* sc 1.5)) 0.0))
  49. ;;;; 第二条线段左端点坐标
  50.   (setq np3 (list (- px (* sc 0.8)) (- py (* sc 2.5)) 0.0))
  51. ;;;; 第二条线段右端点坐标
  52.   (setq np4 (list (+ p2x (+ px (* sc 0.8))) (- py (* sc 2.5)) 0.0))
  53. ;;;; 第一条线段右端点坐标偏移一点点写比例
  54.   (setq np5 (list (+ p2x (+ px (* sc 2.8))) (- py (* sc 1.5)) 0.0))
  55.   (setvar "CLAYER" test)    ; 文本所在图层设为当前图层
  56.   (command "pline" np1 "w" (* sc 0.8) (* sc 0.8) np2 "")
  57.   (setq nent1 (entlast))
  58.   (command "text" "s" "菜菜字体" "BL" np5 "400" 0 "1:100")
  59.   (setq nent3 (entlast))
  60.   (command "line" np3 np4 "")    ; 第二条下划线
  61.   (setq nent2 (entlast))
  62.   (if (/= r 0.0) ;;;; 如果文本不水平则旋转下划线角度
  63.     (command "rotate" nent1 nent2 nent3 "" p (/ (* r 180.0) pi))
  64.   )
  65.   (setvar "OSMODE" snap)
  66.   (setvar "CLAYER" old_lay)    ; 恢复当前图层
  67.   (command ".UNDO" "E")
  68.   (princ)
  69. )
 楼主| 发表于 2014-12-3 08:35:10 | 显示全部楼层
谢谢z超级版主,我昨天弄了一夜都没弄好呢,哈哈,真的非常感谢,你起得真早啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 17:21 , Processed in 0.172917 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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