MJLM 发表于 2022-7-5 18:05:05

文本风中的文本对齐

我有这个问题。我有一些文本需要对齐。我不是在谈论模型中的文本,我只是在谈论文本窗口中打印的文本(通过提示命令)。我很难把它对齐。请看以下内容
 
https://www.cadtutor.net/forum/attachment.php?attachmentid=56890&cid=1&stc=1
 
我想让脚对齐的结果。我正在使用下面的命令来打印文本。
 

(prompt (strcat "Minimum vertical change:      " (rtos minz 2 2) " m\t(" (rtos (m2ft minz) 2 2) " ft)\n"))
(prompt (strcat "Maximum vertical change:      " (rtos maxz 2 2) " m\t(" (rtos (m2ft maxz) 2 2) " ft)\n\n"))
(prompt (strcat "Highest elevation of system:    " (rtos highz 2 2) " m\t(" (rtos (m2ft highz) 2 2) " ft)\n"))
(prompt (strcat "Minimum elevation of system:    " (rtos lowz 2 2) " m\t(" (rtos (m2ft lowz) 2 2) " ft)\n\n"))
我的印象是开关将在同一路线下调整所有线路。但是,不管我在一行中使用了多少个t,所有的t都被同等地推到了未对齐的位置。我是否错过了一些简单/基本的东西,或者我需要用一些定制的代码来详细说明这一点?
 
非常感谢。

Tharwat 发表于 2022-7-5 18:15:07

你好
 
如果您编写一个自定义函数来扣除两个字符串中的字符长度,例如(0.25m和(0.82英尺)),然后在两个文本字符串之间添加空格,这将是一个很好的演示。

Tharwat 发表于 2022-7-5 18:24:28

例如:
 

(defun _Add:gaps (st1 st2 len / st)
;;    Tharwat 06.02.2016    ;;
(repeat (- len (+ (strlen st1) (strlen st2)))
   (setq st (cons (chr 32) st))
)
(strcat st1 (apply 'strcat st) st2)
)
 
功能的使用:

(_Add:gaps (rtos minz 2 2) (strcat (rtos (m2ft minz) 2 2) " ft") 20)

MJLM 发表于 2022-7-5 18:26:36

是的,我知道,但我觉得很无聊
我觉得有些事情很简单。例如,在MC Word中,这不会发生。
 
无论如何,谢谢。

Tharwat 发表于 2022-7-5 18:32:59

我猜你在回复我的第一个回复时没有看到代码。
 
无论如何,如果你想让第二个值对齐,这里还有一个
 
注意:保持长度数字静态,因为这是函数的秘密。
 

(defun _Add:gaps (st1 st2 len / st)
;;    Tharwat 06.02.2016    ;;
(repeat (- len (strlen st1))
   (setq st (cons (chr 32) st))
   )
(strcat st1 (apply 'strcat st) st2)
)

MJLM 发表于 2022-7-5 18:42:10

非常感谢。它工作得很好。

David Bethel 发表于 2022-7-5 18:51:23

标签字符一直是片状的
 
请尝试以下代码:

(textpage)
(princ "\n1\t234567890")
(princ "\n12\t34567890")
(princ "\n123\t4567890")
(princ "\n1234\t567890")
(princ "\n12345\t67890")
(princ "\n123456\t7890")
(princ "\n1234567\t890")
(princ "\n12345678\t90")
(princ "\n123456789\t0")

 
所附图像来自使用相同代码的各种ACAD版本。
 
R12->2012年

Tharwat 发表于 2022-7-5 18:55:57

不客气。

BIGAL 发表于 2022-7-5 19:03:51

我的Davids版本于2013年测试,旁注DCL怎么样?关于制表符停止,需要考虑的是8个字符宽,因此,如果您有9个字符宽的文本,您可能需要根据第二个代码示例。

(Alert (strcat "\n1\t234567890"
"\n12\t34567890"
"\n123\t4567890"
"\n1234\t567890"
"\n12345\t67890"
"\n123456\t7890"
"\n1234567\t890"
"\n12345678\t90"
"\n123456789\t0")
)

 

(Alert (strcat "\n1\t234567890"
"\n12\t\t34567890"
"\n123\t\t4567890"
"\n1234\t\t567890"
"\n12345\t\t\t\t67890"
"\n123456\t\t\t\t7890"
"\n1234567\t\t\t\t890"
"\n12345678\t\t\t\t\t\t90"
"\n123456789\t\t\t0")
)


BIGAL 发表于 2022-7-5 19:10:36

好的,我玩了一个游戏,找到了我的想法。看看这个,你可以看到最后一行的0.0被推到了上面。你有1个字符,所以点击一个标签点,试试“Min.”或“Elev”
 

(alert (strcat "Minimum vertical change:      " "0.25 m " "\t" (chr 40) "0.82 ft" (chr 41)
"\nMaximum vertical change:      " "5.00 m" "\t" (chr 40) "16.4 ft" (chr 41)
"\n\n"
"\nHighest elevation of system:    " "6.00 m" "\t" (CHR 40) "19.69 ft" (chr 41)
"\nMinimum elevation of system:    " "0.0" "\t" (chr 40) "0.00 ft" (chr 41)
)

页: [1]
查看完整版本: 文本风中的文本对齐