・ 2点が同一点かどうか判定
2点が同一の点であれば、その距離は 0 となります。
図面上では、ある程度の誤差を許容しなくてはならないので、(equal)
の fuzz オプションを適当に設定しましょう。
(defun Jo_same_pt ()
;サブルーチン 2点が同一点かどうか判定 同一なら T ;
(defun Jof_same_pt (
pt1;調査点1;
pt2;調査点2;
/ fuz dist )
(setq fuz 1e-6)
(setq dist (distance pt1 pt2))
(equal dist 0 fuz)
)
;**********************************************************
;メインルーチン ;
(setq pt1 (getpoint "\n1点目"))
(setq pt2 (getpoint "\n2点目"))
(if (Jof_same_pt pt1 pt2)
(princ "\n同一点です")
(princ "\n同一ではありません")
)
(princ)
)
まあ、距離を取得しなくても直接点どうしの比較でもいいですけど
(defun Jo_same_pt2 ()
;サブルーチン 2点が同一点かどうか判定 同一なら T ;
(defun Jof_same_pt2 (
pt1;調査点1;
pt2;調査点2;
/ )
(setq fuz 1e-6)
(equal pt1 pt2 fuz)
)
;**********************************************************
(setq pt1 (getpoint "\n1点目"))
(setq pt2 (getpoint "\n2点目"))
(if (Jof_same_pt2 pt1 pt2)
(princ "\n同一点です")
(princ "\n同一ではありません")
)
(princ)
)