马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
可将文字和图块与选定直线对齐,M键可以180°旋转。可不可以给加一分?搞这个东西可不容易啊!

- [FONT=courier new]
- ;;; This program will match text angle to a line angle selected
- ;;;--------------------------------------------------------------------
- (defun c:ta ( / ang1 ang2 bob enttyp enttyp2 getit l1 nang oang oangprt p1 p2 sl st time time2 tx1 wait wait2 why x1 x2 )
- (setvar "cmdecho" 1)
- ;finds the angle of the line
- (setq wait "T")
- (while wait
- (setq time "T")
- (while time
- (setq sl (entsel "\n Pick Angle To Match:"))
- (if (/= sl nil)(setq time nil))
- )
- (setq l1 (entget (car sl)))
- (setq enttyp (cdr (assoc 0 l1)))
- (if (= enttyp "LINE")(setq wait nil))
- )
- (setq p1 (cdr (assoc 10 l1)))
- (setq x1 (car p1))
- (setq p2 (cdr (assoc 11 l1)))
- (setq x2 (car p2))
- (setq why (angle p1 p2))
- (if (>= why 0)
- (setq ang1 why)
- )
- (if (> why 1.5708);same as 90?
- (setq ang1 (+ 3.14159 why));add 180?
- )
- (if (>= why 4.71413);same as 270.1?
- (setq ang1 why)
- )
- ;finds angle of txt
- (setq wait2 "T")
- (while wait2
- (setq time2 "T")
- (while time2
- (setq st (entsel "\n Pick Text Or Block To Change:"))
- (if (/= st nil)(setq time2 nil))
- )
- (setq tx1 (entget (car st)))
- (setq enttyp2 (cdr (assoc 0 tx1)))
- (if (or(= enttyp2 "TEXT")(= enttyp2 "INSERT")(= enttyp2 "ATTDEF"))(setq wait2 nil))
- )
- (setq ang2 (cdr (assoc 50 tx1)))
- (setq oang (cons 50 ang2))
- (setq nang (cons 50 ang1))
- (setq tx1 (subst nang oang tx1))
- (entmod tx1)
- (terpri)
- (setq bob "T")
- (while bob
- (initget 6 "M m")
- (setq getit (getkword "\n Press M to rotate 180?or to quit "))
- (if (or (= getit "m") (= getit "M"))
- (progn
- (setq oang (assoc 50 tx1))
- (setq oangprt (cdr oang))
- (setq nang (cons 50 (+ 3.14159 oangprt)))
- (setq tx1 (subst nang oang tx1))
- (entmod tx1)
- )
- (setq bob nil)
- )
- )
- (setvar "cmdecho" 0)
- (princ)
- )
- [/FONT]
|