乐筑天下

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

[编程交流] 组合文本字符串

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:41:36 | 显示全部楼层 |阅读模式
我在一张图中有很多文本字符串,我想把这些文本成对地组合一次。
 
第一段文字:“47[20/20”
 
第二个文本:“L=1200”
 
最终文本:“47[20/20 L=1200”
 
我附上了样品图纸。
 
谢谢你的帮助。样品图纸
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:50:24 | 显示全部楼层
请检查此工具。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:54:47 | 显示全部楼层
pyrzms,
 
这比看起来更难。
 
我们如何确保长度部分属于第一部分。
 
我们可以使用该位置并获得最近的结果,但在某些情况下可能不会
正确工作。
 
这就是为什么维修程序要求您选择。
 
ymg公司
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:04:23 | 显示全部楼层
谢谢ymg3
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:10:53 | 显示全部楼层
作为“演示”,可能是这样的
  1. (defun c:test (/ ENT ENT1 HND HND1 ITM MN MX NUM P1 P2 P3 SS SS1 STR)
  2. (if (setq ss (ssget "_:L" '((0 . "TEXT") (1 . "#*`[##`/##"))))
  3.    (progn
  4.      (setq itm 0
  5.     num (sslength ss)
  6.      )
  7.      (while (< itm num)
  8. (setq hnd (ssname ss itm)
  9.       ent (entget hnd)
  10. )
  11. (vla-getboundingbox (vlax-ename->vla-object hnd) 'mn 'mx)
  12. (setq p1 (vlax-safearray->list mn)
  13.       p2 (vlax-safearray->list mx)
  14. )
  15. (setq
  16.   p3 (list (+ (- (car p2) (car p1)) (car p2)) (cadr p1) (caddr p2))
  17. )
  18. (if (setq ss1 (ssget "_C" p2 p3 '((0 . "TEXT") (1 . "@=#*"))))
  19.   (progn
  20.     (setq hnd1 (ssname ss1 0)
  21.    ent1 (entget hnd1)
  22.    str  (strcat (cdr (assoc 1 ent)) " " (cdr (assoc 1 ent1)))
  23.     )
  24.     (entmod (subst (cons 1 str) (assoc 1 ent) ent))
  25.     (entdel hnd1)
  26.   )
  27. )
  28. (setq itm (1+ itm))
  29.      )
  30.    )
  31. )
  32. (princ)
  33. )

 
 
HTH公司
亨里克
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:11:53 | 显示全部楼层
嗯,席尔瓦,
 
这很好!
 
唯一不同的是在新层上创建连接的实体,
在我检查之前,不要删除单独的一个。
 
非常小的修改:
 
  1. (setq ent (subst (cons 1 str) (assoc 1 ent) ent)
  2.      ent (subst (cons 8 "JOINED") (assoc 8 ent) ent)                  
  3. )
  4. (entmakex ent)

 
ymg公司
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:23:12 | 显示全部楼层
 
 
修改得很好,ymg
 
 
亨里克
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:25:02 | 显示全部楼层
谢谢ymg3和hmsilva。
 
ymg3如何添加您的最后一个
  1. (setq ent (subst (cons 1 str) (assoc 1 ent) ent)
  2.      ent (subst (cons 8 "JOINED") (assoc 8 ent) ent)                  
  3. )
  4. (entmakex ent)
修改。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:32:06 | 显示全部楼层
不客气,皮兹姆斯
 
使用ymg mod
 
  1. (defun c:test (/ ENT ENT1 HND ITM MN MX NUM P1 P2 P3 SS SS1 STR)
  2. (if (setq ss (ssget "_:L" '((0 . "TEXT") (1 . "#*`[##`/##"))))
  3.    (progn
  4.      (setq itm 0
  5.     num (sslength ss)
  6.      )
  7.      (while (< itm num)
  8. (setq hnd (ssname ss itm)
  9.       ent (entget hnd)
  10. )
  11. (vla-getboundingbox (vlax-ename->vla-object hnd) 'mn 'mx)
  12. (setq p1 (vlax-safearray->list mn)
  13.       p2 (vlax-safearray->list mx)
  14. )
  15. (setq
  16.   p3 (list (+ (- (car p2) (car p1)) (car p2)) (cadr p1) (caddr p2))
  17. )
  18. (if (setq ss1 (ssget "_C" p2 p3 '((0 . "TEXT") (1 . "@=#*"))))
  19.   (progn
  20.     (setq ent1 (entget (ssname ss1 0))
  21.    str (strcat (cdr (assoc 1 ent)) " " (cdr (assoc 1 ent1)))
  22.    ent (subst (cons 1 str) (assoc 1 ent) ent)
  23.    ent (subst (cons 8 "JOINED") (assoc 8 ent) ent)
  24.     )
  25. (entmakex ent)
  26.   )
  27. )
  28. (setq itm (1+ itm))
  29.      )
  30.    )
  31. )
  32. (princ)
  33. )

 
HTH公司
亨里克
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:36:30 | 显示全部楼层
pyrzms,
 
希望Enrique不会介意,但这里我对它做了更多修改,
 
连接的文字放置在如上所述连接的图层上,但是
我们将其偏移一个常数,该常数等于文本高度的1.25倍
选择集中第一个文本图元的。
 
连接文字图元的对齐方式更改为左对齐,
与分离的位置更紧密地对齐。
 
因此,一旦你对结果满意,你就删除了
初始层,然后按偏移值向下移动所有内容。
 
将向文本屏幕发送一个小报告,提供以下信息:
  1. Found Items: 264
  2. Matched Items: 262
  3. Vert. Offset: 18.75

 
修改如下:
 
  1. (defun c:jtxt (/ ent ent1 hnd hnd1 itm mn mx num p1 p2 p3 ss ss1 str)
  2. (if (setq ss (ssget "_:L" '((0 . "TEXT") (1 . "#*`[##`/##"))))
  3.    (progn
  4.      (setq ofs (* (cdr (assoc 40 (entget (ssname ss 0)))) 1.25)
  5.            itm 0
  6.            jcount 0
  7.            num (sslength ss)
  8.      )
  9.      (while (< itm num)
  10.        (setq hnd (ssname ss itm)
  11.              ent (entget hnd)
  12.        )
  13.        (vla-getboundingbox (vlax-ename->vla-object hnd) 'mn 'mx)
  14.        (setq p1 (vlax-safearray->list mn)
  15.              p2 (vlax-safearray->list mx)
  16.        )
  17.        (setq
  18.          p3 (list (+ (- (car p2) (car p1)) (car p2)) (cadr p1) (caddr p2))
  19.        )
  20.        (if (setq ss1 (ssget "_C" p2 p3 '((0 . "TEXT") (1 . "@=#*"))))
  21.          (progn
  22.            (setq hnd1 (ssname ss1 0)
  23.                  ent1 (entget hnd1)
  24.                  str  (strcat (cdr (assoc 1 ent)) " " (cdr (assoc 1 ent1)))
  25.                  loc  (cdr (assoc 10 ent))
  26.                  loc  (list (car loc) (+ (cadr loc) ofs) (caddr loc))
  27.            )
  28.            (setq ent (subst (cons 1 str) (assoc 1 ent) ent)
  29.                  ent (subst (cons 8 "JOINED") (assoc 8 ent) ent)
  30.                  ent (subst (cons 10 loc) (assoc 10 ent) ent)
  31.                  ent (subst (cons 11 loc) (assoc 11 ent) ent)
  32.                  ent (subst (cons 72 0) (assoc 72 ent) ent)
  33.            )
  34.            (entmake ent)
  35.            (setq jcount (1+ jcount))
  36.          )
  37.        )
  38.        (setq itm (1+ itm))
  39.      )
  40.    )
  41. )
  42. (princ (strcat "\n  Found Items: " (itoa itm)
  43.                 "\nMatched Items: " (itoa jcount)
  44.                 "\n Vert. Offset: " (rtos ofs 2 2)
  45.         )
  46. )      
  47. (princ)
  48. )

 
可能更好的方法是更改图层并移动分离的项目
而不是连接的。
 
这样,在结束时您将无需做任何事情,只需删除分隔的。
 
但为此,我们需要稍微更改选择方法,使其仅包括
其中包含“[”但没有“L=”的文本实体。
 
我走着瞧。
 
ymg公司
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:25 , Processed in 0.429574 second(s), 72 queries .

© 2020-2025 乐筑天下

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