honboo 发表于 2004-12-28 15:14:00

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

我要出图纸,大约200多张到300张,可是打印要一张一张的发,太耗时间!


                                       我把图框都作成了图块(图块名称相同)想用“SSGET”查找,然后得到每个图框的一对对顶角的坐标,再打印出来!或者前辈有何高见,请帮帮我!

BDYCAD 发表于 2004-12-28 15:48:00

波波, 在論壇里有這方面的程序. 你找找看看.

honboo 发表于 2004-12-28 16:10:00

我已经找过了,以前好象有的,现在可能过期了,找不到了!


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


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


                                                                       然后如何从这个变量里提取并得到各个块的控制点坐标

meflying 发表于 2004-12-28 16:23:00

;参数:BlkName——块名;输出:((左下角1 右上角1) (左下角2 右上角2) (左下角3 右上角3 ... );功能:取出了所有块的对角点,剩下的你自己做吧(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))
   )
   (setq ss (ssget "x" (list '(0 . "INSERT") (cons 2 BlkName))))
   (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
)

honboo 发表于 2004-12-28 16:37:00

感谢飞哥,要的就是这个,啥都甭缩了,鲜花一朵!

贱人 发表于 2005-1-30 00:12:00

能不能把程序写全啊,怎么实现自动选择图框对角打印

xshrimp 发表于 2005-2-2 16:14:00

希望高手能把这个程序,写完共享。!!万分感谢。

meflying 发表于 2005-2-3 09:06:00

;command部分需要自己修改,选择自己的打印机,打印方式,纸张大小等等


(defun Getpts(BlkName / ss i ent pts)<BR>       (defun GetBox(ent / pt1 pt2)<BR>                       (vla-getboundingbox (vlax-ename-&gt;vla-object ent) 'pt1 'pt2)<BR>                       (mapcar 'vlax-safearray-&gt;list (list pt1 pt2))<BR>       )<BR>       (if (= (type BlkName) 'STR)<BR>                       (setq ss (ssget "x" (list '(0 . "INSERT") (cons 2 BlkName))))<BR>                       (progn<BR>                                       (setq ss (ssadd))<BR>                                       (ssadd BlkName ss)<BR>                       )<BR>       )<BR>       (setq i 0)<BR>       (if ss<BR>                       (repeat (sslength ss)<BR>                                       (setq ent (ssname ss i))<BR>                                       (setq pts (append pts (list (GetBox ent))))<BR>                                       (setq i (1+ i))<BR>                       )<BR>       )<BR>       pts<BR>)


(defun c:Wplot( / BlkName plt pts i pt pt1 scale)<BR>       (vl-load-com)<BR>       (setq BlkName (getstring "输入块名&lt;Base&gt;:"))<BR>       (if (= BlkName "") (setq BlkName "base"))<BR>       (setq plt (car (entsel "选择图框&lt;全部&gt;...")))<BR>       (if plt (setq BlkName plt)) <BR>       (setq pts (GetPts BlkName))<BR>       (setq i 0)<BR>       (setvar "cmdecho" 0)<BR>       (repeat (length pts)<BR>                       (setq pt (nth i pts))<BR>                       (setq pt1 (cadr pt))<BR>                       (command "_.plot" "y" "Model" "RICOH_A4_Hor.pc3" "A4 (210 x 297 mm)"<BR>                                       "m" "l" "n" "w" pt1 pt "" "c" "n" "." "y" "a" "n" "y" "y")<BR>                       (setq i (1+ i))<BR>       )<BR>       (princ)<BR>)

贱人 发表于 2005-2-18 21:26:00

我按照lsp在cad用-plot模拟了一遍,可是输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: c这一步做不下去,不知道为何?


(command "_.plot" "y" "Model" "RICOH_A4_Hor.pc3" "A4 (210 x 297 mm)"<BR>                                       "m" "l" "n" "w" pt1 pt "" "c" "n" "." "y" "a" "n" "y" "y")


命令: -plot<BR>是否需要详细打印配置?[是(Y)/否(N)] &lt;否&gt;: y


输入布局名或 [?] &lt;模型&gt;:<BR>输入输出设备的名称或 [?] &lt;Epson Stylus COLOR 460 ESC/P 2&gt;:<BR>输入图纸尺寸或 [?] &lt;A4&gt;:<BR>输入图纸单位 [英寸(I)/毫米(M] &lt;毫米&gt;: m<BR>输入图形方向 [纵向(P)/横向(L)] &lt;横向&gt;: l<BR>是否反向打印?[是(Y)/否(N)] &lt;否&gt;:<BR>输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] &lt;显示&gt;: w<BR>输入窗口的左下角 &lt;0.000000,0.000000&gt;:<BR>输入窗口的右上角 &lt;0.000000,0.000000&gt;: 555555,5555<BR>输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] &lt;Fit&gt;: ?<BR>&lt;?&gt; 不是有效比例。<BR>输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] &lt;Fit&gt;:<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: c<BR>&lt;c&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: C<BR>&lt;C&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: ?<BR>&lt;?&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: c<BR>&lt;c&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: q<BR>&lt;q&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: w<BR>&lt;w&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: e<BR>&lt;e&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: r<BR>&lt;r&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: t<BR>&lt;t&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: y<BR>&lt;y&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: u<BR>&lt;u&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: i<BR>&lt;i&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: o<BR>&lt;o&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: p<BR>&lt;p&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: l<BR>&lt;l&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: k<BR>&lt;k&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: j<BR>&lt;j&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: h<BR>&lt;h&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: g<BR>&lt;g&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: f<BR>&lt;f&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: d<BR>&lt;d&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: s<BR>&lt;s&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: a<BR>&lt;a&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: z<BR>&lt;z&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: x<BR>&lt;x&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: c<BR>&lt;c&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: v<BR>&lt;v&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: b<BR>&lt;b&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: n<BR>&lt;n&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;: m<BR>&lt;m&gt; 不是有效偏移。<BR>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;0.00,0.00&gt;:<BR>是否按样式打印?[是(Y)/否(N)] &lt;是&gt;: ?


无效的选项关键字。<BR>是否按样式打印?[是(Y)/否(N)] &lt;是&gt;: n<BR>输入打印样式表名称或 [?] (输入 . 表示无) &lt;&gt;: .<BR>是否打印线宽?[是(Y)/否(N)] &lt;是&gt;:<BR>输入着色打印设置 [按显示(A)/线框(W)/消隐(H)/渲染(R)] &lt;按显示&gt;: a<BR>是否打印到文件 [是(Y)/否(N)] &lt;N&gt;: n<BR>是否保存对页面设置的更改 [是(Y)/否(N)]? &lt;N&gt; y<BR>是否继续打印?[是(Y)/否(N)] &lt;Y&gt;: y

贱人 发表于 2005-2-18 21:33:00

用lsp做也有个问题,"选择图框&lt;全部&gt;..."做到这一步,一点就出现很多未知命令“………”。按 F1 查看帮助。


我的图框块名是aa






WPLOT 输入块名&lt;Base&gt;:aa<BR>选择图框&lt;全部&gt;...未知命令“WPLOT”。按 F1 查看帮助。<BR>未知命令“C”。按 F1 查看帮助。<BR>未知命令“N”。按 F1 查看帮助。<BR>未知命令“WPLOT”。按 F1 查看帮助。<BR>未知命令“Y”。按 F1 查看帮助。<BR>未知命令“A”。按 F1 查看帮助。<BR>未知命令“Y”。按 F1 查看帮助。<BR>未知命令“Y”。按 F1 查看帮助。<BR>未知命令“Y”。按 F1 查看帮助。
页: [1] 2
查看完整版本: 请帮我编一个程序,谢谢!