受控视口平移Lisp
有人知道为什么我得到了一个糟糕的函数:0错误吗?(defun c:rf (/ vp dir dis vpn pdr dms vc1 vx1 vy1 vz1 vc2 vx2 vy2 vz2)
(command "zoom" "w" "-0.5,-0.5" "11,8.5")
(setq vp(getstring "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
(setq dir (getstring "\nWhich direction would you like to pan the viewport?<Up(U), Down(D), Left(L), Right(R)>: "))
(setq dis (getreal "\nHow far would you like to pan the viewport? "))
(setq vpn (if (= vp "Top") (2)
(if (= vp "T") (2)
(if (= vp "Front") (5)
(if (= vp "F") (5)
(if (= vp "Right") (4)
(if (= vp "R") (4)
(0))))))))
(setq pdr (if (= dir "Up") ("Up")
(if (= dir "U") ("Up")
(if (= dir "Down") ("Do")
(if (= dir "D") ("Do")
(if (= dir "Left") ("Le")
(if (= dir "L") ("Le")
(if (= dir "Right") ("Ri")
(if (= dir "R") ("Ri"))))))))))
(setq dms (getvar "dimlfac"))
(if (= vpn 2) (if (= dir "Up")
(progn
(command "_.mspace")
(setvar "cvport" vpn)
(command "ucs" "top")
(setq vc1 (getvar "viewctr"))
(setq vx1 (car vc1))
(setq vy1 (cadr vc1))
(setq vz1 (caddr vc1))
(setq vy2 (+ vy1 (* dis dms)))
(setq vc2 '(vx1 vy2 vz1))
(setvar "viewctr" vc2))
)
)
) Autolisp需要在(
a(后面的整数是不可接受的,因此会出现错误
你可能想看看你的其他帖子。 我去掉了那个错误,现在我得到了“nil”和命令行,当我在命令行中键入“!vp”以查看它是否为get nil中的“vp”变量赋值。有什么想法吗? 我建议您研究getkword函数 哈哈,不喜欢我所有的if-then函数吗?我会调查的。 由于您将所有变量声明为局部变量,因此当您退出例程时,变量将重置为之前的值。在调试例程时,您可能不希望声明变量。您可能还需要考虑使用Vlide和Watch工具。
那么,最好在重要的地方使用IF语句,允许用户输入为空 此外,我认为VIEWCTR是一个只读系统变量。我认为您必须使用缩放命令-大卫 大卫-打得好,谢谢。
Lee-我对initget/getkword函数有问题。你能把其中两个排成一行吗
是的,这不会引起问题。
但是,还要注意initget可以使用的位代码。当前在您的设置中,如果用户点击enter,getkword将返回nil。因此,您可能需要使用:
(initget 1 "Top Front Right")
(setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
您是在代码编辑程序(例如Visual LISP编辑器)中编写代码,还是仅在普通记事本中编写代码?
页:
[1]
2