乐筑天下

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

[编程交流] 是否在没有选项的情况下对齐文本?

[复制链接]

88

主题

346

帖子

281

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
423
发表于 2022-7-6 14:35:05 | 显示全部楼层 |阅读模式
我有几个不同的例程可以将理由更改为任何
Autocad中可用的对齐方式。每一个都相当冗长。
我要找的是一个简单的例程来选择我的文本,并让它更改为左中心。
没有选项,没有用户输入。
 
选择对象
进来
进来
完成!
 
有谁有这样简单的例行公事吗?或者你能给我指一个吗?
 
你们太棒了!
TIA!
回复

使用道具 举报

0

主题

132

帖子

198

银币

限制会员

铜币
-21
发表于 2022-7-6 14:41:11 | 显示全部楼层
这是我下载过的一个旧的。。。
  1. (defun c:tj (/ j e p11 p10 f en plin p10n fn y)
  2.    (setq j (getstring "\nLeft/Center/Middle/Right  "))
  3.    (setq j (strcase j))
  4.    (setq e (entget (car (entsel))))
  5.    (setq p11 (assoc 11 e))
  6.    (setq p10 (assoc 10 e))
  7.    (setq f (assoc 72 e))
  8.    (setq en e)
  9.    (if (= (cdr f) 0) (setq plin (cons 11 (cdr p10))))
  10.    (if (= (cdr f) 0) (setq en (subst plin p11 en)))
  11.    (if (and (= j "L") (/= (cdr f) 0))
  12.        (progn
  13.            (setq p10 (cons 10 (cdr p11)))
  14.            (setq en (subst p1on p10 en))
  15.        )
  16.    )
  17.    (IF (= J "L") (setq fn 0))
  18.    (IF (= J "C") (setq fn 1))
  19.    (IF (= J "M") (setq fn 4))
  20.    (IF (= J "R") (setq fn 2))
  21.    (setq fn (cons 72 fn))
  22.    (setq en (subst fn f en))
  23.    (entmod en)
  24.        (princ)
  25. )
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
423
发表于 2022-7-6 14:48:36 | 显示全部楼层
不,不是这样的。
我有一个,它没有解决
“更新”的理由。
我认为中间偏左等等。。同时使用(assoc 71和(assoc 72
 
当我开始CAD时,Autocad第9版刚刚推出。。。
所以中间偏左之类的在当时并不存在。。
 
我想如果我能确定组码是特定的
根据特定的理由,我可以修改上述代码
以适应。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 14:52:35 | 显示全部楼层
  1. (defun c:tjLeft(/ ss obj)
  2. (vl-load-com)
  3. (and
  4.    (setq ss (ssget "_+.:E:S" '((0 . "TEXT"))))
  5.    (setq obj (vlax-ename->vla-object (ssname ss 0)))
  6.    (vla-put-alignment obj acAlignmentLeft)
  7. )
  8. (princ)
  9. )
  10. ;|
  11. acAlignmentLeft
  12. acAlignmentCenter
  13. acAlignmentRight
  14. acAlignmentAligned
  15. acAlignmentMiddle
  16. acAlignmentFit
  17. acAlignmentTopLeft
  18. acAlignmentTopCenter
  19. acAlignmentTopRight
  20. acAlignmentMiddleLeft
  21. acAlignmentMiddleCenter
  22. acAlignmentMiddleRight
  23. acAlignmentBottomLeft
  24. acAlignmentBottomCenter
  25. acAlignmentBottomRight
  26. |;
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
423
发表于 2022-7-6 14:57:16 | 显示全部楼层
真 的!
你太不适合我了!!
非常感谢!!
 
很棒的编程知识!
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
423
发表于 2022-7-6 15:01:19 | 显示全部楼层
那么中心对齐的语法是什么?
我以为它只是在取代acAlignmentLeft
使用acAlignmentCenter,但这将我的文本移动到了0,0
 
非常感谢!
 
 
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 15:09:50 | 显示全部楼层
使用此例程获取对象属性:
  1. (defun c:dump (/ ent obj)
  2. (while (setq ent (entsel "\nSelect entity to get object data: "))
  3.    (setq obj (vlax-ename->vla-object (car ent)))
  4.    (vlax-dump-object obj t)
  5.    (vlax-release-object obj)
  6. )
  7. (princ)
  8. )

 
  1. Select object:
  2. #<VLA-OBJECT IAcadText 02ce832c>
  3. ; IAcadText: AutoCAD Text Interface
  4. ; Property values:
  5. ;   Alignment = 0
  6. ;   Application (RO) = #<VLA-OBJECT IAcadApplication 00ac8928>
  7. ;   Backward = 0
  8. ;   Color = 256
  9. ;   Document (RO) = #<VLA-OBJECT IAcadDocument 01b694bc>
  10. ;   Handle (RO) = "A367"
  11. ;   HasExtensionDictionary (RO) = 0
  12. ;   Height = 5.0
  13. ;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 02cebb0c>
  14. ;   InsertionPoint = (1799.16 -194.612 0.0)
  15. ;   Layer = "POWER"
  16. ;   Linetype = "ByLayer"
  17. ;   LinetypeScale = 1.0
  18. ;   Lineweight = -1
  19. ;   Normal = (0.0 0.0 1.0)
  20. ;   ObjectID (RO) = 29887800
  21. ;   ObjectName (RO) = "AcDbText"
  22. ;   ObliqueAngle = 0.0
  23. ;   OwnerID (RO) = 29804560
  24. ;   PlotStyleName = "ByLayer"
  25. ;   Rotation = 0.0
  26. ;   ScaleFactor = 1.0
  27. ;   StyleName = "SIMPLEX 0"
  28. ;   TextAlignmentPoint = (0.0 0.0 0.0)
  29. ;   TextGenerationFlag = 0
  30. ;   TextString = "this is a"
  31. ;   Thickness = 0.0
  32. ;   UpsideDown = 0
  33. ;   Visible = -1

 
看看这是不是你想要的:
 
  1. (defun c:tjc(/ ss obj)
  2. (vl-load-com)
  3. (if
  4.    (and
  5.      (setq ss (ssget "_+.:E:S" '((0 . "TEXT"))))
  6.      (setq obj (vlax-ename->vla-object (ssname ss 0)))
  7.      (setq ipt (vla-get-InsertionPoint obj)))
  8.    (progn
  9.      (vla-put-alignment obj acAlignmentCenter)
  10.      (vla-put-TextAlignmentPoint obj ipt)
  11.    )
  12. )
  13. (princ)
  14. )
  15. ;|
  16. acAlignmentLeft
  17. acAlignmentCenter
  18. acAlignmentRight
  19. acAlignmentAligned
  20. acAlignmentMiddle
  21. acAlignmentFit
  22. acAlignmentTopLeft
  23. acAlignmentTopCenter
  24. acAlignmentTopRight
  25. acAlignmentMiddleLeft
  26. acAlignmentMiddleCenter
  27. acAlignmentMiddleRight
  28. acAlignmentBottomLeft
  29. acAlignmentBottomCenter
  30. acAlignmentBottomRight
  31. |;
回复

使用道具 举报

2

主题

8

帖子

6

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 15:10:57 | 显示全部楼层
对不起,我对autoCAD中的编程了解不多。有人能告诉我如何安装这个吗?我正在使用land desktop 06
回复

使用道具 举报

13

主题

90

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 15:17:42 | 显示全部楼层
 
将其添加到ACAD。LSP文件
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 15:22:16 | 显示全部楼层
复制代码,确保您获得了代码的最后一行,有时会错过这一行。
将其像记事本一样粘贴到文本编辑器中。
保存到你的ACAD文件夹,我有一个子文件夹名为LISP,我保存到。
在命令行中使用APPLOAD
导航到刚刚保存的文件并将其加载或添加到要为每个DWG加载的启动套件中。
请注意,load将仅为当前DWG安装例程&仅适用于此会话。
 
查看lisp文件中的(defun)
上面的那个有这个
  1. (defun c:tjc(/ ss obj)

c: 意味着您可以通过键入tjc从命令行运行它
如果c:像这样丢失了
  1. (defun tjc(/ ss obj)

您需要输入(tjc)来运行它。
 
任何人看到我遗漏的东西请插话。
 
HTH公司
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:08 , Processed in 0.482886 second(s), 83 queries .

© 2020-2025 乐筑天下

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