cadcailiao 发表于 2003-4-5 17:16:00

:(,这个问题怎么解决呢?“提示:AutoCAD命令嵌套不能超过4次”。。

下面的程序自动执行完前三个命令,但到dview命令时报错:Autocad命令嵌套不能超过4次,接着自动从AutoCAD中跳出,我该如何修改下面的程序呢?谢谢指点
(defun c:ft()
(command "_rotate3d" "all""" "z" "" "-45" "")
(command "_rotate3d" "all" "" "x" "" "-55" "")
(command "_copy" "all" "" "0,0,0""70,0,0" "")
(command "_dview" "all" "" "po" "35,0,0" "" "35,0,300" "" "d" "" "")
)

cadcailiao 发表于 2003-4-6 09:06:00

真不知怎么办好:4行程序每行都可单独执行,但4句一起就出错。

真不知怎么办好:下面4行程序每行都可单独执行,但4句一起就出错。有时认不出rotate3d命令,有时说AutoCAD命令嵌套不能超过4层,怎么办才好呢??(defun c:ft2()
(command "rotate3d" "all""" "z" "" "-45" "")
(command "_rotate3d" "all" "" "x" "" "-55" "")
(command "_copy" "all" "" "0,0,0""70,0,0" "")
(command "_dview" "all" "" "po" "35,0,0" "35,0,300" "d" "" "")
)

meflying 发表于 2003-4-6 17:09:00

rotate3d是外部定义命令,不能象内部定义命令那样用,查看帮助函数(rotatd3d...)

cadcailiao 发表于 2003-4-7 09:25:00

下面这些就是rotate3d的帮助文件(第二部分),从这里我看不出定义

下面这些就是rotate3d的帮助文件(第二部分),从这里我看不出定义外部命令和内部命令有什么区别啊?不过我倒是发现:如果先在命令行手工用一次rotate3d命令,那么lisp程序中的rotate3d语句就可以执行了。但不知如何修改才能定义该内部命令呢?请高手帮我改改这个程序(第一部分),谢谢!
(一)
(defun c:ft2()
(command "rotate3d" "all""" "z" "" "-45" "")
(command "_rotate3d" "all" "" "x" "" "-55" "")
(command "_copy" "all" "" "0,0,0""70,0,0" "")
(command "_dview" "all" "" "po" "35,0,0" "35,0,300" "d" "" "")
)

(二)
命令行:rotate3d

选择对象:使用一种对象选择方式并按 ENTER 键完成选择

指定轴上的第一个点或定义轴依据 [对象(O)/最近的(L)/视图(V)/X 轴(X)/Y 轴(Y)/Z 轴(Z)/两点(2)]:指定一点、输入一个选项或按 ENTER 键

选项:

第一点,两点
对象
最近的
视图
X 轴/Y 轴/Z 轴

alin 发表于 2003-4-7 10:26:00

It works properly in my AutoCAD 2002

龙龙仔 发表于 2003-4-7 10:47:00

为甚么会看不懂说明????它不是说得很清楚了吗????

以下Autocad帮助文件

相对于任意 3D 轴旋转对象(外部定义: geom3d ARX 应用程序)
(rotate3d args ...)

自变量

args

rotate3d 函数的顺序、数目及自变量类型与您在指令行输入该指令者相同;请参阅 ROTATE3D (在「指令参考手册」中)以取得更多的信息。
要表示空的响应 (使用者未指定任何值,按下 ENTER 键),请使用 nil 或空字符串 ("")。

传回值
如果成功,rotate3d 传回 T;否则它会传回nil。
范例
下列的范例以 p1 和 p2 指定的轴将选取的对象旋转 30 度。

(setq ss (ssget))

(rotate3d ss p1 p2 30)

AutoLISP 支持的 rotate3d 函数,使用 SAGET 资源库来实行。


为甚么会看不懂说明????它不是说得很清楚了吗????

(defun C:FT2 (/ SS)
(arxload "geom3d.ARX" NIL)
(setq SS (ssget "X"))
(rotate3d SS '(0 0 0) '(0 0 1) -45)
(rotate3d SS '(0 0 0) '(1 0 0) -55)
(command "_copy" "all" "" "0,0,0" "70,0,0")
(command "_dview" "all" "" "po" "35,0,0" "35,0,300" "d" "" "")
(princ)
)

cadcailiao 发表于 2003-4-7 12:33:00

:(,多谢龙大侠了,我前面是不清楚外部和内部定义命令的区别,以前没这样试过。

xjf 发表于 2013-1-1 23:33:48

   好,龙版主的回答精辟
页: [1]
查看完整版本: :(,这个问题怎么解决呢?“提示:AutoCAD命令嵌套不能超过4次”。。