乐筑天下

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

[编程交流] 查找字符串-做某事

[复制链接]

88

主题

346

帖子

281

银币

后起之秀

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

铜币
423
发表于 2022-7-6 17:32:50 | 显示全部楼层 |阅读模式
我有几个关于如何做某事的问题。。。
鉴于以下情况。。
 
原始帖子
 
  1. (defun chkmtxtstr (matchstr / mtxtset lst)
  2.   (if (setq mtxtset (ssget "_X" '((0 . "MTEXT"))))
  3.     (if
  4.       (setq lst
  5.         (vl-remove-if-not
  6.          '(lambda (x)
  7.             (wcmatch
  8.               (strcase (vla-get-textstring x))
  9.               (strcat "*" (strcase matchstr) "*")
  10.             )
  11.           )
  12.           (mapcar
  13.             'vlax-ename->vla-object
  14.             (vl-remove-if
  15.               'listp
  16.               (mapcar 'cadr (ssnamex mtxtset))
  17.             )
  18.           )
  19.         )
  20.       )
  21.       (alert (strcat "The string '" matchstr "' was found."))
  22.     )
  23.   )
  24.   lst
  25. )
  26. ;;;useage - (chkmtxtstr "MyTextString")

 
1) 如何将文本字符串硬编码到此代码中?是“x”吗??
 
2) 如何将找到的文本对象分配给变量,以便对其执行其他操作?
ie:(命令“change”XX““La”0“c”bylayer”)
 
(在我的例子中,在特定选项卡/布局上只有一个找到的字符串实例。)没有倍数的可能性。
 
 
 
 
回复

使用道具 举报

5

主题

27

帖子

57

银币

限制会员

铜币
-9
发表于 2022-7-6 17:59:24 | 显示全部楼层
这只是一个猜测,因为我现在不能真正玩例程(lambda函数吓到我了,哈哈)
 
也许您需要将(setq mtxtset(ssget“_X”'((0。“MTEXT”))更改为(setq mtxtset“硬编码字符串”)。 
 
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-6 18:05:00 | 显示全部楼层
你想硬编码哪个文本?假设有两种选择,要么是要搜索的文本(作为matchstr传递给这个LISP),要么是要搜索的文本字符串的硬编码,这里是mtxtset。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 18:32:07 | 显示全部楼层
由于要找到的字符串已经被传递给函数的参数,您可以通过定义另一个函数来“硬编码”它,该函数使用硬编码字符串评估您的函数,例如:
  1. (defun c:test ( )
  2.     (chkmtxtstr "MyTextString")
  3. )

不过,如果您对区分大小写的匹配感到满意,并且假设多行文字内容没有格式,并且不跨越多个DXF第3组条目,那么代码可以变得简单得多-请考虑以下内容:
  1. (defun find ( str )
  2.     (ssget "_X" (list '(0 . "MTEXT") (cons 1 (strcat "*" str "*"))))
  3. )

由于上述操作将返回一个选择集,因此可以按以下方式调用它:
  1. (defun c:test ( / sel )
  2.     (if (setq sel (find "YourString"))
  3.         (command "_.change" sel "" "_p" "_la" "0" "_c" "ByLayer" "")
  4.     )
  5.     (princ)
  6. )
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 18:37:59 | 显示全部楼层
很高兴看到你发布Lee 183258nw12w2c91516zq1t.png
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 13:13 , Processed in 0.468217 second(s), 75 queries .

© 2020-2025 乐筑天下

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