明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2804|回复: 6

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

[复制链接]
发表于 2009-10-22 20:15:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-10-22 20:47:03 编辑

(defun c:test()
  (setq ss(ssget '((0 . "line")(62 . 4))))
  (setq i 0)
  (setq acdocument(vla-get-activedocument(vlax-get-acad-object)))
  (while (< i (sslength ss))
    (setq ent(ssname ss i))
    (setq pt(cdr(assoc 10(entget ent))))
    (setq pts(mapcar '+ pt '(297 -210 0)))
     (setq ss1(ssget "w" pt pts))
    (command "copy" sss)
    (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
    ")
    (setq i(1+ i))
    (princ "\n坐标")
    (princ pt)
    (princ "\n")
)
  (princ)
  )

命令记录如下

命令: test
选择对象: 指定对角点: 找到 8 个
已滤除 6 个。
选择对象:
copy
选择对象:
命令:
坐标(4879.49 215.189 0.0)
copy
选择对象:
命令:
坐标(5196.49 215.189 0.0)
命令: -plot
是否需要详细打印配置?[是(Y)/否(N)] <否>: y
输入布局名或 [?] <模型>:
输入输出设备的名称或 [?] <\\A1\hp LaserJet 1015>: \\A1\hp LaserJet 1015
输入图纸尺寸或 [?] <A4>: A4
输入图纸单位 [英寸(I)/毫米(M] <毫米>: m
输入图形方向 [纵向(P)/横向(L)] <横向>: L
是否反向打印?[是(Y)/否(N)] <否>: n
输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] <窗口>: w
输入窗口的左下角 <5196.490452,5.189034>: (setq pt pt)
(5196.49 215.189 0.0)
输入窗口的右上角 <5493.490452,215.189034>: (setq pts pts)
(5493.49 5.18903 0.0)
输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <1:1>: 1:1
输入打印偏移 (x,y) 或 [居中打印(C)] <Center>:
是否按样式打印?[是(Y)/否(N)] <是>:
输入打印样式表名称或 [?] (输入 . 表示无) <Monochrome.ctb>:
是否打印线宽?[是(Y)/否(N)] <是>:
是否删除隐藏线?[是(Y)/否(N)] <否>:  是否打印到文件 [是(Y)/否(N)] <N>: 
是否保存模型选项卡的修改 [是(Y)/否(N)]? <N>  是否继续打印?[是(Y)/否(N)] <Y>: 
有效打印区域:  200.26 宽 X 283.99 高
正在打印视口 2。
命令: -plot
是否需要详细打印配置?[是(Y)/否(N)] <否>: y
输入布局名或 [?] <模型>:
输入输出设备的名称或 [?] <\\A1\hp LaserJet 1015>: \\A1\hp LaserJet 1015
输入图纸尺寸或 [?] <A4>: A4
输入图纸单位 [英寸(I)/毫米(M] <毫米>: m
输入图形方向 [纵向(P)/横向(L)] <横向>: L
是否反向打印?[是(Y)/否(N)] <否>: n
输入打印区域 [显示(D)/范围(E)/图形界限(L)/视图(V)/窗口(W)] <窗口>: w
输入窗口的左下角 <5196.490452,5.189034>: (setq pt pt)
(5196.49 215.189 0.0)
输入窗口的右上角 <5493.490452,215.189034>: (setq pts pts)
(5493.49 5.18903 0.0)
输入打印比例 (打印的 毫米=图形单位) 或 [布满(F)] <1:1>: 1:1
输入打印偏移 (x,y) 或 [居中打印(C)] <Center>:
是否按样式打印?[是(Y)/否(N)] <是>:
输入打印样式表名称或 [?] (输入 . 表示无) <Monochrome.ctb>:
是否打印线宽?[是(Y)/否(N)] <是>:
是否删除隐藏线?[是(Y)/否(N)] <否>:  是否打印到文件 [是(Y)/否(N)] <N>: 
是否保存模型选项卡的修改 [是(Y)/否(N)]? <N>  是否继续打印?[是(Y)/否(N)] <Y>: 
有效打印区域:  200.26 宽 X 283.99 高
正在打印视口 2。

打印都在(setq i(1+ i))之后执行,是不对的,请问有什么办法解决没有,由不用用command

 楼主| 发表于 2009-10-22 20:46:00 | 显示全部楼层

问题已解决!

(defun c:test()
  (setq ss(ssget '((0 . "line")(62 . 4))))
  (setq i 0)
  (setq acdocument(vla-get-activedocument(vlax-get-acad-object)))
  (repeat (sslength ss)
    (vla-sendcommand acdocument "(setq ent(ssname ss i)) ")
(vla-sendcommand acdocument "(setq pt(cdr(assoc 10(entget ent)))) ")
   (vla-sendcommand acdocument "(setq pts(mapcar '+ pt '(297 -210 0))) ")
    (vla-sendcommand acdocument "(setq ss1(ssget \"w\" pt pts)) ")
    (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
    ")
    ;(vla-sendcommand acdocument "HT_ZDDYFT (setq sss ss1)  10 10 ")
    (vla-sendcommand acdocument "(setq i(1+ i)) ")
)
  (princ)
  )

全部用vla-sendcommand

发表于 2009-10-22 20:50:00 | 显示全部楼层

上面的程序获得:年度最奇怪程序

你为啥就不用command哈?

 楼主| 发表于 2009-10-22 21:10:00 | 显示全部楼层

版主,你不要笑,其中是有迷迷的

命令用plot只是为了方便大家帮我看,原型是(vla-sendcommand acdocument "HT_ZDDYFT (setq sss ss1)  10 10 ")

HT_ZDDYFT 是一个软件里的命令,如果用了command就出现的四层嵌套错误,请把你话收回,不然你这个版主就不称值!

发表于 2009-11-25 13:49:00 | 显示全部楼层
非常好
发表于 2009-11-29 19:49:00 | 显示全部楼层

年少轻狂  少年气盛

发表于 2011-7-6 17:12:38 | 显示全部楼层
我正碰到command就出现的四层嵌套错误的问题,希望能对我有所帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-25 10:40 , Processed in 0.179413 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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