找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 190|回复: 0

[讨论] 仿JUSTIFYTEXT

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-4-1 20:29:05 | 显示全部楼层 |阅读模式
  1. ;; [功能] 获取两点的中点坐标
  2. (defun MJ:MIDPOINT (P1 P2)
  3.   (mapcar '(lambda (X Y) (* (+ X Y) 0.5)) P1 P2)
  4. )
  5. (defun C:t1 (/ KEY SS)
  6.   (setq ss (ssget '((0 . "TEXT"))))
  7.   (initget "L A F C M R TL TC TR ML MC MR BL BC BR ")
  8.   (setq        key
  9.          (getkword
  10.            "\n[左对齐(L)/对齐(A)/布满(F)/居中(C)/中间(M)/右对齐(R)/左上(TL)/中上(TC)/右上(TR)/左中(ML)/正中(MC)/右中(MR)/左下(BL)/中下(BC)/右下(BR)] <正中(MC)>:"
  11.          )
  12.   )
  13.   (if (not key)
  14.     (setq key "MC")
  15.   )
  16.   (MY-JUSTIFYTEXT ss key)
  17.   (princ)
  18. )
  19. (DEFUN MY-JUSTIFYTEXT(ss key / E EN N P P10 PTS)
  20.   (repeat (setq n (sslength ss))
  21.     (setq e (ssname ss (setq n (1- n))))
  22.     (setq en (entget e))
  23.     (setq p10(cdr (assoc 10 en)))
  24.     (setq pts (textbox en))
  25.     (setq p (apply 'MJ:MIDPOINT pts))
  26.     (cond
  27.       ((= key "L");左对齐
  28.        (entmod (append en
  29.                        (list (cons 10 p10)
  30.                              '(71 . 0)
  31.                              '(72 . 0)
  32.                              '(11 0 0)
  33.                              '(73 . 0)
  34.                        )
  35.                )
  36.        )
  37.       )
  38.       ((= key "A");/对齐
  39.        (entmod (append en
  40.                          (list (cons 10 p10)
  41.                                '(71 . 0)
  42.                                '(72 . 3)
  43.                                (list 11 (+ (car p10) (caadr pts)) (cadr p10))
  44.                                '(73 . 0)
  45.                          )
  46.                  )
  47.          )
  48.       )
  49.       ((= key "F");/布满
  50.        (entmod (append en
  51.                          (list (cons 10 p10)
  52.                                '(71 . 0)
  53.                                '(72 . 5)
  54.                                (list 11 (+ (car p10) (caadr pts)) (cadr p10))
  55.                                '(73 . 0)
  56.                          )
  57.                  )
  58.          )
  59.       )
  60.       ((= key "C");居中
  61.        (entmod (append en
  62.                          (list (cons 10 p10)
  63.                                '(71 . 0)
  64.                                '(72 . 1)
  65.                                (list 11 (+ (car p10) (car p)) (cadr p10))
  66.                                '(73 . 0)
  67.                          )
  68.                  )
  69.          )
  70.       )
  71.       ((= key "M");/中间
  72.        (entmod (append en
  73.                        (list (cons 10 p10)
  74.                              '(71 . 0)
  75.                              '(72 . 4)
  76.                              (cons 11 (mapcar '+ p p10))
  77.                              '(73 . 0)
  78.                        )
  79.                )
  80.        )
  81.       )
  82.       ((= key "R");右对齐(R)
  83.        (entmod (append en
  84.                          (list (cons 10 p10)
  85.                                '(71 . 0)
  86.                                '(72 . 2)
  87.                                (list 11 (+ (car p10) (caadr pts)) (cadr p10))
  88.                                '(73 . 0)
  89.                          )
  90.                  )
  91.          )
  92.       )
  93.       ((= key "TL");/左上
  94.        (entmod (append en
  95.                        (list (cons 10 p10)
  96.                              '(71 . 0)
  97.                              '(72 . 0)
  98.                              (list 11 (car p10) (+ (cadr p10) (cadadr pts)))
  99.                              '(73 . 3)
  100.                        )
  101.                )
  102.        )
  103.       )
  104.       ((= key "TC");/中上
  105.        (entmod (append en
  106.                        (list (cons 10 p10)
  107.                              '(71 . 0)
  108.                              '(72 . 1)
  109.                              (list 11 (+ (car p10) (car p)) (+ (cadr p10) (cadadr pts)))
  110.                              '(73 . 3)
  111.                        )
  112.                )
  113.        )
  114.       )
  115.       ((= key "TR");/右上
  116.        (entmod (append en
  117.                        (list (cons 10 p10)
  118.                              '(71 . 0)
  119.                              '(72 . 2)
  120.                              (list 11 (+ (car p10) (caadr pts)) (+ (cadr p10) (cadadr pts)))
  121.                              '(73 . 3)
  122.                        )
  123.                )
  124.        )
  125.       )
  126.       ((= key "ML");/左中
  127.        (entmod (append en
  128.                        (list (cons 10 p10)
  129.                              '(71 . 0)
  130.                              '(72 . 0)
  131.                              (list 11 (car p10) (+ (cadr p10) (cadr p)))
  132.                              '(73 . 2)
  133.                        )
  134.                )
  135.        )
  136.       )
  137.       ((= key "MC");/正中
  138.        (entmod (append en
  139.                        (list (cons 10 p10)
  140.                              '(71 . 0)
  141.                              '(72 . 1)
  142.                              (cons 11 (mapcar '+ p10 p))
  143.                              '(73 . 2)
  144.                        )
  145.                )
  146.        )
  147.       )
  148.       ((= key "MR");/右中
  149.        (entmod (append en
  150.                        (list (cons 10 p10)
  151.                              '(71 . 0)
  152.                              '(72 . 2)
  153.                              (list 11 (+ (car p10) (caadr pts)) (+ (cadr p10) (cadr p)))
  154.                              '(73 . 2)
  155.                        )
  156.                )
  157.        )
  158.       )
  159.       ((= key "BL");/左下
  160.        (entmod (append en
  161.                        (list (cons 10 p10)
  162.                              '(71 . 0)
  163.                              '(72 . 0)
  164.                              (cons 11 p10)
  165.                              '(73 . 1)
  166.                        )
  167.                )
  168.        )
  169.       )
  170.       ((= key "BC");/中下
  171.        (entmod (append en
  172.                        (list (cons 10 p10)
  173.                              '(71 . 0)
  174.                              '(72 . 1)
  175.                              (list 11 (+ (car p10) (car p)) (cadr p10))
  176.                              '(73 . 1)
  177.                        )
  178.                )
  179.        )
  180.       )
  181.       ((= key "BR");右下
  182.        (entmod (append en
  183.                        (list (cons 10 p10)
  184.                              '(71 . 0)
  185.                              '(72 . 2)
  186.                              (list 11 (+ (car p10) (caadr pts)) (cadr p10))
  187.                              '(73 . 1)
  188.                        )
  189.                )
  190.        )
  191.       )
  192.     )
  193.   )
  194. )
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 17:42 , Processed in 0.116478 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表