丹霞岭 发表于 2014-12-2 17:39:31

请教!!!

下面是我编写的程序的一段
。。。。。
(setq ss(ssget "X"(list(cons 8 "MTK"))));构造选择集SS包含MTK层所有实体
(setq ss1(ssget "X"(list(cons 8 "ccc"))));构造选择集SS1包含ccc层所有实体
(command "_move" ss ss1 "" pp3 )
(command "draworder" ss "f")
。。。。。。。
运行到(command "draworder" ss "f")时,会出现“错误,函数被取消出错后推出”的提示,为什么会这样?我想使用"_move命令移动后让程序继续运行下去,但总会出错,如何改进?

crazylsp 发表于 2014-12-2 17:52:42

是不是用的CAD2013,order出错可能要重新载入acad2013doc.lsp。cui/lisp档案/右键/载入。

wowan3344 发表于 2014-12-2 19:04:16

建议贴一段完整的代码,好让别人帮你调试!

(command "_move" ss ss1 "" pp3 )这个算是运行完了吗?

把command 改为vl-cmdf可能方便找问题!

自贡黄明儒 发表于 2014-12-2 19:17:02

第二句ss后面是不是该加""表示选择完成?

菜卷鱼 发表于 2014-12-3 08:30:54

(command "_move" ss ss1 "" "指定基点"   "指定第二个点" ) ,你只指定了基点,没指定位移点

丹霞岭 发表于 2014-12-3 09:04:56

wowan3344 发表于 2014-12-2 19:04 static/image/common/back.gif
建议贴一段完整的代码,好让别人帮你调试!

(command "_move" ss ss1 "" pp3 )这个算是运行完了吗?


(defunc:cv()
   (setq p1(getpoint))
   (setq p2(getpoint))
   (coomand "line"p1 p2)
   (setq mx(entlast));直线p1、p2实体付给mx
   (setq pp1(getpoint))
   (setq pp2(getpoint))
   (coomand "line"pp1 pp2)
   (setq mxx(entlast));直线pp1、pp2实体付给mxx
(command "_move" mx mxx "" p1 );利用鼠标将两条直线段用move命令在屏幕上以p1为基点移动
                                 ;后,再继续运行后面的(command "draworder" ss "f")
                                                   ;到这里会出错,这里需要如何改动?
(command "draworder" ss "f")
)

wowan3344 发表于 2014-12-3 09:17:02

1、command有两处把此函数写错!
2、command line 这两处命令都没结束 ,应(command "line" p1 p2 "")
3、(command "_move" mx mxx "" p1 pause)
最后你的SS没有赋值如何继续运行后面的(command "draworder" ss "f")
且(command "draworder" ss "f")这句应该也有点问题。

丹霞岭 发表于 2014-12-3 10:26:28

wowan3344 发表于 2014-12-3 09:17 static/image/common/back.gif
1、command有两处把此函数写错!
2、command line 这两处命令都没结束 ,应(command "line" p1 p2 "")
3、 ...

(command "draworder" ss "f")这句应该也有点问题。是的,后来我改为(command "draworder" ss“” "f")就可以了。原来(command "_move" mx mxx "" p1 pause)中要用pause,问题解决了,thank you!!!!!!!!!
页: [1]
查看完整版本: 请教!!!