samifox 发表于 2022-7-5 22:55:02

调试问题

无法找出代码失败的原因
 
调试程序说它“跳转”……但观察窗口没有显示错误
 
奇怪的
 

(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
)

MSasu 发表于 2022-7-5 23:44:10

请检查这些变化,与您怀疑的变量无关:
但请注意,预期为点的中间变量实际上为零!

samifox 发表于 2022-7-6 00:03:40

感谢您的回复
 
我发现mid是空的,这是中断的原因,而不是跳转*
 
我这样编辑那行
 
2
 
没关系。。
 
ur代码也起了作用,
 
我试着比较这两行代码,但我仍然不明白为什么你的代码能正常工作,而我原来的代码却不能?
 
(+20)将返回40,mid将获得此值
(apply'+(list 20 20))将返回40,mid也将获得该值
 
那么,陷阱在哪里?
页: [1]
查看完整版本: 调试问题