调试问题
无法找出代码失败的原因调试程序说它“跳转”……但观察窗口没有显示错误
奇怪的
(setq *operator* (list + -))
(setq *jump* (list 20.0 0.0))
(defun main (/ p ps rp ty hdr)
(setq ps (cons (getpoint "\nPick first point") ps))
(setq ps (cons (getpoint (car ps) "\nPick second point") ps))
;;;---------------CREATE LOWER HEADER REBAR----------------------;;;
(setq ty (reB (cadr ps)
(car ps)
(+ (angle (car ps) (cadr ps)) pi)
50.0
(- (angle (car ps) (cadr ps)) (/ pi 2))
30.0)
)
(command "_point" (car ty))
(command "_point" (cadr ty))
(command "_point" (caddr ty))
(command "_pline" (caddr ty)(car ty)(cadr ty) "")
;;;---------------END OF LOWER HEADER REBAR----------------------;;;
(while (setq p (getpoint (car ps) "\nPick next point"))
(setq ps (cons p ps))
;;;---------------CREATE LOWER SEQ REBAR----------------------;;;
(setq rp (reA (car ps) (cadr ps) 50.0))
(entmakex
(list (cons 0 "LINE")
(cons 10 (car rp))
(cons 11 (cadr rp))
)
)
;;;---------------CREATE UPPER SEQ REBAR----------------------;;;
;;;--------------END OF UPPER SEQ REBAR----------------------;;;
)
)
(defun reA (p1 p2 e / wr wl mid)
(setq mid (polar mid ((car *operator*) (angle p1 p2) (/ pi 2))(car *jump*))
;_ end of polar
)
(setq wr (polar mid
(+ (angle p1 p2) pi)
(+ (/ (distance p1 p2) 2.0) e)
)
) ;_polar helf distance + 50
(setq wl (polar mid (angle p1 p2) (+ (/ (distance p1 p2) 2.0) e))) ;_polar helf distance + 50
(setq *operator* (reverse *operator*))
(setq *jump* (reverse *jump*))
(list wl wr)
)
(defun reB(p1 p2 eang e hang hlen)
(list
p1 ;;; start point
(polar p2 eang e) ;;; extention point
(polar p1 hang hlen) ;;; header
)
)
(defun getmid (p1 p2)
(list ;_get mid point
(/ (+ (car p1) (car p2)) 2.0)
(/ (+ (cadr p1) (cadr p2)) 2.0)
) ;_ end of list
)
请检查这些变化,与您怀疑的变量无关:
但请注意,预期为点的中间变量实际上为零! 感谢您的回复
我发现mid是空的,这是中断的原因,而不是跳转*
我这样编辑那行
2
没关系。。
ur代码也起了作用,
我试着比较这两行代码,但我仍然不明白为什么你的代码能正常工作,而我原来的代码却不能?
(+20)将返回40,mid将获得此值
(apply'+(list 20 20))将返回40,mid也将获得该值
那么,陷阱在哪里?
页:
[1]