乐筑天下

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

[编程交流] 多行文字->文字对齐Tw

[复制链接]

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 12:02:04 | 显示全部楼层 |阅读模式
我有一个例行程序,将文本对齐改为
中间居中。如果选中文本,则效果良好。
 
我们不能使用多行文字,所以如果一段多行文字
被选中时,它会将其分解。我不知道怎么继续
分解后的例程,而不是再次重新选择对象。
如果有人能帮我,我将不胜感激。
 
TIA!!
 
这是我的。。。
  1. (defun C:JMC (/ ss1 sslen index ent1 enttyp bspt1)
  2. (prompt "\nSet to Middle Center Justification . . .")
  3.    (setq ss1 (ssget))
  4.    (setq     sslen (sslength ss1)
  5.              index 0
  6.              tents 0
  7.    ) ; end setq
  8.    (repeat sslen
  9.        (setq     
  10.            ent1 (entget (ssname ss1 index))
  11.            enttyp (cdr (assoc 0 ent1))
  12.        ) ; end setq
  13. (if (= enttyp "MTEXT")
  14.       (progn
  15.         (Command "Explode" ss1)
  16.           (alert "Text was MTEXT! Rerun the command. ")
  17. ;I put this note just to help notify me..
  18. ;How do you select the text entities that made up the MTEXT group?
  19.       )
  20. )
  21.        (if (= enttyp "TEXT")
  22.            (progn
  23.                (setq bspt1 (cdr (assoc 10 ent1)))
  24.                (setq ent1 (subst (cons 11 bspt1) (assoc 11 ent1) ent1))
  25.                (entmod ent1)
  26.                (setq ent1 (subst (cons 72 1) (assoc 72 ent1) ent1))
  27.                (setq ent1 (subst (cons 73 2) (assoc 73 ent1) ent1))
  28.                (entmod ent1)
  29.                (setq tents (+ tents 1))
  30.            ) ; end progn
  31.        ) ; end if
  32.        (setq index (+ index 1))
  33.    ) ; end repeat
  34.    (princ)
  35. ) ; end defun
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 12:08:10 | 显示全部楼层
由于某种原因,我的所有格式都被我的帖子删除了。。
对不起!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:11:57 | 显示全部楼层
这对你有帮助吗?
 
http://www.cadtutor.net/forum/showthread.php?t=42438
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 12:13:29 | 显示全部楼层
李。。。
 
我以前也学过这些套路
我希望用其中的一些来满足其他需求。。
 
我的这个小程序是当用户
创建的文本不正确,我需要快速更改。
 
我真正想要的是一个常规
这不仅会将多行文字转换为文字,还会更改对齐方式
然后将文本居中放置在一个框中。我在慢慢地啄食
看看它。我有一些子程序最终完成了它,但即使这样,也有
我的定心程序中有几个错误。有时效果很好,但不起作用
有时根本没有。我无法持续地再现错误。
 
