郭文姬happy 发表于 2014-12-15 10:28:59

怎样让其变成画一条多段线在它的中点注记长度


(defun c:2()
(setvar "cmdecho" 0)
(setq en(entsel"\n 选取多段线计算长度:"))
(while en
(setq en (car en))
(command "lengthen" en"")
(setq dd (getvar "perimeter"))
(princ (strcat "\n 长度="(rtos dd 2)))
(setq pt(getpoint "\n 文字位置点:"))
(setq old_hh(getvar "textsize"))
(setq str_hh(strcat"\n 高度<"(rtos old_hh 2)">:"))
(setq hh(getdist pt str_hh))
(if(null hh)(setq hh old_hh))
(command "text" pt hh 0(strcat "长度=" (rtos dd 2)))
(setq en (entsel"\n 选取多段线计算长度:"))
)
(prin1)
)

香田里浪人 发表于 2014-12-15 11:47:25

论坛里有了,是不是这样?
(defun c:tts (/ p q pt)
;(setvar'osmode 16384)
(setvar "cmdecho" 0)
(setvar "dimzin" 0);;保留小数位数时如果位数不足可以补零
(setq TextHeight (getdist "\n请输入文字高度: "))
(while (setq p (getpoint "\n指定起点: "))
(command "pline" "_non" p)
(while (setq q (getpoint p "\n下一点: ")
                     pt (mapcar '(lambda (x) (/ x 2)) (mapcar '+ p q)))
   (command "_non" q)
   (entmake
    (list
   '(0 . "TEXT")
   (cons 10 pt)
   (cons 40 1)
   (cons 1 (rtos (distance p q) 2 2))
   (cons 50 (if (< (/ Pi 2) (angle p q) (* 1.5 pi)) (angle q p) (angle p q)))
   (cons 8 "标注")
   (cons 7 "BG_ST")
   (cons 62 3)                        
   (cons 72 1)
   (cons 73 1)
   (cons 40 TextHeight)
   (cons 41 0.7)
   (cons 11 pt)
    )
   )
   (setq p q)
)
(command "")
)
;(setvar 'osmode (- (getvar osmode) 16384))
(setvar "cmdecho" 1)
(princ)
)

yoyoho 发表于 2014-12-15 19:27:59

感谢香田里浪人 分享程序!
页: [1]
查看完整版本: 怎样让其变成画一条多段线在它的中点注记长度