乐筑天下

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

[编程交流] 使用带编号的Lis格式化多行文字

[复制链接]

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 23:01:55 | 显示全部楼层
 
别担心;是的,entmake和vla AddMText都可以工作。
 
使用列表代替串联字符串(在识别所有必要的子字符串之前)的优点是,您可以轻松计算结果多行文字的填充宽度,而无需随后打断刚刚串联的字符串,或计算每个“\t”子字符串实例的vl位置之间的距离。。。只需使用上述相同的逻辑有条件地构建字符串列表,然后在所述列表上执行vl String Right Trim+Apply+Mapcar序列。柠檬挤压。
 
干杯
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 23:08:07 | 显示全部楼层
 
你说得太好了,韩;我不太准确,但还是很感激。
 
干杯
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 23:09:42 | 显示全部楼层
是的,非常感谢您的投入。我现在工作得很好。t(tab)字符在字符串中很重要。这个可以处理我扔给它的任何东西。我只是输入了我想要的内容,然后对对象进行了快速(entget)以查看文本的格式。如果我像这样构建sting,即使使用计数器和带有非编号行的拆分,它也会在第二部分中获取一个新的编号列表。效果很好,但一旦用户开始询问,我可能会对其进行进一步调整。
  1. (defun doit (str pt width textSize _LayoutTab)
  2. (entmake
  3.    (list
  4.      (cons 0 "MTEXT")
  5.      (cons 100 "AcDbEntity")
  6.      (cons 67 0)
  7.      (cons 410 _LayoutTab)
  8.      (cons 8 "Text2")
  9.      (cons 100 "AcDbMText")
  10.      (cons 10 pt)
  11.      (cons 40 textSize)
  12.      (cons 41 width)
  13.      (cons 46 0.0)
  14.      (cons 71 1)
  15.      (cons 72 5)
  16.      (cons 1 str)
  17.      (cons 7 "DIM")
  18.      (cons 210 '(0.0 0.0 1.0))
  19.      (cons 11 '(1.0 0.0 0.0))
  20.      (cons 42 3.8781)
  21.      (cons 43 0.792381)
  22.      (cons 50 0.0)
  23.      (cons 73 1)
  24.      (cons 44 1.0)
  25.    )
  26. )
  27. (princ)
  28. )
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:17:09 | 显示全部楼层
对于这个想法,先生,我也更喜欢列表法
我的尝试有点不同
 
子功能
  1. http://www.cadtutor.net/forum/showthread.php?89739-Format-MTEXT-with-Numbered-List
  2. (defun [color="blue"]mtxno[/color] (p $ lst / i doc wid num str)
  3. ;hanhphuc 2014
  4. (setq        i   0
  5. doc (vlax-get-acad-object)
  6. wd (*(apply '+(mapcar ''((x) (apply x (mapcar 'strlen (cons $ lst)) ) )'(min max))) (getvar "textsize") 0.5)
  7. ) ;_ end of setq
  8. (repeat (length lst) (setq num (cons (itoa (setq i (1+ i))) num)))
  9. (vla-AddMText
  10.    (foreach x '(ActiveDocument ActiveLayout Block) (setq doc (vlax-get doc x))) ;_ end of foreach
  11.    (vlax-3d-point p)
  12.    wd
  13.    (foreach x '((mapcar ''((a b) (strcat a ".\t" b "\\P")) (reverse num) lst)
  14.          (cons
  15.           (strcat $ "\\P\\pxi-"
  16.            (rtos wd 2 1) ",l"
  17.            (rtos (/ wd 8.) 2 1) ",t"
  18.            (rtos wd 2 1) ";")
  19.           str
  20.           )
  21.          ([color="blue"]vl-string-right-trim[/color] "\\P" (apply 'strcat str))
  22.          )
  23.      (setq str (eval x))
  24.      ) ;_ end of foreach
  25.    ) ;_ end of vla-AddMText
  26. ) ;_ end of defun

 
比尔的例子
([color=“blue”]mtxno'(0.0.0。)                        ;
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:00 , Processed in 0.751113 second(s), 58 queries .

© 2020-2025 乐筑天下

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