文字平行被选直线
(defun C:TT (/ x y laa lin lab pt1 pt2 v1 slin ang tex name index nang oang b)(setvar "cmdecho" 0)
(while (= y nil)
(progn
(setq laa (entsel "\nselect the source obj. "
)
)
(if (/= laa nil)
(progn
(setq lin (entget (car laa)))
(setq x (cdr (assoc 0 lin)))
(setq y (or (= x "LWPOLYLINE")
(= x "LINE")
(= x "TEXT")
(= x "MTEXT")
)
)
) ;progn
(progn
(setq y 2)
(setq pt1 (getpoint ":\nspecify first point"))
(setq pt2 (getpoint pt1 ":\nspecify second point"))
(coang)
) ;progn
) ;if
) ;progn
) ;while
(cond ((= (cdr (assoc 0 lin)) "LWPOLYLINE")
(progn
(setq pt1 (cdr (assoc 10 lin)))
(setq v1 (cons 10 pt1))
(setq slin (cdr (member v1 lin)))
(setq pt2 (cdr (assoc 10 slin)))
(coang)
)
)
)
(cond ((= (cdr (assoc 0 lin)) "LINE")
(progn
(setq pt1 (cdr (assoc 10 lin)))
(setq pt2 (cdr (assoc 11 lin)))
(coang)
)
)
)
(cond ((= (cdr (assoc 0 lin)) "TEXT")
(progn
(setq ang (cdr (assoc 50 lin)))
)
)
)
(cond ((= (cdr (assoc 0 lin)) "MTEXT")
(progn
(setq ang (cdr (assoc 50 lin)))
)
)
)
(prompt "\nselect the words to be turned: ")
(while (= lab nil)
(setq lab (ssget
'((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>"))
)
)
) ;while
(setq index 0)
(setq n (sslength lab))
(repeat n
(setq name (ssname lab index))
(setq tex (entget name))
(setq index (+ index 1))
(setq nang (cons 50 ang))
(setq oang (assoc 50 tex))
(setq b (subst nang oang tex))
(entmod b)
)
(setvar "cmdecho" 1)
(princ)
)
;;
(defun coang ()
(setq ang (angle pt1 pt2))
(if (and (> ang (/ pi 2)) (<= ang (* pi 1.5)))
(progn
(setq ang (+ ang pi))
)
)
) 可以加点内容,运行块中曲线就更实用了。 黄大大,好牛逼,上源码 自贡黄明儒 发表于 2018-8-27 18:11
可以加点内容,运行块中曲线就更实用了。
可以再增加点内容吗 不仅仅是文字 图块 属性块 线 实体 等 都可以平行于被选的直线或者曲线 依然小小鸟 发表于 2018-8-27 22:14
可以再增加点内容吗 不仅仅是文字 图块 属性块 线 实体 等 都可以平行于被选的直线或者曲线
留给大神们来改进吧。:lol 用不了的呢 纵横八方 发表于 2018-8-28 12:30
用不了的呢
不会吧,先点线,再点文字就行了
哦 我先选的文字 怪不得 纵横八方 发表于 2018-8-28 14:11
哦 我先选的文字 怪不得
:handshake能用了就好 黄大大,好牛逼,上源码
页:
[1]
2