明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2811|回复: 7

[基础] 简单的文件查找问题(已解决)

[复制链接]
发表于 2013-6-5 10:32:24 | 显示全部楼层 |阅读模式
本帖最后由 jack093 于 2013-6-15 21:28 编辑

如何在指定磁盘或目录下查找包含某一字符串的文件?
http://bbs.csdn.net/topics/290082370
http://zhidao.baidu.com/question ... =qrl&cid=87&index=3
windows的文件查找只能查找包含字符串的excel word等文件,dwg文件部分能查找到,速度非常慢,跟重要的是有漏网之鱼,无法依赖它。
设计中心也没有这个功能。
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=86815
这个帖子简单修改一下就可以了,可惜本人dbx还没有入门。
各位请指教
 楼主| 发表于 2013-6-5 11:13:41 | 显示全部楼层
发表于 2013-6-5 14:34:09 | 显示全部楼层
这个应该是个很不简单的问题,
以前用过谷歌的桌面搜索,速度可以不过还是有漏网之鱼
帮楼主顶一下,期待大神出手解决
 楼主| 发表于 2013-6-5 18:09:40 | 显示全部楼层
本帖最后由 jack093 于 2013-6-5 18:23 编辑

windows的文件查找,漏掉的部分没有发现规律;
按照desk公司的论坛帖子修改的只搜索了模型空间,遗漏图纸空间
http://forums.autodesk.com/t5/Vi ... de-dwg/td-p/1315426

    (vlax-for for-item (vla-get-modelspace dbxDoc)
        (progn ; start of object cycle
            (setq name (vla-get-objectname for-item))
上述用到了vla-get-modelspace,
请教高手:
1.不知道有没有函数可以全部空间都遍历到,还要用vla-get-paperspace吗?
2.如果用vla-get-paperspace,是否又要一个一个布局去找?

砍刀大侠的mcht没有用的这两个函数直接搞定,水平有限实在看不懂
dbx实在不熟。期待大侠出手

 楼主| 发表于 2013-6-5 19:06:51 | 显示全部楼层
本帖最后由 jack093 于 2013-6-5 20:03 编辑

可以了,不过有点傻,是否有更好的办法?
vlax-for 是循环语句吧,能否满足条件是直接退出呢
    (vlax-for for-item (vla-get-modelspace dbxDoc)
        (progn ; start of object cycle
            (setq name (vla-get-objectname for-item))
....
)))
    (vlax-for for-item (vla-get-paperspace dbxDoc)
        (progn ; start of object cycle
            (setq name (vla-get-objectname for-item))
...
)))

-----------------------------------------------------------------------------------------


(defun findtext_dwg (dwgname string / dbxDoc for-item name layer llist ob line ret)
    (setq ret nil)
    (if (and (not (vl-registry-read
                    "HKEY_CLASSES_ROOT\\ObjectDBX.AxDbDocument.18\\CLSID"
                )
            )
            (findfile "axdb18.dll")
        )
        (startapp "regsvr32.exe"
            (strcat "/s \"" (findfile "axdb18.dll") "\"")
        )
    )
    (setq dbxDoc
        (vla-GetInterfaceObject
            (vlax-get-acad-object)
            "ObjectDBX.AxDbDocument.18"
            ; MUST reference autocad DBX version
        )
    )
    (vla-open dbxDoc DwgName)
    (vlax-for for-item (vla-get-modelspace dbxDoc)
        (setq ret(tt_vla_object for-item dwgname string ret))
    )
    (if (null ret)
        (vlax-for for-item (vla-get-paperspace dbxDoc)
            (setq ret(tt_vla_object for-item dwgname string ret))
        )
    )
;|
    (if (null ret)
        (if (setq blks (vla-get-blocks dbxDoc))
            (vlax-for for-item blks
                (setq ret(tt_vla_object for-item dwgname string ret))
            )
        )
    )
|;
    (vl-catch-all-apply
        '(lambda () (vla-close DBXDOC ':VLAX-TRUE 'ITEM))
    )
    (VL-CATCH-ALL-APPLY
        'vlax-release-object
        (list dbxDoc dwgname for-item name layer llist ob line string )
    )
    (vlax-release-object dbxDoc)
    (setq dbxDoc nil)
    ret
)

(defun tt_vla_object(for-item dwgname string ret /  line )
    (if (null ret)
        (if (wcmatch (vla-get-objectname for-item) "AcDb*Text")
            (progn
                ;Conditions
                (if (vlax-property-available-p for-item 'textstring)
                    (setq line (vla-get-textstring for-item))
                )
                (if line
                    (Progn
                        (if (wcmatch (strcase line) (strcat "*" (strcase string) "*"))
                            (progn
                                (setq ret dwgname)
                                (prompt (strcat "\n" dwgname))
                                (prompt (strcat "\n" line))
                            )
                        )
                    )))
        )
    )
    ; (if
    ; (= name "AcDbBlockReference")
    ; (progn
    ; ;Conditions
    ; )
    ; )
    ret
)

还是不全,图块内文字搜索代码有问题......
 楼主| 发表于 2013-6-7 10:43:06 | 显示全部楼层
用块内递归搞定,可能是用dbx原因速度有些慢;
发表于 2013-6-7 12:45:15 来自手机 | 显示全部楼层
搞不懂,,路过,
发表于 2013-11-20 15:46:59 | 显示全部楼层
楼主可否把完整源码发给我,这个我也需要,simpleye@126.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 02:52 , Processed in 0.183760 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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