你好,
我对当前的LISP项目有点迷茫。
通过这个程序,我确定一条线的角度,并将其与列表进行比较。如果此角度在此列表中,则应返回true,否则返回false。
然而,我似乎无法使代码的红色部分正常工作。当我使用一个数字时,它会正常工作,但当我使用“ang1”时,它失败了。然而,当我使用(princ ang1)时,它显示了我想要与列表进行比较的角度。
我认为错误在RtD计算中的某个地方,但我不确定。
如果你需要任何其他信息,请告诉我。
- (defun c:OneBend ( / savesnap comech )
- (initget 1 "Forward Backward")
- (setq richting (getkword "Is this a Forward or a Backward bend? "))
- (setq bend 90)
- ;;; DETERMINE ANGLE
- (setq pt1 (getpoint "\nSelect point 1: "))
- (setq pt2 (getpoint "\nSelect point 2: "))
- (setq ang (angle pt1 pt2))
- (setq ang0 (/ ang pi))
- (setq ang1 (* ang0 180.0))
- (if (>= ang1 180.0) (setq ang1 (- ang1 180.0)))
- (if (>= ang1 90.0) (setq ang1 (- ang1 180.0)))
- (setq ang1 (abs ang1))
- (terpri)
- (princ ang1)
- (terpri)
- (setq f90_list '(0.0 8.0 10.0 12.0 14.0 16.0 18.0 20.0 22.0 24.0 26.0 34.0))
- (setq b90_list '(0.0 16.0 20.0 22.0 24.0 26.0 28.0 30.0 32.0 34.0 36.0 39.0 40.0 42.0
- 44.0 45.0 46.0 48.0
- 50.0 52.0 55.0 58.0 60.0 63.0 64.0 65.0))
- (setq stnd_list '(0.0))
- (cond
- ((and (= bend 90) (= richting "Forward"))
- (setq angle_list f90_list))
- ; FOR FUTURE USE
- ((and (= bend 45) (= richting "Forward"))
- (setq angle_list f45_list))
- ((and (= bend 90) (= richting "Backward"))
- (setq angle_list b90_list))
- ; FOR FUTURE USE
- ((and (= bend 45) (= richting "Backward"))
- (setq angle_list b45_list))
- (t (setq angle_list stnd_list))
- )
- ; ANGLE PART OF LIST
- [color="red"]; (setq apol (member 20.0 angle_list)) ; This works
- (setq apol (member ang1 angle_list)) ; This does not work ???[/color]
- (if apol (princ "Success!") (princ "Fail!"))
- ; PROGRAM CONTINUES HERE
- )
|