找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1975|回复: 2

[LISP程序]:不用打开dwg,可以查找文件中是否包含某个文字

[复制链接]

已领礼包: 58个

财富等级: 招财进宝

发表于 2008-2-26 13:55:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
;;;;在2000下注册objectdbx
(defun REGISTEROBJECTDBX (/ DBXSERVER )        ;by Tony Tanzillo
    (cond
        ((vl-registry-read
             "HKEY_CLASSES_ROOT\\ObjectDBX.AxDbDocument\\CLSID"
         )
        )
        ((not (setq DBXSERVER (findfile "AxDb15.dll")))
         (alert        "Error: Can't locate ObjectDBX Library (AxDb15.dll)"
         )
        )
        (t
         (startapp "regsvr32.exe" (strcat "/s \"" DBXSERVER "\""))
         (or
             (vl-registry-read
                 "HKEY_CLASSES_ROOT\\ObjectDBX.AxDbDocument\\CLSID"
             )
             (alert
                 "Error: Failed to register ObjectDBX ActiveX services."
             )
         )
        )
    )
)
(defun c:findtextindwg (/ path filelst app mspace lst myerr olderr keystr docs filelst1)
   ;;;以下为秋枫的选择目录函数,可以到明经通道下载
    (setq path          (qf_getfolder "请选择目录:")
          filelst (vl-directory-files path "*.dwg" 1)
          filelst (mapcar '(lambda (x)
                               (strcat path "\\" x)
                           )
                          filelst
                  )
          lst          nil
          filelst1 nil
          keystr  (getstring "\n请输入关键字:")
    )
    (setq olderr *error*)
    (defun myerr (msg)
        (foreach n (list app DBXDOC mspace)
            (if        n
                (vlax-release-object n)
            )
        )
        (setq *error* nil)
        (princ "\n函数取消......")
        (princ)
    )
    (setq *error* myerr)
    (setq app (vlax-get-acad-object))
    (setq docs (vla-get-documents app))
    (vlax-for each docs (setq filelst1 (cons (vla-get-fullname each) filelst1)))
    ;;;返回dbxdoc
    (if        (= "15" (substr (getvar "acadver") 1 2))
        (progn
            (if        (not (REGISTEROBJECTDBX))
                (exit)
            )
            (setq
                DBXDOC
                   (vla-getinterfaceobject APP
                                           "ObjectDBX.AxDbDocument"
                   )
            )
        )
        (setq
            DBXDOC
               (vla-getinterfaceobject APP
                                       (strcat "ObjectDBX.AxDbDocument."
                                               (substr (getvar "acadver")
                                                       1
                                                       2
                                               )
                                       )
               )
        )
    )
    (princ "\n正在处理... ...")
    (princ)
    (foreach n filelst
        (progn
            (if        (member n filelst1)
                (setq
                    mspace (vla-get-modelspace
                               (vla-item
                                   docs
                                   (vl-string-subst ""
                                                    (strcat path "\\")
                                                    n
                                   )
                               )
                           )
                )
                (progn
                    (vla-open DBXDOC n)
                    (setq mspace (vla-get-modelspace DBXDOC))
                )
            )
            (vlax-for each mspace
                (cond
                    ((and (wcmatch (vla-get-objectname each) "AcDbText,AcDbMText")
                          (wcmatch (vla-get-textstring each) keystr)
                     )
                     (if (not (member n lst))
                         (setq lst (cons n lst))
                     )
                    )
                )
            )
        )                                ;progn
    )                                        ;foreach n
    (if        (> (length lst) 0)
        (progn
            (setq lst (vl-sort  lst '<))
            (foreach n lst
                (princ (strcat "\n在"                  n
                               "文件中,有你要找的文字 \""
                               keystr                  "\"."
                              )
                )
            )
        )
        (princ "\n没有符合条件的文件!")
    )
    (foreach n (list app DBXDOC mspace)
        (if n
            (vlax-release-object n)
        )
    )
    (textscr)
    (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-2-26 15:27:41 | 显示全部楼层
不是不打开,只是不用手工打开。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-2-27 01:09:29 | 显示全部楼层
关键:调用dbx
可以用vbs vb vc...等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-25 15:24 , Processed in 0.404295 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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