马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
判断一个点是否在圆弧线上或在圆弧线的延长线上 - (defun inters_point&arc (c-centerpoint c-rad r-start-ang r-end-ang p-point1 show / return_result_lgx interangle-lgx)
- ;;;原创,编写:刘国新
- ;;;判断一个点是否在圆弧线上或在圆弧线的延长线上
- ;;;使用方法如下
- ;;;(inters_point&arc (cdr (assoc 10 (setq arc (entget (car (entsel "请选择圆弧\n")))))) (cdr (assoc 40 arc)) (cdr (assoc 50 arc))
- ;;;(cdr (assoc 51 arc)) (getpoint "请点选:") "show")
- (setq return_result_lgx nil)
- (if (= r-start-ang nil)
- (setq r-start-ang 0.0)
- )
- (if (= r-end-ang nil)
- (setq r-end-ang 0.0)
- )
- (setq r-start-ang (atof (angtos r-start-ang 0 8)))
- (setq r-end-ang (atof (angtos r-end-ang 0 8)))
- (if (and (= r-end-ang 0.0)(= r-start-ang 0.0))
- (setq r-end-ang 360.0)
- )
- (if (or (= c-centerpoint nil) (= c-rad nil) (= p-point1 nil))
- (setq return_result_lgx nil)
- (progn
- (if (equal c-rad (distance c-centerpoint p-point1) 0.0005)
- (progn
- (setq interangle-lgx (atof (angtos (angle c-centerpoint p-point1) 0 8)))
- (if (< r-end-ang r-start-ang)
- (if (or (<= interangle-lgx r-end-ang)(>= interangle-lgx r-start-ang))
- (progn
- (if (/= show nil)
- (princ "\n点在圆弧线上!!!\n")
- )
- (setq return_result_lgx 1)
- )
- (progn
- (if (/= show nil)
- (princ "\n点在圆弧线的延长线上!!!\n")
- )
- (setq return_result_lgx 2)
- )
- )
- (if (and (>= interangle-lgx r-start-ang)(<= interangle-lgx r-end-ang))
- (progn
- (if (/= show nil)
- (princ "\n点在圆弧线上!!!\n")
- )
- (setq return_result_lgx 1)
- )
- (progn
- (if (/= show nil)
- (princ "\n点在圆弧线的延长线上!!!\n")
- )
- (setq return_result_lgx 2)
- )
- )
- )
- )
- (progn
- (if (/= show nil)
- (princ "\n点不在圆弧线上或圆弧线的延长线上!!!\n")
- )
- (setq return_result_lgx nil)
- )
- )
- )
- )
- (princ)
- return_result_lgx
- )
|