明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2269|回复: 9

[已解答] 合并程序

[复制链接]
发表于 2016-4-24 23:25:53 | 显示全部楼层 |阅读模式
1,将任意样式文字改为黑体字,字高600,宽度因子0.6
2,在黑体字下画一条PL线,线宽100,线距文字280
3,请将上面2个程序合并,即:选文字,输入文字与PL线间距后,达到效果
4,用于统一结构图图名格式

;改变字型为黑体
(defun c:ht (/ ss n q kk s ob)
(setq oerr *error* *error* nerr)
(setvar"cmdecho"0)   
(setvar "plinetype" 2)        
(if (not (tblsearch "style" "黑体"))(command "-style" "黑体" "SIMHEI.TTF" "" "0.60" "" "" "" ""))   
(prompt "\n改变字型为黑体!")
(prompt"\n选要改动的文本:")
(setq ss (ssget))
(setq n (sslength ss))
(setq q 0)
(setq kk 0)
(repeat n
   (setq ssn (ssname ss q))
   (setq s (entget (ssname ss q)))
   (setq ob (assoc 0 s))
     (if (= (cdr ob) "TEXT")
       (progn         
         (setq s (subst (cons 7 "黑体") (assoc 7 s) s))
         (setq s (subst (cons 41 0.6) (assoc 41 s) s))
         (setq s (subst (cons 40 600) (assoc 40 s) s))
         (entmod s)
         (entupd s)         
         (setq kk (1+ kk))
       )
     )
   (setq q (1+ q))
;   (princ q)
)
(prompt"\n被改文本数目:")
(princ kk)
(setq *error* oerr)
(setvar"cmdecho"1)
(princ)
)

;;字下画PL线
(defun c:hx (/ os cl dd ss i ssn ssdata key box p1 p3 p2 p4 p1a p2a)
    (setq os (getvar "osmode"))
    (setvar "osmode" 0)
    (setvar "plinetype" 2)
    (setq cl (getvar "clayer"))
    (setq tsy (getvar "textstyle"))
    (if (not (tblsearch "style" "黑体"))(command "-style" "黑体" "SIMHEI.TTF" "" "0.60" "" "" "" ""))
    ;(setvar "textstyle" "黑体")
    (setq dd (getdist "\n字与线间距 <280>: "))
    (if (null dd) (setq dd 280.0))   
    (command "-layer" "m" "mytm" "c" "7" "mytm" "")
    (setq ss (ssget))
    (setq i 0)
    (repeat (sslength ss)
       (setq ssn (ssname ss i))
       (setq ssdata (entget ssn))
       ;(setq pt (cdr (assoc 11 ssdata)))
       (setq key (cdr (assoc 0 ssdata)))
       (if (= key "TEXT")
          (progn
             (command "ucs" "e" ssn)
             (setq box (textbox ssdata))
             (setq p1 (car box))
             (setq p3 (cadr box))
             (setq p2 (list (car p3) (cadr p1)))
             (setq p4 (list (car p1) (cadr p3)))                          
             (setq p1a (polar p1  (angle p2 p1) 130))
             (setq p2a (polar p2  (angle p1 p2) 130))            
             (command "pline" (polar p1a (angle p4 p1) dd) "w" "100" "" (polar p2a (angle p4 p1) dd) "")
             (command "change" ss "" "p" "la" (getvar "clayer") "")
          )   
        )
        (setq i (1+ i))
     )
     (command "ucs" "")
     (setvar "osmode" os)
     (setvar "clayer" cl)
     (prin1)
)  






 楼主| 发表于 2016-4-25 00:10:39 | 显示全部楼层
不会做图片,发张dwg图例

本帖子中包含更多资源

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

