/fendou结构绘图 发表于 2018-8-27 17:52:07

文字平行被选直线

(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:05

可以加点内容,运行块中曲线就更实用了。

纵横八方 发表于 2018-8-27 18:50:38

黄大大,好牛逼,上源码

依然小小鸟 发表于 2018-8-27 22:14:35

自贡黄明儒 发表于 2018-8-27 18:11
可以加点内容,运行块中曲线就更实用了。

可以再增加点内容吗   不仅仅是文字 图块 属性块 线 实体 等 都可以平行于被选的直线或者曲线

/fendou结构绘图 发表于 2018-8-28 11:24:52

依然小小鸟 发表于 2018-8-27 22:14
可以再增加点内容吗   不仅仅是文字 图块 属性块 线 实体 等 都可以平行于被选的直线或者曲线

留给大神们来改进吧。:lol

纵横八方 发表于 2018-8-28 12:30:29

用不了的呢

/fendou结构绘图 发表于 2018-8-28 13:53:27

纵横八方 发表于 2018-8-28 12:30
用不了的呢

不会吧,先点线,再点文字就行了

纵横八方 发表于 2018-8-28 14:11:05

哦 我先选的文字 怪不得

/fendou结构绘图 发表于 2018-8-28 14:19:09

纵横八方 发表于 2018-8-28 14:11
哦 我先选的文字 怪不得

:handshake能用了就好

young-yi 发表于 2018-8-30 16:59:01

黄大大,好牛逼,上源码
页: [1] 2
查看完整版本: 文字平行被选直线