乐筑天下

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

[编程交流] 过滤文本内容和位置i

[复制链接]

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 17:26:07 | 显示全部楼层 |阅读模式
你好
 
我得到了一个GPS测量读数,我使用一些程序将其转换为autocad绘图。
 
问题是转换将所有内容(插入点和一些多行文字标签)放置在图层0中。
 
使用“Qselect”命令,我可以过滤某些文本内容,选择具有特定内容的所有标签,并将其放置在一个层中,最后我可以通过这种方式按层过滤对象。
 
然而,这很耗时,所以我想制作一些LISP,以自动方式完成这项工作。
 
FILTER和QSELECT没有命令行命令,因此它们对于lisp是不可能的,但是互联网上说了一些关于SSGET的事情
 
  1. (ssget "_X" '((0 . "TEXT,MTEXT")(1 . "A*,B*")))

资料来源:http://www.cadforum.cz/cadforum_en/qaID.asp?tip=6403
 
标签中文本的内容类似于:
 
Huisaansluiting-DWA,Inlaat
英拉特Huisaansluiting-HWA
Kolken,Trottoirkolk
科肯,因拉特
 
 
让我们以最后一个为例“Kolken,Inlaat”,然后我使用以下代码:
 
  1. ;;; GPS converter
  2. (Defun C:gpsfilter ()
  3. (setq kolkinlaat(ssget "_X" '((0 . "TEXT,MTEXT")(1 . "Kolken,Inlaat"))))
  4. (command "-layer" "make" "N-Layer-Kolkinlaat" "")
  5. (command ".laycur" kolkinlaat "")
  6. )

 
它选择所有文本,但也在命令栏中返回“nil”输出。
 
它是有效的(以一种粗略的方式,我想添加一些IF和and以及what not),但我想知道“nil”回报来自哪里,以及为什么它会这样做。
 
我相信“Kolken”和“Inlaat”之间的逗号会引起一些麻烦?
 
也许我需要先做一个“查找和替换”动作?
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 18:03:56 | 显示全部楼层
(命令…)始终返回零。因为这是defun的最后一条语句,所以函数也返回nil。
回复

使用道具 举报

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 18:10:47 | 显示全部楼层
啊,我想我错过了命令末尾的“普林斯”部分。
 
把它建得更大,有多个文本内容可供查找,它似乎工作得很好,所以我想不用担心。
 
供将来参考(或者有些人希望改进此基本代码)
我目前的代码:
 
  1. ;;; GPS converter
  2. (Defun C:gpsfilter ()
  3. (setq kolkinlaat(ssget "_X" '((0 . "TEXT,MTEXT")(1 . "Kolken,Inlaat"))))
  4. (setq kolktstuk(ssget "_X" '((0 . "TEXT,MTEXT")(1 . "Kolken,T-stuk"))))
  5. (setq huisdwainlaat(ssget "_X" '((0 . "TEXT,MTEXT")(1 . "Huisaansluiting - DWA,Inlaat"))))
  6. (setq overig(ssget "_X" '((0 . "TEXT,MTEXT")(1 . "Overig*"))))
  7. (setq huisdwabocht(ssget "_X" '((0 . "TEXT,MTEXT")(1 . "Huisaansluiting - DWA,Bocht"))))
  8. ;; Top part searches for text content and places textobjectsin a SETQ
  9. ;; Bottom part creates layers, when creating layer it goes to current and
  10. ;; then i place 'SETQ' content to the current layer.
  11. (command "-layer" "make" "R-XX-KOLK_INLAAT-T" "")
  12. (command ".laycur" kolkinlaat "")
  13. (command "-layer" "make" "R-XX-KOLKLEIDING_T_STUK-T" "")
  14. (command ".laycur" kolktstuk "")
  15. (command "-layer" "make" "R-XX-HUISAANSLUITING_DWA_INLAAT-T" "")
  16. (command ".laycur" huisdwainlaat "")
  17. (command "-layer" "make" "R-XX-RIOOL_OVERIGE-T" "")
  18. (command ".laycur" overig "")
  19. (command "-layer" "make" "R-XX-HUISAANSLUITING_DWA_BOCHT-T" "")
  20. (command ".laycur" huisdwabocht "")
  21. (princ)
  22. )

 
(对于不懂这些单词的人来说,这是荷兰语)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:30:11 | 显示全部楼层
作为一种替代方法,如果逗号可能在ssget过滤器中做了一些有趣的事情,为什么不使用一系列cond语句检查一个大选择集中的文本,并放在正确的层上呢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:26 , Processed in 0.377706 second(s), 60 queries .

© 2020-2025 乐筑天下

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