很好,如果你不这么做,我会建议你的 我如此接近。。。为什么不在缩放命令中使用vc2作为中心?
(defun c:rf ()
(command "zoom" "w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
(initget 1 "Top Front Right")
(setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
(initget 1 "Up Down Left Right")
(setq drc (getkword "\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 (= wvp "Top") 2
(if (= wvp "Front") 5
(if (= wvp "Right") 4
))))
(setq dms (getvar "dimlfac"))
(if (= vpn 2) (if (= drc "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))
(command "zoom" "c" vc2 "")
)
)
)
)
试试这个:
(defun c:rf (/ DIS DMS DRC VC1 VPN VX1 VY1 VY2 VZ1 WVP)
(command "_.zoom" "_w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
(initget 1 "Top Front Right")
(setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
(initget 1 "Up Down Left Right")
(setq drc (getkword "\nWhich direction would you like to pan the viewport?<Up(U), Down(D), Left(L), Right(R)>: "))
(initget 7) ;; Might want to disallow -ve's also
(setq dis (getreal "\nHow far would you like to pan the viewport? "))
(setq vpn
(cond ( (eq wvp "Top") 2)
( (eq wvp "Front") 5)
( (eq wvp "Right") 4)))
(setq dms (getvar "dimlfac"))
(if (= vpn 2)
(if (= drc "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)))
(command "_.zoom" "_c" (list vx1 vy2 vz1) ""))))
(princ))
错误是使用撇号,为了解释错误,请阅读以下内容:
http://www.cadtutor.net/forum/showpost.php?p=258390&postcount=20 我大部分都是对的。再次感谢。我很快就会到那里。
诚然,这并不坏-我鼓励您使用COND,其中可以替换多个IF语句。 在cond函数中使用“eq”有什么原因吗?或者也可以使用“=”吗?
我建议使用“eq”来比较字符串/表达式(就此而言,“等于”)通常用于数值比较。 我不是一个大球迷(情商)
请看帮助文件的示例:
(setq f1’(a b c))
(setq f2’(a b c))
(setq f3 f2)
比较f1和f3:
命令:(eq f1 f3)
无
为此:
(等式f1 f2)返回nil
这对我来说不是那么直观。
我确实使用它来比较珐琅,因为它们与符号绑定。
(=)将字符串转换为ASCII数字,并以这种方式进行比较。
(=“Z”“Z”)返回nil
-大卫 好吧,它几乎只对我有效,因为我的标题栏视口按我需要的方式编号,但这里是“最终”草稿:
(defun c:rf (/ DIS DMS DRC MDS VC1 VPN VX1 VY1 VY2 VZ1 WVP)
(command "_.pspace")
(command "_.zoom" "_w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
(initget 1 "Top Front Right")
(setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
(initget 1 "Up Down Left Right")
(setq drc (getkword "\nWhich direction would you like to pan the viewport?<Up(U), Down(D), Left(L), Right(R)>: "))
(initget 7)
(setq dis (getreal "\nHow far would you like to pan the viewport? "))
(setq vpn
(cond ( (eq wvp "Top") 2)
( (eq wvp "Front") 5)
( (eq wvp "Right") 4)))
(setq dms (getvar "dimlfac"))
(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 mds (* dis dms))
(setq vx2 (cond ( (eq wvp "Top") (cond ( (eq drc "Up") vx1)
( (eq drc "Down")vx1)
( (eq drc "Left")(+ vx1 mds))
( (eq drc "Right") (- vx1 mds))))
( (eq wvp "Front") (cond ( (eq drc "Up") vx1)
( (eq drc "Down")vx1)
( (eq drc "Left")(+ vx1 mds))
( (eq drc "Right") (- vx1 mds))))
( (eq wvp "Right") (cond ( (eq drc "Up") vx1)
( (eq drc "Down")vx1)
( (eq drc "Left")vx1)
( (eq drc "Right") vx1)))))
(setq vy2 (cond ( (eq wvp "Top") (cond ( (eq drc "Up") (- vy1 mds))
( (eq drc "Down")(+ vy1 mds))
( (eq drc "Left")vy1)
( (eq drc "Right") vy1)))
( (eq wvp "Front") (cond ( (eq drc "Up") vy1)
( (eq drc "Down")vy1)
( (eq drc "Left")vy1)
( (eq drc "Right") vy1)))
( (eq wvp "Right") (cond ( (eq drc "Up") vy1)
( (eq drc "Left")(+ vy1 mds))
( (eq drc "Right") (- vy1 mds))))))
(setq vz2 (cond ( (eq wvp "Top") (cond ( (eq drc "Up") vz1)
( (eq drc "Down")vz1)
( (eq drc "Left")vz1)
( (eq drc "Right") vz1)))
( (eq wvp "Front") (cond ( (eq drc "Up") (- vz1 mds))
( (eq drc "Down")(+ vz1 mds))
( (eq drc "Left")vz1)
( (eq drc "Right") vz1)))
( (eq wvp "Right") (cond ( (eq drc "Up") (- vz1 mds))
( (eq drc "Down")(+ vz1 mds))
( (eq drc "Left")vz1)
( (eq drc "Right") vz1)))))
(command "_.zoom" "_c" (list vx2 vy2 vz2) "")
(command "_.pspace")
(princ))
页:
1
[2]