乐筑天下

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

[编程交流] 通配符选择集

[复制链接]

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 14:20:20 | 显示全部楼层 |阅读模式
大家好
 
我工作中的一位工作人员向我询问一种计算以特定层上的字符开头的字符串实例数的方法
 
这让我产生了以下想法,我觉得社区可能会发现这些想法很有用
 
  1. (setq sset (ssget "X" (list(cons 1 "A*")(cons 8 "Exlayer"))))

 
asterix(*)允许对实体进行通配符过滤。
 
这也适用于搜索中间字符串的*char*
 
奥利
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:31:05 | 显示全部楼层
谢谢分享,奥利,
 
另一种方法:
 
  1. (defun c:tcnt  (/ ss tStr)
  2. (vl-load-com)
  3. (if (and (setq ss (ssget "_X" (list (cons 0 "*TEXT"))))
  4.           (setq tStr (getstring t "\nText to Search For: ")))
  5.    (progn
  6.      (setq ss (vl-remove-if-not
  7.                 (function
  8.                   (lambda (x)
  9.                     (wcmatch
  10.                       (cdr (assoc 1 (entget x))) tStr)))
  11.               (mapcar 'cadr (ssnamex ss))))
  12.      (if (not (zerop (length ss)))
  13.        (princ (strcat (rtos (length ss) 2 0) " Item(s) Found."))
  14.        (princ "\nNo Matching Text Strings. ")))
  15.    (princ "\n<!> No Text Found in Drawing <!>"))
  16. (princ))
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 14:34:00 | 显示全部楼层
 
毫无疑问,回馈社区换换口味是件好事
 
值得一提。其中,我将“A*”作为文字字符串,可以使用变量
 
奥利
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:41:18 | 显示全部楼层
请记住,所有通配符都适用于此,因此对于包含数字的文本字符串,可以使用“*#*”。
 
一个很好的例子:
 
http://www.cadtutor.net/forum/showpost.php?p=72097&postcount=8
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 14:44:44 | 显示全部楼层
 
这太可怕了。它的工作方式是否与PERL的正则表达式类似?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:49:56 | 显示全部楼层
 
我不能肯定这一点,但通配符是相当标准的。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 14:56:36 | 显示全部楼层
奥利,
注意,您的示例区分大小写。要使其不区分大小写,请使用以下选项:
  1. (setq sset (ssget "X" (list(cons 1 "[aA]*")(cons 8 "Exlayer"))))
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 15:02:16 | 显示全部楼层
有关ssget中wcmatch的另一个示例,请参阅Evgeniy的这个示例
在这里,我解释了它的工作原理:
http://www.theswamp.org/index.php?topic=21058.msg255696#msg255696
 
他精通通配符的用法。
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 15:08:47 | 显示全部楼层
 
谢谢你,出租车
 
我有机会使用通配符系统,它或多或少是perl的正则表达式。
 
[a-f]*将查找asdf,但不查找asdf(匹配类[]中的字符0次或更多次
 
到目前为止,我注意到的唯一主要区别是“\”字符(如\w、\d)不起作用
 
奥利
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:09:53 | 显示全部楼层
 
很好的例子Alan
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:13 , Processed in 1.052011 second(s), 72 queries .

© 2020-2025 乐筑天下

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