明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1293|回复: 1

对于未打开的文件列表,事先判断哪些是Auocad能打开的

  [复制链接]
发表于 2013-1-8 16:32:58 | 显示全部楼层 |阅读模式
;;对于未打开的文件列表,事先判断哪些是Auocad能打开的
;;示例(OpenFileList '("D:\\drawing1" "D:\\drawing2"))
(defun OpenFileList (dwgfileLst / N NOTOPENFILELST TMPFILE)
  ;;获取ObjectDBX版本字符串
  (defun GetObjectDBXVer (/ VERSION)
    (if        (>= (setq VERSION (atoi (getvar "acadver"))) 16)
      (strcat "ObjectDBX.AxDbDocument." (itoa VERSION))
    )
  )
  ;; 对于非打开文件进行检查,看是否能打开
  (defun CanSuccessOpen        (DwgName / ACADAPP CATCHIT DBXDOC)
    (setq AcadApp (vlax-get-acad-object)
          dbxDoc  (vla-GetInterfaceObject
                    AcadApp
                    (GetObjectDBXVer)
                  )
    )
    (setq catchit (vl-catch-all-apply 'vla-open (list dbxDoc DwgName)))
    (if        dbxDoc
      (vlax-release-object dbxDoc)
    )                                        ;关闭文档
    (if        AcadApp
      (vlax-release-object AcadApp)
    )
    (vl-catch-all-error-p catchit)
  )
  ;; 添加分隔符函数
  (defun AddSeprate (DataList delimiter / i len dealdata TempData)
    (setq i   1
          len (length DataList)
    )
    (if        len
      (progn
        (setq dealdata (nth 0 DataList))
        (if (numberp dealdata)
          (setq dealdata (rtos dealdata 2))
        )
        (repeat        (1- len)
          (setq TempData (nth i DataList))
          (if (numberp TempData)
            (setq TempData (rtos TempData 2))
          )
          (setq dealdata (strcat dealdata delimiter TempData))
          (setq i (1+ i))
        )
      )
    )
    (setq DataList dealdata)
  )

  (if dwgfileLst
    (repeat (setq n (length dwgfileLst))
      (setq tmpfile (nth (setq n (1- n)) dwgfileLst))
      (if (CanSuccessOpen tmpfile)
        (setq NotOpenFileLst (cons tmpfile NotOpenFileLst))
      )
    )
  )
  (if NotOpenFileLst
    (progn
      (repeat (setq n (length NotOpenFileLst))
        (setq tmpfile (nth (setq n (1- n)) NotOpenFileLst))
        (setq dwgfileLst (vl-remove tmpfile dwgfileLst))
      )
      (alert
        (strcat
          "以下文件可能已经损坏,或者需要高版本才能打开:\n"
          (AddSeprate NotOpenFileLst "\n")
        )
      )
    )
  )
  dwgfileLst
)

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-1-8 19:06:24 | 显示全部楼层
坐沙发顶几下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-2 10:57 , Processed in 0.150221 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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