zilong136 发表于 2024-5-9 02:15:05

如何自定义对齐方式?

本帖最后由 zilong136 于 2024-5-10 02:34 编辑

我想做左对齐、中对齐、右对齐三种文字对齐方式,如何优化下列代码?不想每次重新设置。


[*];1【DQ1】文字对齐--TEXTALIGN
[*](defun c:dq1 ()
[*](prompt "\n dq1:文字左对齐--垂直") ;输出命令行显示
[*]    (setvar "cmdecho" 0) ;关闭CAD命令行显示
[*](command-s "TEXTALIGN" "O" "V") ;自定义命令
[*](command-s "TEXTALIGN" "I" "L") ;自定义命令
[*](setvar "cmdecho" 1) ;打开CAD命令行显示
[*](princ)
[*])
[*]
[*]
[*];2【DQ2】文字对齐--TEXTALIGN
[*](defun c:dq2 ()
[*](prompt "\n dq2:文字中对齐--垂直") ;输出命令行显示
[*]    (setvar "cmdecho" 0) ;关闭CAD命令行显示
[*](command-s "TEXTALIGN" "O" "V") ;自定义命令
[*](command-s "TEXTALIGN" "I" "C") ;自定义命令
[*](setvar "cmdecho" 1) ;打开CAD命令行显示
[*](princ)
[*])
[*]
[*];3【DQ3】文字对齐--TEXTALIGN
[*](defun c:dq3 ()
[*](prompt "\n dq3:文字右对齐--垂直") ;输出命令行显示
[*]    (setvar "cmdecho" 0) ;关闭CAD命令行显示
[*](command-s "TEXTALIGN" "O" "V") ;自定义命令
[*](command-s "TEXTALIGN" "I" "R") ;自定义命令
[*](setvar "cmdecho" 1) ;打开CAD命令行显示
[*](princ)
[*])


水平对齐列表改变不了系统上一次的选择,如何优化?

[*];10.5.7.3【hdq】文字对齐--水平
[*](defun c:hdq ()
[*]    (princ "\n hdq:文字对齐--水平")
[*](initget "L C R TL TC TR ML MC MR BL BCBR")
[*](setq align (getkword "\n[左对齐(L)/中对齐(C)/右对齐(R)/左上(TL)/中上(TC)/右上(TR)/左中(ML)/正中(MC)/右中(MR)/左下(BL)/中下(BC)/右下(BR)]"))
[*](cond
[*]   ((= align "L") (setq promptMsg "\n文字左对齐--水平"))
[*]   ((= align "C") (setq promptMsg "\n文字中对齐--水平"))
[*]   ((= align "R") (setq promptMsg "\n文字右对齐--水平"))
[*]    ((= align "TL") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "TC") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "TR") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "ML") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "MC") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "MR") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "BL") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "BC") (setq promptMsg "\n文字对齐--水平"))
[*]    ((= align "BR") (setq promptMsg "\n文字对齐--水平"))
[*])
[*](prompt promptMsg) ; 输出命令行显示
[*](setvar "cmdecho" 0) ; 关闭CAD命令行显示
[*](vl-cmdf "TEXTALIGN" "O" align) ; 自定义命令
[*](setvar "cmdecho" 1) ; 打开CAD命令行显示
[*](princ)
[*])

自贡黄明儒 发表于 2024-5-9 07:57:48

http://bbs.mjtd.com/thread-189766-1-1.html?_dsign=9c09c2a4

xkey 发表于 2024-5-9 11:36:39

有没有可能天正已经做好了?比如ALXLEFT、ALXMID、ALXRIGHT

zilong136 发表于 2024-5-9 11:41:04

自贡黄明儒 发表于 2024-5-9 07:57
http://bbs.mjtd.com/thread-189766-1-1.html?_dsign=9c09c2a4
我在使用JUSTIFYTEXT命令,选择对齐方式后,命令自动结束了,不知道什么情况。使用你的LSP也是一样情况。

zilong136 发表于 2024-5-9 11:43:31

xkey 发表于 2024-5-9 11:36
有没有可能天正已经做好了?比如ALXLEFT、ALXMID、ALXRIGHT

我要的是纯CAD环境

359321852 发表于 2024-5-9 21:03:26

(defun c:dq ()
      (initget "L C R ")
      (setq align (getkword "\n[左对齐(L)/中对齐(C)/右对齐(R)]"))
      (cond
          ((= align "L") (setq promptMsg "\n文字左对齐--垂直"))
          ((= align "C") (setq promptMsg "\n文字中对齐--垂直"))
          ((= align "R") (setq promptMsg "\n文字右对齐--垂直"))
          )
      (prompt promptMsg) ; 输出命令行显示
      (setvar "cmdecho" 0) ; 关闭CAD命令行显示
      (command-s "TEXTALIGN" "O" "V") ; 自定义命令
      (command-s "TEXTALIGN" "I" align) ; 自定义命令
      (setvar "cmdecho" 1) ; 打开CAD命令行显示
(princ)
)

zilong136 发表于 2024-5-10 01:45:41

本帖最后由 zilong136 于 2024-5-10 01:52 编辑

359321852 发表于 2024-5-9 21:03
要把这一行去掉(command-s "TEXTALIGN" "O" "V") ; 自定义命令
要不然你作的表不起作用,选择你那个表之后还要再一次进行选择才行。
页: [1]
查看完整版本: 如何自定义对齐方式?