- 积分
- 1183
- 明经币
- 个
- 注册时间
- 2010-6-15
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
各位前辈大虾们:
小弟了拼凑这么一个程序 ,主要的功能是
选择需要打印为eps文件的图层 ,
按层名输出为eps文件 ,
打印设置为调用上一次.
在本机电脑上没有问题,能够正确执行
按层名输出到D:\\My Documents\\ 目录下
但是给单位同事使用的时候结果大家都不能用,
不明白是哪里出了问题,
已经排除了CAD版本的因素 ,因为我的电脑AutoCAD04 09 都能正常执行 ,别人的都不能正常执行
怀疑过几个变量,cmddia等,也不是
在就是电脑windows设置的因素,好像也没什么太大的区别
实在是没辙了,想不出也没查出是 为什么
恳请前辈大虾们指教~
谢过~
如果有可能,请在帮小弟把打印时独立的图层恢复回去,
这个也没搞定,起先想调用09的图层恢复,没管用,
后来自己写了一下,说输入字符超出限制(因为图层很多,图层名很长)
谢了~
;;;17:49 2011-2-23
;主要是这里的问题
(defun dayin (tc) ;tc 为打出的文件名
(setq tc (strcat "D:\\My Documents\\" tc))
(command "-plot" "" "" "<上一次打印>" "" "y" tc "" "" "y")
)
(defun c:tt ( / ss n ent i xz xz1 xz2 cm xz3)
;这里就是独立图层,没啥
(if (or (= xz nil)(= xz 1))(setq xz1 "on" xz2 "off" xz3 "Y")
)
(princ "\n首选对象所在层将被置为当前")(princ)
(setq ss (ssget))
(setq n (sslength ss) i 0)
(command "layer" xz2 "*" xz3 "")
(repeat n
(setq ent (entget (ssname ss i)))
(setq i (+ i 1))
(setq cm (cdr (assoc 8 ent)))
(if (and (= i 1)(/= xz 2))(command "layer" "s" cm))
(if (/= i 1)(command xz1 cm))
)
(command "")
;这里就是检测当前显示的图层名设为变量 ,后面作为eps文件名,也没啥
(setq n 1)
(while (setq lay (tblnext "layer" (not lay)))
(if (> (cdr (assoc 62 lay)) 0)
(if (= n 1)
(progn (setq date (cdr (assoc 2 lay)) ) (setq n 2))
(setq date (strcat date "," (cdr (assoc 2 lay))) ))
))
(dayin date) ;data为图层列表
)
|
|