1. (defun c:TTS(/ e1 e1_data gr isright n osm p0 p1 p2 p3 p4 p5 p6 p7 p8 pplst ptlst ss t1 t1_data tstr)
    2. (setvar "cmdecho" 0)
    3. (setq osm (getvar "osmode"))
    4. (setvar "osmode" 0)
    5. (setq p0 (cadr (grread T 15 0)) isright T ss (ssadd))
    6. (setq ptlst
    7. (list
    8. (setq p1 (polar p0 pi 4.7))
    9. (setq p2 (polar p1 (* pi 0.5) 2.5))
    10. (setq p3 (polar p2 0 7.0))
    11. (setq p4 (polar p3 (* pi 0.5) 1.5))
    12. (setq p5 (list (+ (car p4) 4) (- (cadr p4) 4) (caddr p4)))
    13. (setq p6 (list (- (car p5) 4) (- (cadr p5) 4) (caddr p5)))
    14. (setq p7 (polar p6 (* pi 0.5) 1.5))
    15. (setq p8 (polar p7 pi 7))
    16. )
    17. )
    18. (if (setq tstr (getint "\n请输入页面号:"))
    19. (progn
    20. (setq t1_data (entget (setq t1 (entmakex (list '(0 . "TEXT") (cons 10 p0) (cons 11 p0) (cons 1 (strcat "第" (rtos tstr) "页")) (cons 40 3.5) '(62 . 2) '(41 . 0.8) '(72 . 4) '(73 . 0))))))
    21. (setq e1_data (entget (setq e1 (entmakex (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(62 . 2) (cons 90 (length ptlst)) (cons 70 1)) (mapcar '(lambda(x) (cons 10 x)) ptlst))))))
    22. (princ "\n请指定插入点")
    23. (while (and (setq gr (grread T 15 0)) (or (= (car gr) 5) (= (car gr) 2) (= (car gr) 11) (= (car gr) 25)))
    24. (if (equal gr '(2 32)) (if isright (setq isright nil) (setq isright T)))
    25. (if (and (/= (car gr) 11) (/= (car gr) 25) (/= (car gr) 2))
    26. (progn
    27. (setq p0 (cadr gr))
    28. (if isright
    29. (setq ptlst
    30. (list
    31. (setq p1 (polar p0 PI 4.7))
    32. (setq p2 (polar p1 (* pi 0.5) 2.5))
    33. (setq p3 (polar p2 0 7.0))
    34. (setq p4 (polar p3 (* pi 0.5) 1.5))
    35. (setq p5 (list (+ (car p4) 4) (- (cadr p4) 4) (caddr p4)))
    36. (setq p6 (list (- (car p5) 4) (- (cadr p5) 4) (caddr p5)))
    37. (setq p7 (polar p6 (* pi 0.5) 1.5))
    38. (setq p8 (polar p7 pi 7))
    39. )
    40. )
    41. (setq ptlst
    42. (list
    43. (setq p1 (polar p0 0 4.7))
    44. (setq p2 (polar p1 (* pi 0.5) 2.5))
    45. (setq p3 (polar p2 pi 7.0))
    46. (setq p4 (polar p3 (* pi 0.5) 1.5))
    47. (setq p5 (list (- (car p4) 4) (- (cadr p4) 4) (caddr p4)))
    48. (setq p6 (list (+ (car p5) 4) (- (cadr p5) 4) (caddr p5)))
    49. (setq p7 (polar p6 (* pi 0.5) 1.5))
    50. (setq p8 (polar p7 0 7))
    51. )
    52. )
    53. )
    54. (setq t1_data (subst (cons 10 p0) (assoc 10 t1_data) t1_data) t1_data (subst (cons 11 p0) (assoc 11 t1_data) t1_data))
    55. (setq pplst (mapcar '(lambda(x) (cons 10 x)) ptlst) n 0)
    56. (foreach x e1_data (if (= (car x) 10) (progn (setq e1_data (subst (nth n pplst) x e1_data)) (setq n (1+ n)))))
    57. (entmod t1_data)
    58. (entmod e1_data)
    59. )
    60. )
    61. )
    62. (ssadd t1 ss)
    63. (ssadd e1 ss)
    64. (command "-GROUP" "" "*" "" ss "")
    65. )
    66. )
    67. (setvar "osmode" osm)
    68. (prin1)
    69. )