x
发表于 2016-4-25 08:27:57 | 显示全部楼层
  1. (defun c:hx (/ os cl dd ss i ssn ssdata key box p1 p3 p2 p4 p1a p2a)
  2.   (setq os (getvar "osmode"))
  3.   (setvar "osmode" 0)
  4.   (setvar "plinetype" 2)
  5.   (setq cl (getvar "clayer"))
  6.   (setq tsy (getvar "textstyle"))
  7.   (if (not (tblsearch "style" "黑体"))(command "-style" "黑体" "SIMHEI.TTF" "" "0.60" "" "" "" ""))
  8.   ;(setvar "textstyle" "黑体")
  9.   (setq dd (getdist "\n字与线间距 <280>: "))
  10.   (if (null dd) (setq dd 280.0))   
  11.   (command "-layer" "m" "mytm" "c" "7" "mytm" "")
  12.   (setq ss (ssget '((0 . "TEXT"))))
  13.   (setq i 0)
  14.   (repeat (sslength ss)
  15.     (setq ssn (ssname ss i))
  16.     (setq ssdata (entget ssn))
  17.     ;(setq pt (cdr (assoc 11 ssdata)))
  18.     (setq key (cdr (assoc 0 ssdata)))
  19.     (setq ssdata (subst (cons 7 "黑体") (assoc 7 ssdata) ssdata))
  20.     (setq ssdata (subst (cons 41 0.6) (assoc 41 ssdata) ssdata))
  21.     (setq ssdata (subst (cons 40 600) (assoc 40 ssdata) ssdata))
  22.     (entmod ssdata)
  23.     (entupd ssn)         
  24.     (command "ucs" "e" ssn)
  25.     (setq box (textbox ssdata))
  26.     (setq p1 (car box))
  27.     (setq p3 (cadr box))
  28.     (setq p2 (list (car p3) (cadr p1)))
  29.     (setq p4 (list (car p1) (cadr p3)))                          
  30.     (setq p1a (polar p1  (angle p2 p1) 130))
  31.     (setq p2a (polar p2  (angle p1 p2) 130))            
  32.     (command "pline" (polar p1a (angle p4 p1) dd) "w" "100" "" (polar p2a (angle p4 p1) dd) "")
  33.     (command "change" ss "" "p" "la" (getvar "clayer") "")
  34.     (setq i (1+ i))
  35.   )
  36.   (command "ucs" "")
  37.   (setvar "osmode" os)
  38.   (setvar "clayer" cl)
  39.   (prin1)
  40. )
发表于 2016-4-25 08:53:42 | 显示全部楼层
学习了我顶
 楼主| 发表于 2016-4-26 00:43:13 | 显示全部楼层
感谢ZZXXQQ,改得很好用
发表于 2016-4-29 11:48:33 | 显示全部楼层
如果文字大小可以根据比例调整就好了,或者可以选择设置字体的大小
 楼主| 发表于 2016-5-2 00:22:28 | 显示全部楼层
hdlyt11 发表于 2016-4-29 11:48
如果文字大小可以根据比例调整就好了,或者可以选择设置字体的大小

可以实现的,需要输入出图比例,只是输入参数多了,反而降低了实用性
 楼主| 发表于 2016-5-2 00:23:03 | 显示全部楼层
hdlyt11 发表于 2016-4-29 11:48
如果文字大小可以根据比例调整就好了,或者可以选择设置字体的大小

可以实现的,需要输入出图比例,只是输入参数多了,反而降低了实用性
 楼主| 发表于 2016-5-2 00:29:36 | 显示全部楼层
  1. ;将图名文字样式改为黑体,并在文字下面画PL线,线宽100
  2. ;用于统一图名格式,出图比例1:100时,字高为600
  3. ;感谢明经ZZXXQQ帮助修改
  4. (defun c:hx (/ os plwid cl tsy dd sc1 sc ss i ssn ssdata key box p1 p3 p2 p4 p1a p2a)
  5.   (setq os (getvar "osmode"))
  6.   (setvar "osmode" 0)
  7.   (setvar "plinetype" 2)
  8.   (setq plwid (getvar "plinewid"))
  9.   (setq cl (getvar "clayer"))
  10.   (setq tsy (getvar "textstyle"))
  11.   (if (not (tblsearch "style" "黑体"))(command "-style" "黑体" "SIMHEI.TTF" "" "0.60" "" "" "" ""))
  12.   ;(setvar "textstyle" "黑体")
  13.   (prompt "\n将图名文字样式改为黑体,并在文字下面画PL线,线宽100,用于出图比例1:100")
  14.   (setq dd (getdist "\n字与线间距 <280>: "))
  15.   (if (null dd) (setq dd 280.0))
  16.   (setq sc1 (getdist "\n出图比例<默认值:1:100>:"))
  17.   (if (not sc1) (setq sc1 100))
  18.   (setq sc (/ sc1 100))   
  19.   (command "-layer" "m" "mytm" "c" "7" "mytm" "")
  20.   (setq ss (ssget '((0 . "TEXT"))))
  21.   (setq i 0)
  22.   (repeat (sslength ss)
  23.     (setq ssn (ssname ss i))
  24.     (setq ssdata (entget ssn))
  25.     ;(setq pt (cdr (assoc 11 ssdata)))
  26.     ;(setq key (cdr (assoc 0 ssdata)))
  27.     (setq ssdata (subst (cons 7 "黑体") (assoc 7 ssdata) ssdata))
  28.     (setq ssdata (subst (cons 41 0.6) (assoc 41 ssdata) ssdata))
  29.     (setq ssdata (subst (cons 40 (* sc 600)) (assoc 40 ssdata) ssdata))
  30.     (entmod ssdata)
  31.     (entupd ssn)         
  32.     ;(command "ucs" "e" ssn)
  33.     (command "ucs" "ob" ssn)
  34.     (setq box (textbox ssdata))
  35.     (setq p1 (car box))
  36.     (setq p3 (cadr box))
  37.     (setq p2 (list (car p3) (cadr p1)))
  38.     (setq p4 (list (car p1) (cadr p3)))                          
  39.     (setq p1a (polar p1  (angle p2 p1) (* sc 130)))
  40.     (setq p2a (polar p2  (angle p1 p2) (* sc 130)))                 
  41.     (command "pline" (polar p1a (angle p4 p1) (* sc dd)) "w" (* sc 100) "" (polar p2a (angle p4 p1) (* sc dd)) "")
  42.     (command "change" ss "" "p" "la" (getvar "clayer") "")
  43.     (setq i (1+ i))
  44.   )
  45.   (command "ucs" "")
  46.   (setvar "osmode" os)
  47.   (setvar "clayer" cl)
  48.   (setvar "plinewid" plwid)
  49.   (prin1)
  50. )

本帖子中包含更多资源

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

x
发表于 2019-1-23 16:32:15 | 显示全部楼层
很强大,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 01:15 , Processed in 0.217611 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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