Lisp查找区域
正在寻找搜索数千个dwg以查看其中是否包含区域的解决方案。如果是,则显示此列表或保存该列表以供以后使用。 使用BAT文件创建要调查的文件列表,其中包含以下语句:DIR /b *.DWG > MyDrawingsList.SCR
从中生成如下脚本(每个文件一行)-调整彩色部分:
_OPEN "C:\MyDrawings\Drawing1st.dwg" (if (ssget "_X" '((0 . "REGION"))) (progn (setq fis (open "C:\\RegionQueryResults.txt" "a")) (write-line "Drawings1t.dwg" fis) (close fis))) _CLOSE
_OPEN "C:\MyDrawings\Drawing2nd.dwg" (if (ssget "_X" '((0 . "REGION"))) (progn (setq fis (open "C:\\RegionQueryResults.txt" "a")) (write-line "Drawing2nd.dwg" fis) (close fis))) _CLOSE
;end of script
使用Excel加速脚本生成。 谢谢
BAT文件生成了SCR文件,但它看起来只会搜索它所在的目录。。。是这样吗?我可以用//SERVER\u NAME/替换DIR吗?我如何处理搜索子文件夹?
代码:
//SERVER_NAME/ /b *.DWG > MyDrawingsList.SCR 请参阅此参考:
http://www.robvanderwoude.com/ntdir.php
/s开关是您所需要的,即:
dir "\\SERVER_NAME\*.lsp" /s /b > mydrawingslist.scr 谢谢,这个列表很好用。
我的列表相当大,有2726行(哎哟),如何导出Excel文件来创建SCR文件?
或者有没有其他方法来报告巫婆文件中有区域? 要提供替代方法,请加载此函数,然后加载并运行以下内容:
(defun c:findregions ( / f )
(setq f "C:\\RegionResults.txt") ;; Output file
(LM:odbx
'(lambda ( x / r )
(vl-catch-all-apply
'(lambda nil
(vlax-for l (vla-get-layouts x)
(vlax-for o (vla-get-block l)
(if (= "AcDbRegion" (vla-get-objectname o))
(progn (setq r t) (exit))
)
)
)
)
)
(if r
(if (setq d (open f "a"))
(progn (write-line (vla-get-name x) d) (close d))
(prompt (strcat "\nUnable to open " f))
)
)
)
nil nil
)
(if (setq f (findfile f))
(startapp "notepad" f)
(prompt "\nNo regions found in any drawing.")
)
(princ)
)
(vl-load-com) (princ) 再次感谢李,一旦第一种方法完成,我会尝试一下。
页:
[1]