明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1763|回复: 6

请教,为什么打印会取消呢?

[复制链接]
发表于 2009-9-28 16:34:00 | 显示全部楼层 |阅读模式

我在做dwg批量转tiff程序。请教下,怎样批量读取文件呢?

我的程序为什么在当运行到第二个文件就打印取消呢?但是第一个文件是可以打印的。请斑竹帮帮我吧。

  ....

  (if (and (setq DWG_DIR (CJW-FILE-GET "选择DWG文件夹")) ;;返回文件目录列表
    (setq DWG_LST (vl-directory-files DWG_DIR "*.dwg")) ;;列出目录中所有文件
      );;if 条件
      (progn
        (foreach DWG DWG_LST
        (if (setq ss(ssget "X"))  (command "._ERASE" ss ""))
  
        ;;炸开图块
        (setq DWG (strcat DWG_DIR "\\" DWG))
        (command ".-INSERT" DWG "0,0" "1" "1" "")
        (command "._ZOOM" "_E")
        (setq dwdmlist (ssget "X" '((0 . "INSERT"))))
        (command "_explode" dwdmlist )
      
        (setq plotFileName(vl-filename-base DWG));;获得原图名
            
        (DWT_TO_TIFF plotFileName);;处理打印函数
     );foreach
     
  );progn
);if

(defun DWT_TO_TIFF(dplotfilename / AcadObject AcadDocument mSpace layers)
 (vl-load-com)
  (ssget "x")
  (setq    AcadObject   (vlax-get-acad-object)
    AcadDocument (vla-get-ActiveDocument Acadobject)
    mSpace       (vla-get-ModelSpace Acaddocument)
    layers       (vla-get-layers AcadDocument)
  )
  (setq  
       ActiveLayout(vla-get-ActiveLayout ACadDocument);;取得配置对象
   )
  ;;; 从文件对象取得布局集合
  (setq layoutSel(vla-get-Layouts ACadDocument))
  (setq clayout(vla-item layoutSel "Layout1"))

  (vla-put-standardscale ActiveLayout acscaletofit)

  (vla-put-centerplot ActiveLayout :vlax-true)

  (setq bcextmin(getvar "extmin"));;存储图形范围左下角点的值
  (setq px1(car bcextmin))
  (setq py1(cadr bcextmin))

   (setq bcextmin(getvar "extmax"))
  (setq px2(car bcextmax))
  (setq py2(cadr bcextmax))
  
  (setq point1(vlax-make-safearray vlax-vbDouble '(0 . 1)))
  (vlax-safearray-fill point1 (list px1 py1))

  (setq point2(vlax-make-safearray vlax-vbDouble '(0 . 1)))
  (vlax-safearray-fill point2 (list px2 py2) )
  (vla-SetWindowToPlot ActiveLayout point1 point2)
 
  (vla-put-plottype ActiveLayout acWindow)
  (vla-Regen ACadDocument :vlax-true);;重新生成

  (vla-put-plotrotation ActiveLayout ac0degrees)
  (vla-put-StyleSheet ActiveLayout "monochrome.ctb")

  (setq fileSel (vla-get-Files preferenceSel))
  (vla-put-ConfigName clayout "TIFF Version 6(不压缩).pc3")
  (setq result (vla-PlotToFile (vla-get-Plot ACadDocument) dplotfilename))
)

发表于 2009-9-28 22:34:00 | 显示全部楼层

把选项里的后台打印的勾去掉

 楼主| 发表于 2009-10-9 11:51:00 | 显示全部楼层

没有用啊。直接运行,都是说打印取消。帮帮我吧。。

 楼主| 发表于 2009-10-9 17:06:00 | 显示全部楼层

现在出现新的情况了,如果自动执行的话,可以批量打印,如果直接执行的话,在打印完第一幅图后,第二幅图会报错“错误: Automation 错误。未提供说明。”,可是去追踪却没有错误。怎么办呢?帮帮我吧。

发表于 2009-10-9 17:28:00 | 显示全部楼层
只能是手动吧,me没有打过太多图纸
 楼主| 发表于 2009-10-14 15:11:00 | 显示全部楼层

 (setvar
 "BACKGROUNDPLOT"
 0)
后来看龙龙仔大虾的回帖,发现在打印的时候加上这句代码就可以了。

感谢龙龙仔大虾!

明经网友  发表于 2009-10-14 16:23:00
  1. ;;看你4樓不是解決了嗎?
  2. ;;未詳細測試(R2008)
  3. ;;DWG批量轉TIFF
  4. ;;BY LUCAS
  5. (defun C:TT (/   ACTIVELAYOUT   HOLDECHO
  6.       DOC  DWG_DIR     DWG_LST  PLOTFILENAME
  7.       SS
  8.      )
  9.   (vl-load-com)
  10.   (if (and
  11. (setq DWG_DIR
  12.         (acet-ui-pickdir
  13.    "DWG批量轉TIFF"
  14.    (vl-string-right-trim "\" (getvar "dwgprefix"))
  15.    "選擇目錄"
  16.         )
  17. )
  18. (setq DWG_LST (vl-directory-files DWG_DIR "*.dwg"))
  19.       )
  20.     (progn
  21.       (setq HOLDECHO (getvar "CMDECHO"))
  22.       (setvar "CMDECHO" 0)
  23.       (command "_.UNDO" "GROUP")
  24.       (setvar "BACKGROUNDPLOT" 0)
  25.       (setq DOC (vla-get-activedocument (vlax-get-acad-object)))
  26.       (setq ACTIVELAYOUT (vla-get-activelayout DOC))
  27.       (vla-put-standardscale ACTIVELAYOUT acscaletofit)
  28.       (vla-put-plottype ACTIVELAYOUT acextents)
  29.       (vla-put-centerplot ACTIVELAYOUT :vlax-true)
  30.       (vla-put-plotrotation ACTIVELAYOUT ac0degrees)
  31.       (vla-put-stylesheet ACTIVELAYOUT "monochrome.ctb")
  32.       (vla-put-configname ACTIVELAYOUT "TIFF 版本 6 (未壓縮).pc3");;我是繁體版,可能與你不同
  33.       (foreach DWG DWG_LST
  34. (if (setq SS (ssget "X"))
  35.    (command "._ERASE" SS "")
  36. )
  37. (setq DWG (strcat DWG_DIR "\" DWG))
  38. (command ".-INSERT" DWG "0,0" "1" "1" "")
  39. (command "._ZOOM" "_E")
  40. (setq PLOTFILENAME (vl-filename-base DWG))
  41. (vla-plottofile (vla-get-plot DOC) PLOTFILENAME)
  42.       )
  43.       (command "_.UNDO" "END")
  44.       (command "_.UNDO" 1)
  45.       (setvar "CMDECHO" HOLDECHO)
  46.     )
  47.   )
  48.   (vlax-release-object DOC)
  49.   (vlax-release-object ACTIVELAYOUT)
  50.   (princ)
  51. )
回复 支持 反对

使用道具

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

本版积分规则

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

GMT+8, 2024-10-1 17:31 , Processed in 0.159612 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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