明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4551|回复: 9

布局的批量打印程序-很好用,但还缺一点点

[复制链接]
发表于 2011-11-5 09:26 | 显示全部楼层 |阅读模式
本帖最后由 逐月飞鸿 于 2011-11-5 09:43 编辑

;;;把所有布局出图;;;;;;程序设计:lfs;hnrbi;;;2011.11.04;;---------------;;;
(defun C:bj (/ N PLO_LAYOUTS PLO_LAYOUTL)
(command "_.layout" "delete" "Layout1")
;del掉原来大师多余的布局
; -取得注册表中默认打印机--------------------------------------------------------
  (defun defultprint (/ device)
    (substr (setq device
     (vl-registry-read
       "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
       "Device"
     ) ;_ 结束vl-registry-read
     ) ;_ 结束setq
     1
     (vl-string-search "," device)
    ) ;_ 结束substr
  ) ;_ 结束defun
; ==取得注册表中默认打印机end========================================================
  (command ".ucs" "W")
  (command "setvar" "dimzin" "0")
  (command "setvar" "DYNMODE" "0")
  (setq myprint (defultprint))
  (setq ctb_type "monochrome.ctb")
  (command "osnap" "off")
  (vl-load-com) ;==================================

;取得打印纸张打印
  (setq papersc (getstring "\n出图大小A3[3]/A4[4]:<A3>"))
  (setq scale "unknow")
  (if (or (= papersc "") (= papersc "3"))
    (setq scale 1)
    (setq scale 0.707)
  ) ;_ 结束if
  (if (or (= papersc "") (= papersc "3"))
    (setq paper "A3")
    (setq paper "A4")
  ) ;_ 结束if
  (setq printtype (getstring "\n打印全部布局[A]/当前布局[D]:<A>"))
  (setq printt "unknow")
  (setq PLO_LAYOUTS (LAYOUTLIST))
  (setq PLO_LAYOUTSL (length PLO_LAYOUTS))
  (setq N 0)
  (if (or (= printtype "") (= printtype "A") (= printtype "a"))
        ((repeat PLO_LAYOUTSL
      (command ".plot"
        "y"
        (nth N PLO_LAYOUTS)
        myprint
        paper
        "M"
        "L"
        ""
        "L"
        scale
        ""
;;;输入打印偏移 (x,y) <0.00,0.00>:
        "Y"
        ctb_type
        ""
        ""
        ""
        ""
        ""
        ""
        ""
      ) ;_ 结束command
      (setq N (1+ N))
    ) );_ 结束repeat)
    (打印当前布局语句,抽空再完善)
  ) ;_ 结束if
; ==============================================================================
  (princ)
) ;_ 结束defun

上面是昨天抽空改写的一段批量打印布局的程序;很好用,自动完成了页面设置和打印机的自动获取;
但是,美中不足的地方:
1.用lisp怎样获取当前的布局名称,并且只打印当前布局的语句,请高人给指点一下;
2.对于layout1不打印,现在采取的是删除的办法,这个感觉不是很好,采用什么方法不删除,但是确不打印layout1?
就是说,只有一个layout1名称的布局时候,就不打印了,但是也不删除layout1?
请lisp高人给完善一下,先谢!
3.有没有办法实现,打开的文档都执行一下这个命令?就是说输入bj后,打开的文档都打印布局?




本帖被以下淘专辑推荐:

发表于 2011-11-5 13:49 | 显示全部楼层
不错,值得学习
发表于 2011-11-5 14:50 | 显示全部楼层
获取当前的布局名称:(getvar "ctab")
个人认为布局的批量打印适用性很低,远不如在模型空间中的批量打印有用。出几张图就不用编程了,直接用CAD的打印命令好了。
发表于 2011-11-5 20:53 | 显示全部楼层
布局CAD就自带有打印程序,但是不支持一个布局中有很多图的情况。但写程序来打印还是很有用的,值得学习
 楼主| 发表于 2011-11-7 08:26 | 显示全部楼层
能不能有大侠给完善一下?获取当前的布局名称:(getvar "ctab")
个人认为布局的批量打印适用性很低,远不如在模型空间中的批量打印有用。出几张图就不用编程了,直接用CAD的打印命令好了。
这个改怎么继续?
 楼主| 发表于 2011-11-8 08:35 | 显示全部楼层
人呢?请高人指点
发表于 2011-12-29 05:04 | 显示全部楼层
批量布局打印的效果应该是:不打开文件,自动打印当前路径里所有文件的所有布局。前提是每个文件的布局及打印格式全部设置好的,平时cad下手工打印也仅仅是 布局---ctrl p---回车就能出图。至于份数我觉得不重要。再运行程序也不难。因为99%的工作都自动化了。
这样的程序其实意义很大。可以一次性出整套图纸。我正在做个程序。希望多给建议。
发表于 2011-12-29 09:40 | 显示全部楼层
还真很少用布局打印,...
支持..
发表于 2011-12-29 12:14 | 显示全部楼层
建议用图纸集
发表于 2013-9-22 21:56 | 显示全部楼层
谁有模型空间的批量打印程序呀!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 18:21 , Processed in 0.248486 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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