明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 974|回复: 13

[提问] 如何从多类型的选择集中提取以字母开头的文字内容?

[复制链接]
发表于 2020-6-30 07:25 | 显示全部楼层 |阅读模式
2明经币

我用ssget获取了一个选择集,如上图,选择集中有两个单行文字、多段线、标注等,如何提取出 那个以字母开头的文字内容呢?


用ssget带过滤条件仅提取出以字母开头的文字选择集,我会。但是如何从多类型的选择集中提取以字母开头的文字内容呢?
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

(defun c:tt (/ ss ent i Text c1 newss) (setq ss (ssget)) (setq newss (ssadd)) (setq i 0) (while (< i (sslength ss)) (setq ent (ssname ss i)) (if (= (cdr (assoc 0 (entget ent))) "TEXT") (progn (setq Text (cdr (assoc 1 (entget ent)))) (setq c1 (substr Text 1 1)) (if (or (and (> c1 "@") (< c1 "[")) (and (> c1 "`") (< c1 "{")) ) (ssadd ent newss) ...
发表于 2020-6-30 07:25 | 显示全部楼层
(defun c:tt (/ ss ent i Text c1 newss)
  (setq ss (ssget))
  (setq newss (ssadd))
  (setq i 0)
  (while (< i (sslength ss))
    (setq ent (ssname ss i))
    (if        (= (cdr (assoc 0 (entget ent))) "TEXT")
      (progn
        (setq Text (cdr (assoc 1 (entget ent))))
        (setq c1 (substr Text 1 1))
        (if
          (or (and (> c1 "@") (< c1 "["))
              (and (> c1 "`") (< c1 "{"))
          )
           (ssadd ent newss);;加入新的选择集
        )
      )
    )
    (setq i (1+ i))
  )
  (princ)
)
回复

使用道具 举报

发表于 2020-6-30 09:47 | 显示全部楼层
(command "select" ss "")
(ssget "P" '((1 . "@*")))

评分

参与人数 1明经币 +1 收起 理由
mingjing9971 + 1 经典

查看全部评分

回复

使用道具 举报

发表于 2020-6-30 11:57 | 显示全部楼层
tryhi 发表于 2020-6-30 09:47
(command "select" ss "")
(ssget "" '((1 . "@*")))


“@*”是什么意思?
回复

使用道具 举报

发表于 2020-6-30 17:05 | 显示全部楼层
gaics 发表于 2020-6-30 11:57
“@*”是什么意思?

用ssget带过滤条件仅提取出以字母开头的文字选择集,我会

你不是说你会?不用@*你用什么会?
回复

使用道具 举报

发表于 2020-6-30 18:54 | 显示全部楼层
tryhi 发表于 2020-6-30 17:05
用ssget带过滤条件仅提取出以字母开头的文字选择集,我会

你不是说你会?不用@*你用什么会?

那不是我说的
回复

使用道具 举报

 楼主| 发表于 2020-6-30 21:00 | 显示全部楼层
gaics 发表于 2020-6-30 08:55
(defun c:tt (/ ss ent i Text c1 newss)
  (setq ss (ssget))
  (setq newss (ssadd))

是不是用 wcmatch 好些?
回复

使用道具 举报

 楼主| 发表于 2020-6-30 21:00 | 显示全部楼层
gaics 发表于 2020-6-30 08:55
(defun c:tt (/ ss ent i Text c1 newss)
  (setq ss (ssget))
  (setq newss (ssadd))

是不是用 wcmatch 好些?
回复

使用道具 举报

 楼主| 发表于 2020-6-30 22:30 | 显示全部楼层
本帖最后由 小万LISP 于 2020-7-1 21:41 编辑

失礼了失礼了
失礼了
失礼了
回复

使用道具 举报

发表于 2020-6-30 23:33 | 显示全部楼层
本帖最后由 tryhi 于 2020-6-30 23:45 编辑
小万LISP 发表于 2020-6-30 22:30
版主,我觉得自己的代码写的最好,能自己拿悬赏的分吗?

你的代码最好?我怀疑你没有看懂ssget "P",所以自动忽略掉我的回复

;从选择集中提取以字母开头的文字
(defun c:tt()
        (setq SS(ssget))
        (command "select" ss "")
        (setq ss@(ssget "P" '((1 . "@*"))))
        (setq a -1)
        (while
                (setq en(ssname ss@(setq a(1+ a))))
                (setq str(cdr(assoc 1(entget en))))
                (terpri)(princ str)
        )
)
(princ)

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-21 00:42 , Processed in 0.231685 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表