乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 62|回复: 11

[编程交流] 文本对齐方式

[复制链接]

28

主题

95

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 18:10:54 | 显示全部楼层 |阅读模式
大家好,
 
我想知道是否有人可以帮助编辑lee macs align text lisp,使文本对齐时不会改变文本在“y”方向的位置。当我运行这个程序时,它会将所有文本在x方向上移动以对齐,这很好,但它也会将文本在y方向上移动,因此它们的间距都是相等的。如果有人能让我知道如何防止文本向y方向移动,那太好了
 
希望它最终看起来像下面的最后一张图片,而不是第二张。我还附上了lisp文件的副本
 
(或者,如果有人能给我指出一个不同的lisp文件,可以实现我所描述的功能,那也太好了!)
 
编辑-忘了说谢谢李mac在第一时间创造了这个!李-麦克Lisp程序很厉害。干得好
191056b0ij1dfci1ksm10m.jpg
191057y1ya7ieni3xya2z1.jpg
191058wvwsg2gki3hw0koz.jpg
对齐文本V1-3。lsp
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 18:18:30 | 显示全部楼层
为什么不直接使用JUSTIFYTEXT?
回复

使用道具 举报

28

主题

95

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 18:24:52 | 显示全部楼层
因为除非我遗漏了什么,否则这实际上不会对齐文本,是吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:31:29 | 显示全部楼层
请尝试以下操作:
  1. ;;--------------------=={ Align Text }==----------------------;;
  2. ;;                                                            ;;
  3. ;;  This program enables the user to reposition a selection   ;;
  4. ;;  of text objects equispaced by a factor of the text height ;;
  5. ;;  and aligned in a direction perpendicular to the rotation  ;;
  6. ;;  angle of the text.                                        ;;
  7. ;;                                                            ;;
  8. ;;  The program assumes all text objects in the selection     ;;
  9. ;;  have the same rotation and will align each text object    ;;
  10. ;;  using its Text Alignment Point.                           ;;
  11. ;;                                                            ;;
  12. ;;  The program will perform successfully with text           ;;
  13. ;;  constructed in any UCS plane.                             ;;
  14. ;;------------------------------------------------------------;;
  15. ;;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;
  16. ;;------------------------------------------------------------;;
  17. ;;  Version 1.3    -    23-04-2013                            ;;
  18. ;;------------------------------------------------------------;;
  19. ;;  Modified to retain vertical spacing - LM 2016-01-15       ;;
  20. ;;------------------------------------------------------------;;
  21. (defun c:at ( / *error* ang bpt enx inc ins lst ocs sel vc1 vc2 )
  22.    (defun *error* ( msg )
  23.        (LM:endundo (LM:acdoc))
  24.        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  25.            (princ (strcat "\nError: " msg))
  26.        )
  27.        (princ)
  28.    )
  29.    (if (setq sel (ssget "_:L" '((0 . "TEXT"))))
  30.        (progn
  31.            (setq inc (sslength sel)
  32.                  enx (entget (ssname sel (1- inc)))
  33.                  ang (cdr (assoc 50 enx))
  34.                  ocs (trans '(0.0 0.0 1.0) 1 0 t)
  35.                  vc1 (trans (list    (cos ang)  (sin ang)) ocs 0)
  36.                  vc2 (trans (list (- (sin ang)) (cos ang)) ocs 0)
  37.            )
  38.            (repeat inc
  39.                (setq enx (entget (ssname sel (setq inc (1- inc))))
  40.                      lst (cons (list  (trans (aligntext:gettextinsertion enx) (cdr (assoc -1 enx)) 0) enx) lst)
  41.                      ins (cons (caddr (trans (caar lst) 0 vc2)) ins)
  42.                )
  43.            )
  44.            (setq lst (mapcar '(lambda ( n ) (nth n lst)) (vl-sort-i ins '>))
  45.                  bpt (caddr (trans (caar lst) 0 vc1))
  46.            )
  47.            (LM:startundo (LM:acdoc))
  48.            (foreach  itm (cdr lst)
  49.                (setq ins (trans (car itm) 0 vc1))
  50.                (aligntext:puttextinsertion
  51.                    (trans (list (car ins) (cadr ins) bpt) vc1 (cdr (assoc -1 (cadr itm))))
  52.                    (cadr itm)
  53.                )
  54.            )
  55.            (LM:endundo (LM:acdoc))
  56.        )
  57.    )
  58.    (princ)
  59. )
  60. (defun aligntext:getdxfkey ( enx )
  61.    (if
  62.        (and
  63.            (zerop (cdr (assoc 72 enx)))
  64.            (zerop (cdr (assoc 73 enx)))
  65.        )
  66.        10 11
  67.    )
  68. )
  69. (defun aligntext:gettextinsertion ( enx )
  70.    (cdr (assoc (aligntext:getdxfkey enx) enx))
  71. )
  72. (defun aligntext:puttextinsertion ( ins enx )
  73.    (   (lambda ( key )
  74.            (if (entmod (subst (cons key ins) (assoc key enx) enx))
  75.                (entupd (cdr (assoc -1 enx)))
  76.            )
  77.        )
  78.        (aligntext:getdxfkey enx)
  79.    )
  80. )
  81. ;; Start Undo  -  Lee Mac
  82. ;; Opens an Undo Group.
  83. (defun LM:startundo ( doc )
  84.    (LM:endundo doc)
  85.    (vla-startundomark doc)
  86. )
  87. ;; End Undo  -  Lee Mac
  88. ;; Closes an Undo Group.
  89. (defun LM:endundo ( doc )
  90.    (while (= 8 (logand 8 (getvar 'undoctl)))
  91.        (vla-endundomark doc)
  92.    )
  93. )
  94. ;; Active Document  -  Lee Mac
  95. ;; Returns the VLA Active Document Object
  96. (defun LM:acdoc nil
  97.    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  98.    (LM:acdoc)
  99. )
  100. (vl-load-com) (princ)
  101. ;;------------------------------------------------------------;;
  102. ;;                         End of File                        ;;
  103. ;;------------------------------------------------------------;;

 
我很高兴你发现这个程序很有用!
回复

使用道具 举报

28

主题

95

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 18:37:58 | 显示全部楼层
哦,哇。太棒了
星期一我第一件事就回来工作时,我会检查一下,然后告诉你进展如何。
非常感谢您的调查
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:41:21 | 显示全部楼层
不客气-我也会在我的网站上更新程序,将其作为一个选项。
 
您(和其他人)是否认为应该提示用户输入行距系数,并选择保留现有间距作为默认值?例如。:
  1. Specify line spacing factor <use existing spacing>:

或者这应该由硬编码到程序中的参数控制,用户可以将该参数设置为零以保留现有间距?
回复

使用道具 举报

37

主题

264

帖子

236

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
185
发表于 2022-7-5 18:47:49 | 显示全部楼层
认为让用户决定的功能将在以后保存您的请求。我更喜欢那样。
回复

使用道具 举报

28

主题

95

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 18:54:14 | 显示全部楼层
就我个人而言,我不认为我真的需要使用垂直间距。我主要是在追求它,所以我可以使绘图更整洁,不需要花太多时间。如果改变垂直间距,那么我认为需要长时间调整所有引线。如果领导者只需要水平拉伸,那么只需几秒钟即可完成。一旦音符垂直移动,那么显然,引线端需要垂直和水平移动
 
如果你看这些图像,你可以想象如果这些音符也垂直移动,那么需要更多的时间/精力来修复所有的引线,使它们再次与音符相遇。
 
另外,我认为我的文字的垂直位置通常是正确的。我不想让一张纸条把reo的名字写在计划的底部,结果却被直接移到了顶部。这真的没有道理。。在相同的垂直间距下,音符似乎可以混合成一个巨大的音符,所以不同的间距使它更容易阅读
 
我也很高兴把它作为一种选择。我只是想解释一下如何使用它
191059iojsog4s0eo6jfs9.jpg
191100mltnqlnb54b63y5u.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:56:37 | 显示全部楼层
谢谢你们的反馈,非常感谢。
 
@masterfal,如果要在图形中使用多重引线,则可以使用标准的多重引线对齐命令对齐这些引线。尽管如此,我很高兴听到您发现我的对齐文本程序很有用,并且修改后的程序在您的图形中运行良好。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:03:02 | 显示全部楼层
我现在已经根据这个帖子的反馈和建议更新了我的对齐文本程序。
 
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:48 , Processed in 0.373957 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表