明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tukuitk

[讨论]关于上万张图怎样减肥好,on earth?

  [复制链接]
 楼主| 发表于 2004-4-26 09:39:00 | 显示全部楼层
myfreemind兄,我的图中内容本来就不多,而有那么大,肯定有很多无用的东东,你的图中对象是不是很多?可能就减不小吧。个人观点。呵呵……
 楼主| 发表于 2004-4-26 09:44:00 | 显示全部楼层
meflying发表于2004-4-25 19:31:00把一切打开图形需要加载的东西都去掉,可能会快些,,,用ACTIVEX是自动完成的,

飞哥,我还不是太清楚打开图形需要加载哪些东西,是不是我自己的其它程序(及其它三方程序)也可先不加载呀?
发表于 2004-4-26 16:05:00 | 显示全部楼层
这个不重要,重要的是你先把程序写出来
 楼主| 发表于 2004-4-27 16:17:00 | 显示全部楼层
飞哥,帮我看看这个程序,是在你的程序基础上改的,在 (vla-open DOC (strcat path "\\" file))时不对,打不开,谢谢了!!!
  1. (defun VxMakeDirectory
  2.              (Dir / CurDir DrvObj FilSys RetVal TmpLst TmpVal)
  3.    (setq  FilSys (vlax-create-object "Scripting.FileSystemObject")
  4.   CurDir (vl-string-right-trim "\" (vl-string-right-trim "/" Dir))
  5.    )
  6.    (while (/= (setq TmpVal (vl-filename-directory CurDir)) CurDir)
  7.        (setq TmpLst (cons TmpVal TmpLst)
  8.      CurDir TmpVal
  9.        )
  10.    )
  11.    (setq
  12.        RetVal (cond
  13.            ((= (vlax-invoke FilSys "DriveExists" TmpVal) 0) nil)
  14.            ((setq DrvObj (vlax-invoke FilSys "GetDrive" TmpVal))
  15.              (cond
  16.     ((= (vlax-get DrvObj "IsReady") 0) nil)
  17.     (T
  18.      (foreach memb TmpLst
  19.          (cond
  20.              ((= (vlax-invoke FilSys "FolderExists" memb) -1))
  21.              ((vlax-invoke FilSys "CreateFolder" memb))
  22.          )
  23.      )
  24.      (cond
  25.          ((= (vlax-invoke FilSys "FolderExists" Dir) -1))
  26.          ((vlax-invoke FilSys "CreateFolder" Dir) T)
  27.          (T nil)
  28.      )
  29.     )
  30.              )
  31.            )
  32.        )
  33.    )
  34.    (if DrvObj
  35.        (vlax-release-object DrvObj)
  36.    )
  37.    (vlax-release-object FilSys)
  38.    RetVal
  39. )
  40. (defun qf_getFolder (msg / WinShell shFolder path catchit)
  41.    (vl-load-com)
  42.    (setq winshell (vlax-create-object "Shell.Application"))
  43.    (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  44.    (setq
  45.        catchit (vl-catch-all-apply
  46.              '(lambda ()
  47.      (setq shFolder (vlax-get-property shFolder 'self))
  48.      (setq path (vlax-get-property shFolder 'path))
  49.                )
  50.          )
  51.    )
  52.    (if (vl-catch-all-error-p catchit)
  53.        nil
  54.        path
  55.    )
  56. )
  57. (defun findpath  ()
  58.    (setq path (qf_getFolder "请选择目录..."))
  59.    (setq files (vl-directory-files path "*.dwg" 1))
  60.    (if (not files)
  61.        (alert "所选目录无 .dwg 文件!请重新选择——")
  62.    )
  63. )
  64. ;;;;;;;;;;;;;;;;;;;;;;;;main
  65. (vl-load-com)
  66. (defun err (msg)
  67.    (setq *error* errtmp)
  68.    (vlax-release-object DOC)
  69.    (vlax-release-object APP)
  70.    (princ)
  71. )
  72. (defun C:kr_purge (/           APP             DOC   files       file
  73.          newpath     dcl_id       dd   NAME
  74.          OLDVAR-FILEDIA           PATH
  75.        )
  76.    (setq errtmp *error*)
  77.    (setq *error* err)
  78.    (setq APP (vlax-get-acad-object))
  79.    (setq DOC (vla-get-ActiveDocument APP))
  80.    (setq dcl_id (load_dialog "kr_pur.DCL"))
  81.    (if (not (new_dialog "kr_pur" dcl_id))
  82.        (exit)
  83.    )
  84.    (action_tile
  85.        "krbrowse"
  86.        "(findpath) (set_tile "path" path)"
  87.    )
  88.    (action_tile "accept" "(done_dialog 1)")
  89.    (setq dd (start_dialog))
  90.    (if (= dd 1)
  91.        (progn
  92.            (if files
  93.   (progn
  94.      (setq newpath (strcat path "\\减肥后的"))
  95.      (VxMakeDirectory newpath)
  96.      (foreach file  files
  97.          (vla-open DOC (strcat path "\" file))
  98.          (setvar "cmdecho" 0)
  99.          (setq oldvar-filedia (getvar "filedia"))
  100.          (setvar "filedia" 0)
  101.          (setq name (getvar "dwgname"))
  102.          (vl-cmdf "export" (strcat newpath "\" name))
  103.          (setvar "filedia" oldvar-filedia)
  104.          (vla-Close DOC flase file)
  105.      )
  106. ;;;(princ (strcat path "\" file "   减肥成功完成了\n"))
  107.   )
  108.            )
  109.            (alert "所选目录无 .dwg 文件!本程序将退出!")
  110.        )
  111.    )
  112.    (unload_dialog dcl_id)
  113.    (vlax-release-object DOC)
  114.    (vlax-release-object APP)
  115.    (princ)
  116. )
 楼主| 发表于 2004-4-27 16:18:00 | 显示全部楼层
  1. kr_pur:dialog{label="批量减肥             ";
  2. spacer;
  3. :text {           
  4.            label = "下面的文件夹内的所有.dwg文件均会进行减肥:";
  5.            fixed_width = true;
  6.            alignment = centered;
  7.              }
  8. spacer;
  9. :row{
  10. :edit_box {key="path";}
  11. :button{label="......";fixed_width = true;alignment = centered;key="krbrowse";}
  12.        }
  13. spacer;
  14. : row {                   // 定义 OK/Cancel 按钮行
  15.    : spacer { width = 1; }
  16.    : button {       // 定义 OK 按钮
  17.        label = "开始批量减肥";
  18.        is_default = true;
  19.        key = "accept";
  20.        width = 8;
  21.        fixed_width = true;
  22.    }
  23.    : button {       // 定义 Cancel 按钮
  24.        label = "退出本小程序";
  25.        is_cancel = true;
  26.        key = "cancel";
  27.        width = 8;
  28.        fixed_width = true;
  29.    }
  30.    : spacer { width = 1;} }
  31. }
 楼主| 发表于 2004-4-27 17:08:00 | 显示全部楼层
都不在呀
发表于 2004-4-28 12:02:00 | 显示全部楼层
(foreach FILE FILES
(setq WW (vla-open DOC (strcat PATH "\\" FILE))) ;By LUCAS ;|---------------你這段是操作目前圖檔-------------------
;;-----------------操作WW要用ActiveX--------------------
(setvar "cmdecho" 0)
(setq OLDVAR-FILEDIA (getvar "filedia"))
(setvar "filedia" 0)
(setq NAME (getvar "dwgname"))
(vl-cmdf "export" (strcat NEWPATH "\\" NAME))
(setvar "filedia" OLDVAR-FILEDIA)
;;------------------------------------------------------
|; (vla-close WW :vlax-false) ; By LUCAS
)
 楼主| 发表于 2004-4-28 12:26:00 | 显示全部楼层
龙兄,谢谢!


我把你的那段代码COPY过来用了一下,好像还是打不开文档,你再帮忙看看,谢谢了!!!
发表于 2004-4-29 11:35:00 | 显示全部楼层
(setq APP (vlax-get-acad-object))
(setq DOC (vla-get-documents APP)) ;By LUCAS
;;(vla-get-activedocument APP))
;;activedocument ->是作用中圖檔,要對圖檔集合(documents)操作
 楼主| 发表于 2004-4-29 14:32:00 | 显示全部楼层
谢谢龙兄!!! 文档打开了! 但(setq NAME (getvar "dwgname"))返回的是我最先打开的文档名,不是(setq WW (vla-open DOC (strcat PATH "\\" FILE))) 打开的FILE的文档名,并且WW没有激活,不是当前活动文档。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-28 00:12 , Processed in 0.150996 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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