只要克服这个小障碍,我就会变得更有效率。。。
我知道这很容易,我只是不是一个伟大的程序员。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:15:29 | 显示全部楼层
也许是这样的?
 
  1. (defun C:JMC  (/ i ss ent tmp elst)
  2. (prompt "\nSet to Middle Center Justification . . .")
  3. (if (setq i -1 ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  4.    (while (setq ent (ssname ss (setq i (1+ i))))
  5.      (if (eq "MTEXT" (cdr (assoc 0 (setq elst (entget ent)))))
  6.        (progn
  7.          (command "_.explode" ent)
  8.          (setq ent (entlast))))
  9.      (setq tmp  (cdr (assoc 10 elst)))
  10.      (setq elst (entmod (subst (cons 11 tmp) (assoc 11 elst) eLst))
  11.            elst (entmod (subst (cons 72 1)   (assoc 72 elst) elst))
  12.            elst (entmod (subst (cons 73 2)   (assoc 73 elst) elst)))))
  13. (princ))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:20:45 | 显示全部楼层
正如您所知,JustifyText允许用户将对正设置为所需的任何内容,而无需移动文本。
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 12:22:11 | 显示全部楼层
李。。
我运行了这个,它正在使(或留下)文本左对齐。
我在现有的多行文字上进行了尝试,并创建了一些新的多行文字,效果相同。
也许我的原始代码中有一些奇怪的东西??
 
 
艾伦。。
 
我知道这一点,还有其他的“辩护”程序。
这是一个快速的应用程序,适用于我没有遇到的特定情况
想要任何选择。我只想让它做一件事。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:27:54 | 显示全部楼层
抱歉,请尝试以下操作:
 
  1. (defun C:JMC  (/ *error* ExEnts ELST ENT I LSTENT MSS OV SS TMP VL)
  2. (prompt "\nSet to Middle Center Justification . . .")
  3. (defun *error* (msg)
  4.    (and ov (mapcar 'setvar vl ov))
  5.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  6.        (princ (strcat "\n** Error: " msg " **")))
  7.    (princ))
  8. (defun ExEnts (ent / a)
  9.    (if (setq ent (entnext ent))
  10.        (cons ent (ExEnts ent))))
  11. (setq vl '("CMDECHO" "QAFLAGS") ov (mapcar 'getvar vl))
  12. (mapcar 'setvar vl '(0 1))  
  13. (if (setq i -1 ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  14.    (progn
  15.      (if (setq mss (ssget "_P" '((0 . "MTEXT"))))
  16.        (progn
  17.          (setq lstent (entlast))
  18.          (command "_.explode" mss "")
  19.          (mapcar
  20.            (function
  21.              (lambda (x) (ssadd x ss))) (ExEnts (cond (lstent) ((entlast)))))))
  22.          
  23.      (while (setq ent (ssname ss (setq i (1+ i))))      
  24.      
  25.        (setq tmp  (cdr (assoc 10 (setq elst (entget ent)))))
  26.        (setq elst (entmod (subst (cons 11 tmp) (assoc 11 elst) eLst))
  27.              elst (entmod (subst (cons 72 1)   (assoc 72 elst) elst))
  28.              elst (entmod (subst (cons 73 2)   (assoc 73 elst) elst))))))
  29. (mapcar 'setvar vl ov)
  30. (princ))
回复

使用道具 举报

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 12:31:55 | 显示全部楼层
我不得不做一个小改动,让它按我想要的方式工作。。
我添加了这一行:
 
elst(entmod(subst(cons 71 0)(assoc 73 elst)elst))
 
非常感谢!!
我自己永远也不会想到这一点!!
 
以下是整个程序。。。
 
(定义C:JMC(/*错误*ExEnts ELST ENT I LSENT MSS OV SS TMP VL)
(提示“\n设置到中间对正…”)
(defun*错误*(msg)
(和ov(mapcar’setvar vl ov))
(或(wcmatch(strcase msg)“*中断,*取消*,*退出*”)
(princ(strcat“\n**错误:“msg”**”)
(普林斯)
(定义EXCENTS(ent/a)
(如果(setq ent(entnext ent))
(cons ent(excents ent)))
(setq vl’(“CMDECHO”“QAFLAGS”)ov(mapcar‘getvar vl))
(mapcar“setvar vl”(0 1))
(if(setq i-1 ss(ssget“_:L”'((0。“TEXT,MTEXT”)))
(程序
(if(setq mss(ssget“_P”'((0。“多行文字”)))
(程序
(setq LSENT(entlast))
(命令“_.explode”mss”)
(地图车
(功能
(lambda(x)(ssadd x ss))(ExEnts(cond(lstent)((entlast 107;ЮЮ)Ю)
 
(while(setq ent(ssname ss(setq i(1+i))))
 
(setq tmp(cdr(assoc 10(setq elst(entget ent))))))
(setq elst(entmod(subst(cons 11 tmp)(assoc 11 elst)elst))
elst(entmod(subst(cons 72 1)(assoc 72 elst)elst))
elst(entmod(subst(cons 73 2)(assoc 73 elst)elst))
elst(entmod(subst(cons 71 0)(assoc 73 elst)elst))
))))
(mapcar’setvar vl ov)
(普林斯)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:33:38 | 显示全部楼层
谢谢Madoka
 
我可以问一下你为什么要搞DXF 71吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:19 , Processed in 0.727250 second(s), 72 queries .

© 2020-2025 乐筑天下

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