乐筑天下

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

[编程交流] 将文本字符串拆分为45个字符

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:31:55 | 显示全部楼层
第1部分
开始学习lisp的好时机(setq str是一个用于测试目的的样本行,对entsel或ssget、entget和assoc进行一些搜索,它们一起工作,允许您选择文本并返回文本字符串,您将在上面的代码中设置为str。只需阅读一些lisp示例,您就会很快看到
第二部分阅读塔瓦特邮报,然后最终解决方案就会出来。
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 23:36:20 | 显示全部楼层
请参阅此线程中的附加图像。
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 23:38:27 | 显示全部楼层
请参见所附图片作为示例
235941bm22uwv46218w274.jpg
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:42:19 | 显示全部楼层
  1. (Defun c:m45 (/ str ent ll [t 45:s txt ur)
  2. ;;;                pBeMay2014                ;;;
  3. (princ "\nSelect Text objects")
  4. (if (setq strs (ssget "_:L" '((0 . "TEXT"))))
  5.    (repeat (Setq i (sslength strs))
  6.      (setq ent        (entget (ssname strs (setq i (1- i))))
  7.     pt        (cdr (assoc 10 ent))
  8.     str        (cdr (assoc 1 ent)) cl 1
  9.      )
  10.      (repeat (1+ (/ (strlen str) 45))
  11. (setq 45:S (substr str 1 45))
  12. (setq txt (entmakex (list (cons 0 "TEXT")
  13.                           (cons 10 pt)
  14.                           (Cons 1 45:S)
  15.                           (assoc 7 ent)
  16.                           (assoc 40 ent)
  17.                           (cons 62 cl);<-color for identification
  18.                     )
  19.           )
  20. )
  21. (vla-getboundingbox (vlax-ename->vla-object txt) 'll 'ur)
  22. (setq ur (vlax-safearray->list ur))
  23. (setq pt  (list (car ur) (cadr pt))
  24.       cl  (1+ cl)
  25.       str (substr str 46)
  26. )
  27.      )
  28.      (entdel (ssname strs i))
  29.    )
  30. )
  31. (princ)
  32. ))

 
但我同意比格尔的观点
 
 
@ymg公司
注意:
  1. (setq strlst (cons (substr str x [b](- len 1)[/b]) strlst) x [b](+ x len -1[/b]))

 
每项生成44个字符串的列表
 
不确定,但这应该是公正的吗
  1. (setq strlst (cons (substr str x [b]len[/b]) strlst)  x[b] (+ x len )[/b])
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 23:45:07 | 显示全部楼层
但代码实际上并不是我所需要的。代码应该首先要求选择文本,然后拆分它。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:48:56 | 显示全部楼层
你是说你需要在同一个地方用45个字符的字符串替换选中的文本实体吗?因为在你13号帖子和世界其他地方发布的图片上,它看起来不是那样的。
 
我内心的善良只会给你一次机会。正如塔瓦特已经要求的那样,请张贴一张样图
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 23:50:29 | 显示全部楼层
像这样的lisp例程的问题是很容易得到这样的结果。。。
 
通常用于描述ba的语言
共和党内部正在发生的事情令人担忧
g和误导性。今年春天的比赛不是
在“草根”和“体制”之间
nt”,但在两个建立分数sp之间
结束巨额资金以占上风。泰伊
r对抗与长ter无关
共和党的哲学方向。非常富有
明白我的意思吗?文字会被不自然地剪掉,不会像在正常的书面文本中那样插入连字符。在我看来,这是个坏主意。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:56:26 | 显示全部楼层
这是我的变体,但没有时间测试代码,因为我现在必须离开办公室。
 
  1. (defun c:Test (/ _l ss)
  2. ;;    Tharwat 18. May. 2014        ;;
  3. (defun _l (e / a b l)
  4.    (vla-getboundingbox (vlax-ename->vla-object e) 'a 'b)
  5.    (setq l (mapcar 'vlax-safearray->list (list a b)))
  6.    (distance (car l) (cadr l))
  7. )
  8. (if (setq ss (ssget "_:L" '((0 . "TEXT"))))
  9.    ((lambda (i / sn st pt e en j n)
  10.       (while (setq sn (ssname ss (setq i (1+ i))))
  11.         (if (> (strlen (setq st (cdr (assoc 1 (setq en (entget sn)))))) 45)
  12.           (progn (setq pt (cdr (assoc 10 en))
  13.                        e  (cdr (assoc -1 (entmod (append en (list (cons 1 (substr st 1 45)))))))
  14.                        st (substr st 46)
  15.                  )
  16.                  (repeat (1+ (/ (strlen st) 45))
  17.                    (setq
  18.                      e (entmakex (append (vl-remove-if-not '(lambda (x) (member (car x) '(0 8 62 40 41 50))) (entget e))
  19.                                          (list (cons 1 (substr st 1 45))
  20.                                                (cons 10 (setq pt (polar pt (cdr (assoc 50 (entget e))) (_l e))))
  21.                                          )
  22.                                  )
  23.                        )
  24.                    )
  25.                    (setq st (substr st 46))
  26.                  )
  27.           )
  28.         )
  29.       )
  30.     )
  31.      -1
  32.    )
  33. )
  34. (princ)
  35. ) (vl-load-com)
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:57:10 | 显示全部楼层
 
我知道你的意思。。。但我们的“最后一次机会”节目确实说:
 
我想,如果程序将字符串拆分到同一个位置,它仍然“看起来”正常。
 
编辑:等等。我相信OP确实说过将结果导出到外部文件。也许你有什么意见,[现在我很困惑]
 
FWIW:代码在14日后更新
 
@塔瓦特
在那里输入7作为TEXTSTYLE
  1. ...(member (car x) '(0 [b]7[/b] 8 62 40 41 50))..
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 00:02:05 | 显示全部楼层
是,在同一位置用分割的45个字符串替换选定的文本实体。见附图。
样品图纸
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:34 , Processed in 0.522808 second(s), 72 queries .

© 2020-2025 乐筑天下

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