yinpengji 发表于 2008-4-2 04:19:00

command 调用命令 pause问题

<p>我想用lisp连续调用两个命令。具体代码</p><p>(defun c:mylc()<br/>&nbsp; (command "line" pause pause pause "c" )<br/>&nbsp; (command "circle" pause pause "c")<br/>)</p><p><br/>我的问题是,第一步我在画line的时候可能需要多于三次次的鼠标输入,怎么办?而且有可能不是line命令,其他的命令,选择的次数每次都是随机的,我也无法预先知道,也就是说没办法用循环预先构造一个string list。这种情况怎么处理?能否等一个命令执行完毕再执行下一个?</p>

f5612140 发表于 2008-4-2 06:35:00

(defun c:mylc()<br/>&nbsp; (command "line")<br/>&nbsp; (setq pt (getpoint "\n指定點:"))<br/>&nbsp; (command pt)<br/>&nbsp; (while (setq ptn (getpoint pt "\n指定點:"))<br/>&nbsp;&nbsp;&nbsp; (command ptn)<br/>&nbsp;&nbsp;&nbsp; (setq pt ptn)<br/>&nbsp; )<br/>&nbsp; (command "c")<br/>(prin1) <br/>)

yinpengji 发表于 2008-4-2 15:40:00

本帖最后由 作者 于 2008-4-2 15:48:31 编辑 <br /><br /> <p>多谢回复。</p><p>我的问题没有讲太清楚。这里第一个命令可能是line,也可能是别的命令,可能是其他的objectARX命令,甚至有可能弹出对话框。不一定只是简单的获取点,还可能是选取实体,输入文字等其他操作。这种情况怎么办?而且用while一定要等用户取消输入,可我希望是第一个命令在得到足够输入后自己结束。</p><p>本质上来说,我想达到的效果就象在命令行先敲一个命令,执行结束,再输入另外一个命令。比如第一个是block命令,第二个是其他命令,怎么处理?</p><p>AutoCAD其他的开发工具比如ARX, VBA提供相应的方法么?</p>

caoyin 发表于 2008-4-2 15:50:00

不同情况需要不同解决方案

yinpengji 发表于 2008-4-2 16:03:00

<p>那如果针对block这种情况呢?有什么方案?</p><p>因为block这个有对话框,还可能选取block的元素,还可能选取block的原点,我想要得操作都在里面了。</p><p>其实我想要这种功能,第二个命令以第一个命令的输出为输入,而第一个命令可能是千变万化的。</p>

yinpengji 发表于 2008-4-2 16:25:00

<p>搞定啦</p><p>(defun c:mylc()<br/>(command "block" )(while(&gt;(getvar "cmdactive")0)(command pause))(command "circle") <br/>)</p>

caoyin 发表于 2008-4-2 16:32:00

<p>(command ".-block" &lt;块名&gt; &lt;插入点&gt;&nbsp;&lt;选择集&gt;)</p><p>先了解命令行的提示,并不是一点要用 pause,2 楼已经给你启示了,</p><p>第二个命令以第一个命令的输出为输入,而第一个命令可能是千变万化的</p><p>有时候可以根据系统变量 cmdactive 的当前值进行判断一个命令是否结束。</p>

davide888 发表于 2013-10-18 17:43:08

f5612140 发表于 2008-4-2 06:35 static/image/common/back.gif
(defun c:mylc()&nbsp; (command "line")&nbsp; (setq pt (getpoint "\n指定點:"))&nbsp; (command pt)&nbs ...

学习了         
页: [1]
查看完整版本: command 调用命令 pause问题