乐筑天下

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

[编程交流] Lisp查找区域

[复制链接]

6

主题

16

帖子

10

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 22:53:18 | 显示全部楼层 |阅读模式
正在寻找搜索数千个dwg以查看其中是否包含区域的解决方案。如果是,则显示此列表或保存该列表以供以后使用。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:07:27 | 显示全部楼层
使用BAT文件创建要调查的文件列表,其中包含以下语句:
  1. DIR /b *.DWG > MyDrawingsList.SCR

从中生成如下脚本(每个文件一行)-调整彩色部分:
  1. _OPEN "[color=blue]C:\MyDrawings\Drawing1st.dwg[/color]" (if (ssget "_X" '((0 . "REGION"))) (progn (setq fis (open "[color=magenta]C:\\RegionQueryResults.txt[/color]" "a")) (write-line "[color=blue]Drawings1t.dwg[/color]" fis) (close fis))) _CLOSE
  2. _OPEN "[color=blue]C:\MyDrawings\Drawing2nd.dwg[/color]" (if (ssget "_X" '((0 . "REGION"))) (progn (setq fis (open "[color=#ff00ff]C:\\RegionQueryResults.txt[/color]" "a")) (write-line "[color=blue]Drawing2nd.dwg[/color]" fis) (close fis))) _CLOSE
  3. ;end of script

使用Excel加速脚本生成。
回复

使用道具 举报

6

主题

16

帖子

10

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:15:26 | 显示全部楼层
谢谢
BAT文件生成了SCR文件,但它看起来只会搜索它所在的目录。。。是这样吗?我可以用//SERVER\u NAME/替换DIR吗?我如何处理搜索子文件夹?
代码:
  1. [color=blue]//SERVER_NAME/[/color] /b *.DWG > MyDrawingsList.SCR
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:29:24 | 显示全部楼层
请参阅此参考:
 
http://www.robvanderwoude.com/ntdir.php
 
/s开关是您所需要的,即:
 
  1. dir "\\SERVER_NAME\*.lsp" /s /b > mydrawingslist.scr
回复

使用道具 举报

6

主题

16

帖子

10

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:41:34 | 显示全部楼层
谢谢,这个列表很好用。
 
我的列表相当大,有2726行(哎哟),如何导出Excel文件来创建SCR文件?
 
或者有没有其他方法来报告巫婆文件中有区域?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:46:17 | 显示全部楼层
要提供替代方法,请加载此函数,然后加载并运行以下内容:
  1. (defun c:findregions ( / f )
  2.    (setq f [color=red]"C:\\RegionResults.txt"[/color]) ;; Output file
  3.    (LM:odbx
  4.       '(lambda ( x / r )
  5.            (vl-catch-all-apply
  6.               '(lambda nil
  7.                    (vlax-for l (vla-get-layouts x)
  8.                        (vlax-for o (vla-get-block l)
  9.                            (if (= "AcDbRegion" (vla-get-objectname o))
  10.                                (progn (setq r t) (exit))
  11.                            )
  12.                        )
  13.                    )
  14.                )
  15.            )
  16.            (if r
  17.                (if (setq d (open f "a"))
  18.                    (progn (write-line (vla-get-name x) d) (close d))
  19.                    (prompt (strcat "\nUnable to open " f))
  20.                )
  21.            )
  22.        )
  23.        nil nil
  24.    )
  25.    (if (setq f (findfile f))
  26.        (startapp "notepad" f)
  27.        (prompt "\nNo regions found in any drawing.")
  28.    )
  29.    (princ)
  30. )
  31. (vl-load-com) (princ)
回复

使用道具 举报

6

主题

16

帖子

10

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:56:40 | 显示全部楼层
再次感谢李,一旦第一种方法完成,我会尝试一下。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:21 , Processed in 0.354174 second(s), 66 queries .

© 2020-2025 乐筑天下

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