nameld001 发表于 2009-10-22 20:15:00

请问关于vla-sendcommand 迟后LISP的问题(已解决)

本帖最后由 作者 于 2009-10-22 20:47:03 编辑 <br /><br /> <p>(defun c:test()<br/>&nbsp; (setq ss(ssget '((0 . "line")(62 . 4))))<br/>&nbsp; (setq i 0)<br/>&nbsp; (setq acdocument(vla-get-activedocument(vlax-get-acad-object)))<br/>&nbsp; (while (&lt; i (sslength ss))<br/>&nbsp;&nbsp;&nbsp; (setq ent(ssname ss i))<br/>&nbsp;&nbsp;&nbsp; (setq pt(cdr(assoc 10(entget ent))))<br/>&nbsp;&nbsp;&nbsp; (setq pts(mapcar '+ pt '(297 -210 0)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ss1(ssget "w" pt pts))<br/>&nbsp;&nbsp;&nbsp; (command "copy" sss)<br/>&nbsp;&nbsp;&nbsp; (vla-sendcommand acdocument "-plot\ry\r\r\\\\A1\\hp LaserJet 1015\rA4\rm\rL\rn\rw\r(setq pt pt)\r(setq pts pts)\r1:1\r\r\r\r<br/>&nbsp;&nbsp;&nbsp; ")<br/>&nbsp;&nbsp;&nbsp; (setq i(1+ i))<br/>&nbsp;&nbsp;&nbsp; (princ "\n坐标")<br/>&nbsp;&nbsp;&nbsp; (princ pt)<br/>&nbsp;&nbsp;&nbsp; (princ "\n")<br/>)<br/>&nbsp; (princ)<br/>&nbsp; )</p><p>命令记录如下</p><p>命令: test<br/>选择对象: 指定对角点: 找到 8 个<br/>已滤除 6 个。<br/>选择对象:<br/>copy<br/>选择对象:<br/>命令:<br/>坐标(4879.49 215.189 0.0)<br/>copy<br/>选择对象:<br/>命令:<br/>坐标(5196.49 215.189 0.0)<br/>命令: -plot<br/>是否需要详细打印配置?[是(Y)/否(N)] &lt;否&gt;: y<br/>输入布局名或 [?] &lt;模型&gt;:<br/>输入输出设备的名称或 [?] &lt;<a href="file://A1/hp">\\A1\hp</a> LaserJet 1015&gt;: <a href="file://A1/hp">\\A1\hp</a> LaserJet 1015<br/>输入图纸尺寸或 [?] &lt;A4&gt;: A4<br/>输入图纸单位 [英寸(I)/毫米(M] &lt;毫米&gt;: m<br/>输入图形方向 [纵向(P)/横向(L)] &lt;横向&gt;: L<br/>是否反向打印?[是(Y)/否(N)] &lt;否&gt;: n<br/>输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] &lt;窗口&gt;: w<br/>输入窗口的左下角 &lt;5196.490452,5.189034&gt;: (setq pt pt)<br/>(5196.49 215.189 0.0)<br/>输入窗口的右上角 &lt;5493.490452,215.189034&gt;: (setq pts pts)<br/>(5493.49 5.18903 0.0)<br/>输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] &lt;1:1&gt;: 1:1<br/>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;Center&gt;:<br/>是否按样式打印?[是(Y)/否(N)] &lt;是&gt;:<br/>输入打印样式表名称或 [?] (输入 . 表示无) &lt;Monochrome.ctb&gt;:<br/>是否打印线宽?[是(Y)/否(N)] &lt;是&gt;:<br/>是否删除隐藏线?[是(Y)/否(N)] &lt;否&gt;:&nbsp; 是否打印到文件 [是(Y)/否(N)] &lt;N&gt;:&nbsp; <br/>是否保存模型选项卡的修改 [是(Y)/否(N)]? &lt;N&gt;&nbsp; 是否继续打印?[是(Y)/否(N)] &lt;Y&gt;:&nbsp; <br/>有效打印区域:&nbsp; 200.26 宽 X 283.99 高<br/>正在打印视口 2。<br/>命令: -plot<br/>是否需要详细打印配置?[是(Y)/否(N)] &lt;否&gt;: y<br/>输入布局名或 [?] &lt;模型&gt;:<br/>输入输出设备的名称或 [?] &lt;<a href="file://A1/hp">\\A1\hp</a> LaserJet 1015&gt;: <a href="file://A1/hp">\\A1\hp</a> LaserJet 1015<br/>输入图纸尺寸或 [?] &lt;A4&gt;: A4<br/>输入图纸单位 [英寸(I)/毫米(M] &lt;毫米&gt;: m<br/>输入图形方向 [纵向(P)/横向(L)] &lt;横向&gt;: L<br/>是否反向打印?[是(Y)/否(N)] &lt;否&gt;: n<br/>输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] &lt;窗口&gt;: w<br/>输入窗口的左下角 &lt;5196.490452,5.189034&gt;: (setq pt pt)<br/>(5196.49 215.189 0.0)<br/>输入窗口的右上角 &lt;5493.490452,215.189034&gt;: (setq pts pts)<br/>(5493.49 5.18903 0.0)<br/>输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] &lt;1:1&gt;: 1:1<br/>输入打印偏移 (x,y) 或 [居中打印(C)] &lt;Center&gt;:<br/>是否按样式打印?[是(Y)/否(N)] &lt;是&gt;:<br/>输入打印样式表名称或 [?] (输入 . 表示无) &lt;Monochrome.ctb&gt;:<br/>是否打印线宽?[是(Y)/否(N)] &lt;是&gt;:<br/>是否删除隐藏线?[是(Y)/否(N)] &lt;否&gt;:&nbsp; 是否打印到文件 [是(Y)/否(N)] &lt;N&gt;:&nbsp; <br/>是否保存模型选项卡的修改 [是(Y)/否(N)]? &lt;N&gt;&nbsp; 是否继续打印?[是(Y)/否(N)] &lt;Y&gt;:&nbsp; <br/>有效打印区域:&nbsp; 200.26 宽 X 283.99 高<br/>正在打印视口 2。</p><p>打印都在(setq i(1+ i))之后执行,是不对的,请问有什么办法解决没有,由不用用command</p><p></p>

nameld001 发表于 2009-10-22 20:46:00

<p>问题已解决!</p><p>(defun c:test()<br/>&nbsp; (setq ss(ssget '((0 . "line")(62 . 4))))<br/>&nbsp; (setq i 0)<br/>&nbsp; (setq acdocument(vla-get-activedocument(vlax-get-acad-object)))<br/>&nbsp; (repeat (sslength ss)<br/>&nbsp;&nbsp;&nbsp; (vla-sendcommand acdocument "(setq ent(ssname ss i)) ")<br/>(vla-sendcommand acdocument "(setq pt(cdr(assoc 10(entget ent)))) ")<br/>&nbsp;&nbsp; (vla-sendcommand acdocument "(setq pts(mapcar '+ pt '(297 -210 0))) ")<br/>&nbsp;&nbsp;&nbsp; (vla-sendcommand acdocument "(setq ss1(ssget \"w\" pt pts)) ")<br/>&nbsp;&nbsp;&nbsp; (vla-sendcommand acdocument "-plot\ry\r\r\\\\A1\\hp LaserJet 1015\rA4\rm\rL\rn\rw\r(setq pt pt)\r(setq pts pts)\r1:1\r\r\r\r<br/>&nbsp;&nbsp;&nbsp; ")<br/>&nbsp;&nbsp;&nbsp; ;(vla-sendcommand acdocument "HT_ZDDYFT (setq sss ss1)&nbsp; 10 10 ")<br/>&nbsp;&nbsp;&nbsp; (vla-sendcommand acdocument "(setq i(1+ i)) ")<br/>)<br/>&nbsp; (princ)<br/>&nbsp; )</p><p>全部用vla-sendcommand </p>

飞诗(fsxm) 发表于 2009-10-22 20:50:00

<p>上面的程序获得:年度最奇怪程序</p><p>你为啥就不用command哈?</p>

nameld001 发表于 2009-10-22 21:10:00

<p>版主,你不要笑,其中是有迷迷的</p><p>命令用plot只是为了方便大家帮我看,原型是(vla-sendcommand acdocument "HT_ZDDYFT (setq sss ss1)&nbsp; 10 10 ")</p><p>HT_ZDDYFT 是一个软件里的命令,如果用了command就出现的四层嵌套错误,请把你话收回,不然你这个版主就不称值!</p>

aicr317 发表于 2009-11-25 13:49:00

非常好

tyxdd 发表于 2009-11-29 19:49:00

<p>年少轻狂&nbsp; 少年气盛</p>

teykmcqh 发表于 2011-7-6 17:12:38

我正碰到command就出现的四层嵌套错误的问题,希望能对我有所帮助!
页: [1]
查看完整版本: 请问关于vla-sendcommand 迟后LISP的问题(已解决)