明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2819|回复: 7

command 调用命令 pause问题

[复制链接]
发表于 2008-4-2 04:19:00 | 显示全部楼层 |阅读模式

我想用lisp连续调用两个命令。具体代码

(defun c:mylc()
  (command "line" pause pause pause "c" )
  (command "circle" pause pause "c")
)


我的问题是,第一步我在画line的时候可能需要多于三次次的鼠标输入,怎么办?而且有可能不是line命令,其他的命令,选择的次数每次都是随机的,我也无法预先知道,也就是说没办法用循环预先构造一个string list。这种情况怎么处理?能否等一个命令执行完毕再执行下一个?

发表于 2008-4-2 06:35:00 | 显示全部楼层
(defun c:mylc()
  (command "line")
  (setq pt (getpoint "\n指定點:"))
  (command pt)
  (while (setq ptn (getpoint pt "\n指定點:"))
    (command ptn)
    (setq pt ptn)
  )
  (command "c")
(prin1)
)
 楼主| 发表于 2008-4-2 15:40:00 | 显示全部楼层
本帖最后由 作者 于 2008-4-2 15:48:31 编辑

多谢回复。

我的问题没有讲太清楚。这里第一个命令可能是line,也可能是别的命令,可能是其他的objectARX命令,甚至有可能弹出对话框。不一定只是简单的获取点,还可能是选取实体,输入文字等其他操作。这种情况怎么办?而且用while一定要等用户取消输入,可我希望是第一个命令在得到足够输入后自己结束。

本质上来说,我想达到的效果就象在命令行先敲一个命令,执行结束,再输入另外一个命令。比如第一个是block命令,第二个是其他命令,怎么处理?

AutoCAD其他的开发工具比如ARX, VBA提供相应的方法么?

发表于 2008-4-2 15:50:00 | 显示全部楼层
不同情况需要不同解决方案
 楼主| 发表于 2008-4-2 16:03:00 | 显示全部楼层

那如果针对block这种情况呢?有什么方案?

因为block这个有对话框,还可能选取block的元素,还可能选取block的原点,我想要得操作都在里面了。

其实我想要这种功能,第二个命令以第一个命令的输出为输入,而第一个命令可能是千变万化的。

 楼主| 发表于 2008-4-2 16:25:00 | 显示全部楼层

搞定啦

(defun c:mylc()
(command "block" )(while(>(getvar "cmdactive")0)(command pause))(command "circle")
)

发表于 2008-4-2 16:32:00 | 显示全部楼层

(command ".-block" <块名> <插入点> <选择集>)

先了解命令行的提示,并不是一点要用 pause,2 楼已经给你启示了,

第二个命令以第一个命令的输出为输入,而第一个命令可能是千变万化的

有时候可以根据系统变量 cmdactive 的当前值进行判断一个命令是否结束。

发表于 2013-10-18 17:43:08 | 显示全部楼层
f5612140 发表于 2008-4-2 06:35
(defun c:mylc()&nbsp; (command "line")&nbsp; (setq pt (getpoint "\n指定點:"))&nbsp; (command pt)&nbs ...

学习了         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 07:26 , Processed in 0.168083 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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