TPG辉 发表于 2020-1-10 22:56:41

请教单行文字对齐

本帖最后由 TPG辉 于 2020-1-13 08:07 编辑


[*]t1 '("序号" "尺寸" "个数" "数量")
[*]t2 '("T1" "36" "633" "63")
[*]t3 '("T2" "8544" "52" "635")


请问怎么把上面的三个表,输出整行单行文字,右对齐






sharetow 发表于 2020-1-13 15:05:39

TPG辉 发表于 2020-1-13 14:57
这样才对

(defun c:xx(/ gd1 gd2 pt)
(setq gd1 '("T1" "525" "635" ))
(setq gd2 '("T10" "44564" "63555"))
(setq pt (getpoint "\n->统计数据报表左上插入点:"))
(LL:Txtbx pt gd1 20)
(setq pt (polar pt (- 0 (/ pi 2)) 5))
(LL:Txtbx pt gd2 20)
)
(defun LL:Txtbx(lt1 lt2 lt3 / i t1)
(setq i 0)
(repeat (length lt2)
    (setq t1 (polar lt1 0 (* lt3 i)))
    (entmake (list
               '(0 . "TEXT")
               (cons 1 (nth i lt2))
               (cons 7 "Standard")
               (cons 8 "dim")
               '(10 0 0 0)
               (cons 11 t1)
               (cons 40 (* lt3 0.15))
               (cons 41 0.75)
               (cons 50 0)
               (cons 72 2)
               (cons 73 1)
               '(100 . "AcDbText")
             )
    )
    (setq i (1+ i))
)
)

mokson 发表于 2020-1-13 08:14:24

只有lisp高手才做到得到了。

sharetow 发表于 2020-1-13 09:13:13

写个点位的表
(foreach x t1
(entmake (list
             '(0 . "TEXT")
             (cons 1 x)
             (cons 11 点位)
         )
)
)

TPG辉 发表于 2020-1-13 11:39:03

sharetow 发表于 2020-1-13 09:13
写个点位的表

(defun c:xx(/ gd gd1 gd2 po pt)
        (setq gd1 '("T1" "525" "635" ))
        (setq gd2 '("T10" "44564" "63555"))
        (setq gd (append gd1 gd2))
        (setq sb (length gd))
        (setq pt (getpoint "\n->统计数据报表左上插入点:"))
        (setq po (XD::Pnts:Matrix pt sb 3 5 5))
        (foreach x gd
                (entmake (list
                                                       '(0 . "TEXT")
                                                       (cons 1 x)
                                                       (cons 11 po)
                                               )
                )
                (setq po (polar po *x-pi15* 4.26))
        )
)

(defun XD::Pnts:Matrix (basepnt rows cols rowgap colgap / j rowpts pts)
(repeat rows
    (setq j -1)
    (setq rowpts nil)
    (setq basepnt
                        (polar basepnt (- (/ pi 2.0)) rowgap)
    )
    (repeat cols
      (setq
      rowpts (cons (polar basepnt 0.0 (* colgap (setq j (1+ j))))
                                                               rowpts
               )
      )
    )
    (setq pts (cons (reverse rowpts) pts))
)
(reverse pts)
)

TPG辉 发表于 2020-1-13 11:53:15

sharetow 发表于 2020-1-13 09:13
写个点位的表

哪里错了吗?

sharetow 发表于 2020-1-13 14:50:23

TPG辉 发表于 2020-1-13 11:53
哪里错了吗?

你的这种需求,这样写可能运行快一点。
(defun c:xx(/ gd1 gd2 pt)
(setq gd1 '("T1" "525" "635" ))
(setq gd2 '("T10" "44564" "63555"))
(setq pt (getpoint "\n->统计数据报表左上插入点:"))
(LL:Txtbx pt gd1 5)
(setq pt (polar pt 0 20))
(LL:Txtbx pt gd2 5)
)

(defun LL:Txtbx(lt1 lt2 lt3 / i t1)
(setq i 0)
(repeat (length lt2)
    (setq t1 (polar lt1 (- 0 (/ pi 2)) (* lt3 i)))
    (entmake (list
               '(0 . "TEXT")
               (cons 1 (nth i lt2))
               (cons 7 "Standard")
               (cons 8 "dim")
               '(10 0 0 0)
               (cons 11 t1)
               (cons 40 (* lt3 0.75))
               (cons 41 0.75)
               (cons 50 0)
               (cons 72 2)
               (cons 73 1)
               '(100 . "AcDbText")
             )
    )
    (setq i (1+ i))
)
)

TPG辉 发表于 2020-1-13 14:57:25

sharetow 发表于 2020-1-13 14:50
你的这种需求,这样写可能运行快一点。


这样才对

页: [1]
查看完整版本: 请教单行文字对齐