明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3502|回复: 11

请帮我编一个程序,谢谢!

  [复制链接]
发表于 2004-12-28 15:14 | 显示全部楼层 |阅读模式
我要出图纸,大约200多张到300张,可是打印要一张一张的发,太耗时间!


                                         我把图框都作成了图块(图块名称相同)想用“SSGET”查找,然后得到每个图框的一对对顶角的坐标,再打印出来!或者前辈有何高见,请帮帮我!
发表于 2004-12-28 15:48 | 显示全部楼层
波波, 在論壇里有這方面的程序. 你找找看看.
 楼主| 发表于 2004-12-28 16:10 | 显示全部楼层
我已经找过了,以前好象有的,现在可能过期了,找不到了!


其实我的关键问题还是在“ssget”搜寻N个块,再存入一个变量!


问题:可以把所有的块名都存入同一变量(即使块名相同)


                                                                         然后如何从这个变量里提取并得到各个块的控制点坐标
发表于 2004-12-28 16:23 | 显示全部楼层
;参数:BlkName——块名;输出:((左下角1 右上角1) (左下角2 右上角2) (左下角3 右上角3 ... );功能:取出了所有块的对角点,剩下的你自己做吧
  1. (defun Getpts(BlkName / ss i ent pts)
  2.    (defun GetBox(ent / pt1 pt2)
  3.        (vla-getboundingbox (vlax-ename->vla-object ent) 'pt1 'pt2)
  4.        (mapcar 'vlax-safearray->list (list pt1 pt2))
  5.    )
  6.    (setq ss (ssget "x" (list '(0 . "INSERT") (cons 2 BlkName))))
  7.    (setq i 0)
  8.    (if ss
  9.        (repeat (sslength ss)
  10.            (setq ent (ssname ss i))
  11.            (setq pts (append pts (list (GetBox ent))))
  12.            (setq i (1+ i))
  13.        )
  14.    )
  15.    pts
  16. )
 楼主| 发表于 2004-12-28 16:37 | 显示全部楼层
感谢飞哥,要的就是这个,啥都甭缩了,鲜花一朵!
发表于 2005-1-30 00:12 | 显示全部楼层
能不能把程序写全啊,怎么实现自动选择图框对角打印
发表于 2005-2-2 16:14 | 显示全部楼层
希望高手能把这个程序,写完共享。!!万分感谢。
发表于 2005-2-3 09:06 | 显示全部楼层
;command部分需要自己修改,选择自己的打印机,打印方式,纸张大小等等 (defun Getpts(BlkName / ss i ent pts)
(defun GetBox(ent / pt1 pt2)
(vla-getboundingbox (vlax-ename->vla-object ent) 'pt1 'pt2)
(mapcar 'vlax-safearray->list (list pt1 pt2))
)
(if (= (type BlkName) 'STR)
(setq ss (ssget "x" (list '(0 . "INSERT") (cons 2 BlkName))))
(progn
(setq ss (ssadd))
(ssadd BlkName ss)
)
)
(setq i 0)
(if ss
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq pts (append pts (list (GetBox ent))))
(setq i (1+ i))
)
)
pts
) (defun c:Wplot( / BlkName plt pts i pt pt1 scale)
(vl-load-com)
(setq BlkName (getstring "输入块名<Base>:"))
(if (= BlkName "") (setq BlkName "base"))
(setq plt (car (entsel "选择图框<全部>...")))
(if plt (setq BlkName plt))
(setq pts (GetPts BlkName))
(setq i 0)
(setvar "cmdecho" 0)
(repeat (length pts)
(setq pt (nth i pts))
(setq pt1 (cadr pt))
(command "_.plot" "y" "Model" "RICOH_A4_Hor.pc3" "A4 (210 x 297 mm)"
"m" "l" "n" "w" pt1 pt "" "c" "n" "." "y" "a" "n" "y" "y")
(setq i (1+ i))
)
(princ)
)
发表于 2005-2-18 21:26 | 显示全部楼层
我按照lsp在cad用-plot模拟了一遍,可是输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c这一步做不下去,不知道为何? (command "_.plot" "y" "Model" "RICOH_A4_Hor.pc3" "A4 (210 x 297 mm)"
"m" "l" "n" "w" pt1 pt "" "c" "n" "." "y" "a" "n" "y" "y")
命令: -plot
是否需要详细打印配置?[是(Y)/否(N)] <否>: y 输入布局名或 [?] <模型>:
输入输出设备的名称或 [?] <Epson Stylus COLOR 460 ESC/P 2>:
输入图纸尺寸或 [?] <A4>:
输入图纸单位 [英寸(I)/毫米(M] <毫米>: m
输入图形方向 [纵向(P)/横向(L)] <横向>: l
是否反向打印?[是(Y)/否(N)] <否>:
输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] <显示>: w
输入窗口的左下角 <0.000000,0.000000>:
输入窗口的右上角 <0.000000,0.000000>: 555555,5555
输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <Fit>: ?
<?> 不是有效比例。
输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <Fit>:
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c
<c> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: C
<C> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: ?
<?> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c
<c> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: q
<q> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: w
<w> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: e
<e> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: r
<r> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: t
<t> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: y
<y> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: u
<u> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: i
<i> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: o
<o> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: p
<p> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: l
<l> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: k
<k> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: j
<j> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: h
<h> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: g
<g> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: f
<f> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: d
<d> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: s
<s> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: a
<a> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: z
<z> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: x
<x> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: c
<c> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: v
<v> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: b
<b> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: n
<n> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>: m
<m> 不是有效偏移。
输入打印偏移 (x,y) 或 [居中打印(C)] <0.00,0.00>:
是否按样式打印?[是(Y)/否(N)] <是>: ? 无效的选项关键字。
是否按样式打印?[是(Y)/否(N)] <是>: n
输入打印样式表名称或 [?] (输入 . 表示无) <>: .
是否打印线宽?[是(Y)/否(N)] <是>:
输入着色打印设置 [按显示(A)/线框(W)/消隐(H)/渲染(R)] <按显示>: a
是否打印到文件 [是(Y)/否(N)] <N>: n
是否保存对页面设置的更改 [是(Y)/否(N)]? <N> y
是否继续打印?[是(Y)/否(N)] <Y>: y
发表于 2005-2-18 21:33 | 显示全部楼层
用lsp做也有个问题,"选择图框<全部>..."做到这一步,一点就出现很多未知命令“………”。按 F1 查看帮助。 我的图框块名是aa WPLOT 输入块名<Base>:aa
选择图框<全部>...未知命令“WPLOT”。按 F1 查看帮助。
未知命令“C”。按 F1 查看帮助。
未知命令“N”。按 F1 查看帮助。
未知命令“WPLOT”。按 F1 查看帮助。
未知命令“Y”。按 F1 查看帮助。
未知命令“A”。按 F1 查看帮助。
未知命令“Y”。按 F1 查看帮助。
未知命令“Y”。按 F1 查看帮助。
未知命令“Y”。按 F1 查看帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 02:40 , Processed in 0.266536 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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