乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: KRBeckman

[编程交流] 受控视口平移Lisp

[复制链接]

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 12:19:15 | 显示全部楼层
啊,是的,添加了1。。。我用Visual LISP写作
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:21:33 | 显示全部楼层
 
很好,如果你不这么做,我会建议你的
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 12:25:34 | 显示全部楼层
我如此接近。。。为什么不在缩放命令中使用vc2作为中心?
 
  1. (defun c:rf ()
  2. (command "zoom" "w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
  3. (initget 1 "Top Front Right")
  4. (setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
  5. (initget 1 "Up Down Left Right")
  6. (setq drc (getkword "\nWhich direction would you like to pan the viewport?<Up(U), Down(D), Left(L), Right(R)>: "))
  7. (setq dis (getreal   "\nHow far would you like to pan the viewport? "))
  8. (setq vpn (if (= wvp "Top") 2
  9. (if (= wvp "Front") 5
  10.      (if (= wvp "Right") 4
  11.   ))))
  12. (setq dms (getvar "dimlfac"))
  13. (if (= vpn 2) (if (= drc "Up")
  14.    (progn
  15.      (command "_.mspace")
  16.      (setvar "cvport" vpn)
  17.      (command "ucs" "top")
  18.      (setq vc1 (getvar "viewctr"))
  19.      (setq vx1 (car vc1))
  20.      (setq vy1 (cadr vc1))
  21.      (setq vz1 (caddr vc1))
  22.      (setq vy2 (+ vy1 (* dis dms)))
  23.      (setq vc2 '(vx1 vy2 vz1))
  24.      (command "zoom" "c" vc2 "")
  25.      )
  26.    )
  27.    )
  28. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:27:04 | 显示全部楼层
试试这个:
 
  1. (defun c:rf (/ DIS DMS DRC VC1 VPN VX1 VY1 VY2 VZ1 WVP)
  2. (command "_.zoom" "_w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
  3. (initget 1 "Top Front Right")
  4. (setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
  5. (initget 1 "Up Down Left Right")
  6. (setq drc (getkword "\nWhich direction would you like to pan the viewport?<Up(U), Down(D), Left(L), Right(R)>: "))
  7. (initget 7) ;; Might want to disallow -ve's also
  8. (setq dis (getreal "\nHow far would you like to pan the viewport? "))
  9. (setq vpn
  10.    (cond ( (eq wvp "Top")   2)
  11.          ( (eq wvp "Front") 5)
  12.          ( (eq wvp "Right") 4)))
  13. (setq dms (getvar "dimlfac"))
  14. (if (= vpn 2)
  15.    (if (= drc "Up")
  16.      (progn
  17.        (command "_.mspace")
  18.        (setvar "cvport" vpn)
  19.        (command "_.ucs" "_top")
  20.       
  21.        (setq vc1 (getvar "viewctr"))
  22.        (setq vx1 (car vc1))
  23.        (setq vy1 (cadr vc1))
  24.        (setq vz1 (caddr vc1))
  25.        (setq vy2 (+ vy1 (* dis dms)))
  26.        (command "_.zoom" "_c" (list vx1 vy2 vz1) ""))))
  27. (princ))

 
错误是使用撇号,为了解释错误,请阅读以下内容:
 
http://www.cadtutor.net/forum/showpost.php?p=258390&postcount=20
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 12:31:40 | 显示全部楼层
我大部分都是对的。再次感谢。我很快就会到那里。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:33:29 | 显示全部楼层
 
诚然,这并不坏-我鼓励您使用COND,其中可以替换多个IF语句。
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 12:35:37 | 显示全部楼层
在cond函数中使用“eq”有什么原因吗?或者也可以使用“=”吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:39:48 | 显示全部楼层
 
我建议使用“eq”来比较字符串/表达式(就此而言,“等于”)通常用于数值比较。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:41:56 | 显示全部楼层
我不是一个大球迷(情商)
 
请看帮助文件的示例:
 
(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
 
-大卫
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 12:45:45 | 显示全部楼层
好吧,它几乎只对我有效,因为我的标题栏视口按我需要的方式编号,但这里是“最终”草稿:
 
  1. (defun c:rf (/ DIS DMS DRC MDS VC1 VPN VX1 VY1 VY2 VZ1 WVP)
  2. (command "_.pspace")
  3. (command "_.zoom" "_w" '(-0.5 -0.5 0.0) '(11.0 8.5 0.0))
  4. (initget 1 "Top Front Right")
  5. (setq wvp (getkword "\nWhich Viewport would you like to pan?<Top(T), Front(F), Right(R)>: "))
  6. (initget 1 "Up Down Left Right")
  7. (setq drc (getkword "\nWhich direction would you like to pan the viewport?<Up(U), Down(D), Left(L), Right(R)>: "))
  8. (initget 7)
  9. (setq dis (getreal "\nHow far would you like to pan the viewport? "))
  10. (setq vpn
  11.    (cond ( (eq wvp "Top")   2)
  12.          ( (eq wvp "Front") 5)
  13.          ( (eq wvp "Right") 4)))
  14. (setq dms (getvar "dimlfac"))
  15. (command "_.mspace")
  16. (setvar "cvport" vpn)
  17. (command "_.ucs" "_top")
  18. (setq vc1 (getvar "viewctr"))
  19. (setq vx1 (car vc1))
  20. (setq vy1 (cadr vc1))
  21. (setq vz1 (caddr vc1))
  22. (setq mds (* dis dms))
  23. (setq vx2 (cond ( (eq wvp "Top")   (cond ( (eq drc "Up")    vx1)
  24.        ( (eq drc "Down")  vx1)
  25.        ( (eq drc "Left")  (+ vx1 mds))
  26.        ( (eq drc "Right") (- vx1 mds))))
  27.    ( (eq wvp "Front") (cond ( (eq drc "Up")    vx1)
  28.        ( (eq drc "Down")  vx1)
  29.        ( (eq drc "Left")  (+ vx1 mds))
  30.        ( (eq drc "Right") (- vx1 mds))))
  31.    ( (eq wvp "Right") (cond ( (eq drc "Up")    vx1)
  32.        ( (eq drc "Down")  vx1)
  33.        ( (eq drc "Left")  vx1)
  34.        ( (eq drc "Right") vx1)))))
  35. (setq vy2 (cond ( (eq wvp "Top")   (cond ( (eq drc "Up")    (- vy1 mds))
  36.        ( (eq drc "Down")  (+ vy1 mds))
  37.        ( (eq drc "Left")  vy1)
  38.        ( (eq drc "Right") vy1)))
  39.    ( (eq wvp "Front") (cond ( (eq drc "Up")    vy1)
  40.        ( (eq drc "Down")  vy1)
  41.        ( (eq drc "Left")  vy1)
  42.        ( (eq drc "Right") vy1)))
  43.    ( (eq wvp "Right") (cond ( (eq drc "Up")    vy1)
  44.        ( (eq drc "Left")  (+ vy1 mds))
  45.        ( (eq drc "Right") (- vy1 mds))))))
  46. (setq vz2 (cond ( (eq wvp "Top")   (cond ( (eq drc "Up")    vz1)
  47.        ( (eq drc "Down")  vz1)
  48.        ( (eq drc "Left")  vz1)
  49.        ( (eq drc "Right") vz1)))
  50.    ( (eq wvp "Front") (cond ( (eq drc "Up")    (- vz1 mds))
  51.        ( (eq drc "Down")  (+ vz1 mds))
  52.        ( (eq drc "Left")  vz1)
  53.        ( (eq drc "Right") vz1)))
  54.    ( (eq wvp "Right") (cond ( (eq drc "Up")    (- vz1 mds))
  55.        ( (eq drc "Down")  (+ vz1 mds))
  56.        ( (eq drc "Left")  vz1)
  57.        ( (eq drc "Right") vz1)))))
  58. (command "_.zoom" "_c" (list vx2 vy2 vz2) "")
  59. (command "_.pspace")
  60. (princ))
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-3 15:05 , Processed in 2.305263 second(s), 82 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表