注册 登录
明经CAD社区 返回首页

yeahyeah的个人空间 http://www.mjtd.com/?7302321 [收藏] [复制] [分享] [RSS]

日志

文字插线

已有 974 次阅读2013-8-20 21:24 |个人分类:工具帖|系统分类:应用


;;;思路源于:http://tel.tstmr.com/dispbbs.asp?boardid=7&Id=2595
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;功能: 文字插线并断开线     
;;;命令: textbreakline 或tbl  
;;;作者: carrot1983 2008-11-06


;|//DCL的文件名保存为: textbreakline.dcl
//并将dcl保存到CAD的搜索路径 或者编译成 VLX格式

tbl:dialog {
    label = "文字插线 carrot" ;
    :popup_list {
        key = "layer" ;
        label = "图层:" ;
    }
    :popup_list {
        key = "style" ;
        label = "样式:" ;
    }
    :edit_box {
        key = "height" ;
        label = "字高:" ;
    }
    :edit_box {
        key = "width" ;
        label = "断宽:" ;
    }
    :edit_box {
        key = "text" ;
        label = "文本:" ;
    }
    ok_cancel;
}
|;

(defun c:textbreakline (/ clayer cmdecho dclfna dclid dclna
e el ent layers okid pt
styles
      )
  (vl-load-com)

  ;;           
  ;;  对话框   
  ;;           
  (defun dialog ()
    ;;                     
    ;;  通用函数: 符号表   
    ;;                     
    (defun jw-tblnext (name item / list0 list1 listn)
      (if (setq list0 (tblnext name t))
(progn
 (setq listn (cons (cdr (assoc item list0)) listn))
 (while (setq list1 (tblnext name))
   (setq listn (cons (cdr (assoc item list1)) listn))
 )
)
      )
      (reverse listn)
    )

    (setq dclfna "textbreakline.dcl")
    (setq dclna "tbl")

    ;;1.1.
    (setq dclid (load_dialog dclfna))
    (if (< dclid 0)
      (progn (alert (strcat dclfna " 文件不存在!!!"))
    (exit)
      )
    )

    ;;1.2.
    (if (not (new_dialog dclna dclid ""))
      (exit)
    )

    ;;1.3.
    (start_list "layer")
    (mapcar 'add_list (setq layers (jw-tblnext "layer" 2)))
    (end_list)

    (start_list "style")
    (mapcar 'add_list (setq styles (jw-tblnext "style" 2)))
    (end_list)

    ;;1.4.
    (if *layer
      (set_tile "layer" *layer)
      (set_tile "layer" "0")
    )
    (if *style
      (set_tile "style" *style)
      (set_tile "style" "0")
    )
    (if *height
      (set_tile "height" *height)
      (set_tile "height" "300")
    )
    ;;打断宽度
    (if *width
      (set_tile "width" *width)
      (set_tile "width" "375")
    )
    (if *text
      (set_tile "text" *text)
      (set_tile "text" "NO")
    )

    ;;1.6.1
    (defun dclmain ()
      (setq *layer (get_tile "layer"))
      (setq *style (get_tile "style"))
      (setq *height (get_tile "height"))
      (setq *width (get_tile "width"))
      (setq *text (get_tile "text"))
    )
    ;;1.6.
    (action_tile "cancel" "(done_dialog 0)")
    (action_tile "accept" "(dclmain) (done_dialog 1)")
    ;;1.7.
    (setq okid (start_dialog))
    (unload_dialog dclid)
  )

  ;;           
  ;;  主程序   
  ;;           
  (setq cmdecho (getvar "cmdecho"))
  (setq clayer (getvar "clayer"))
  (setvar "cmdecho" 0)
  ;;1.
  (dialog)
  ;;2.
  (cond ((= okid 1)
(while (setq ent (entsel "\n选择插入点:"))
  (command "._undo" "begin")
  (setq e  (car ent)
pt (cadr ent)
pt (vlax-curve-getclosestpointto e pt)
  )
  (command "circle" "none" pt (read *width))
  (setq el (entlast))
  (command "trim" el "" "none" (list e pt) "")
  (setvar "clayer" (nth (read *layer) layers))
  (command "text"
   "s"
   (nth (read *style) styles)
   "J"
   "M"
   "none"
   pt
   (read *height)
   ""
   *text
  )
  (setvar "clayer" clayer)
  (command "erase" el "")
  (command "._undo" "end")
)
)
  )
  (setvar "cmdecho" cmdecho)
  (princ)
)


(defun c:tbl ()
  (c:textbreakline)
)
(princ)

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

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

GMT+8, 2024-4-30 16:16 , Processed in 0.239311 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部