iCAx开思网
标题:
请问在LISP中如何判断一条直线与一段圆弧或椭圆弧的交点?
[打印本页]
作者:
SageShen
时间:
2005-11-29 15:00
标题:
请问在LISP中如何判断一条直线与一段圆弧或椭圆弧的交点?
请问在LISP中如何判断一条直线与一段圆弧或椭圆弧的交点?
[
本帖最后由 SageShen 于 2005-11-29 07:38 编辑
]
作者:
Andyes
时间:
2005-11-29 16:36
info:
https://www.mjtd.com/bbs/dispbbs ... ;ID=8719&page=1
;;
;; Get all nodes of the LWPolyline, Polyline.
;;
(defun GetListOfPline (EntityName / SSE_Pline N newEntityName)
(setq SSE_Pline (entget EntityName))
(setq LastList nil)
(if (= (cdr (assoc 0 SSE_Pline)) "LWPOLYLINE")
(progn
(setq LastList (LIST (LIST 0 0)))
(setq N 0)
(while (/= (nth N SSE_Pline) nil)
(if (= (car (nth N SSE_Pline)) 10)
(setq LastList (append LastList (list (list (cadr (nth N SSE_Pline)) (caddr (nth N SSE_Pline)) )) ))
)
(setq N (+ N 1))
)
(setq LastList (cdr LastList))
)
)
(if (= (cdr (ASSOC 0 SSE_Pline)) "POLYLINE")
(PROGN
(setq LastList (list (list 0 0)))
(setq newEntityName (entnext EntityName))
(while (= (cdr (assoc 0 (entget newEntityName))) "VERTEX")
(setq LastList (append LastList (list (list (cadr (assoc 10 (entget newEntityName))) (caddr (assoc 10 (entget newEntityName))) ))))
(setq newEntityName (entnext newEntityName))
)
(setq LastList (cdr LastList))
)
)
(setq LastList LastList)
);_defun
;;
;; main function
;;
(defun c:getInsPtOfPl ( / ent_name1 pt_list1 ent_name2 pt_list2 i j pta0 pta1 ins_pt pt_ins_list)
(setq ent_name1 (car (entsel "\nSelect first entity:")))
(setq pt_list1 (GetListOfPline ent_name1))
(setq ent_name2 (car (entsel "\nSecond entity:")))
(setq pt_list2 (GetListOfPline ent_name2))
(setq i 1 j 1)
(setq pta0 (nth 0 pt_list1))
(while (setq pta1 (nth i pt_list1))
(setq ptb0 (nth 0 pt_list2))
(while (setq ptb1 (nth j pt_list2))
(if (and (setq ins_pt (inters pta0 pta1 ptb0 ptb1 t))
(not (member ins_pt pt_ins_list))
)
(progn
(setq pt_ins_list (append pt_ins_list (list ins_pt)))
)
);_if
(setq ptb0 ptb1)
(setq j (+ j 1))
);_while
(setq j 1)
(setq pta0 pta1)
(setq i (+ i 1))
);_while
pt_ins_list
);_defun
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3