autolisp 求一个选中一个矩形 生成一个外接圆的代码
1个回答
展开全部
下面是获得多段线(矩形)点坐标程序。知道坐标了,生成外接圆就容易多了,你先试试弄弄。
;-------------------------------------------------------------------------------
;LWPOLYLINE获得点列表子程序。
;-------------------------------------------------------------------------------
(defun lwpolyline_get_pt_list ( );/ sub_list ent_list)
(setq pt_list nil)
(setq ent_list (entget ent_name))
(while (setq ent_list (cdr ent_list))
(setq sub_list ent_list)
(setq sub_list (car sub_list))
(if (= (car sub_list) 10)
(progn
(setq pt (cdr sub_list))
(if (member pt pt_list) ;过滤掉重复点。
(setq pt_list pt_list)
(setq pt_list (cons pt pt_list))
)
)
)
)
(setq len (length pt_list))
)
;-------------------------------------------------------------------------------
;POLYLINE获得点列表子程序。
;-------------------------------------------------------------------------------
(defun polyline_get_pt_list ()
(setq pt_list nil)
(setq sub_ent_name ent_name)
(setq sub_ent_name (entnext sub_ent_name))
(while (and (/= sub_ent_name nil) (/= (cdr (assoc 0 (entget sub_ent_name))) "SEQEND"))
(setq pt (cdr (assoc 10 (entget sub_ent_name))))
(if (member pt pt_list) ;过滤掉重复点。
(setq pt_list pt_list)
(setq pt_list (cons pt pt_list))
)
(setq sub_ent_name (entnext sub_ent_name))
)
)
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;LWPOLYLINE获得点列表子程序。
;-------------------------------------------------------------------------------
(defun lwpolyline_get_pt_list ( );/ sub_list ent_list)
(setq pt_list nil)
(setq ent_list (entget ent_name))
(while (setq ent_list (cdr ent_list))
(setq sub_list ent_list)
(setq sub_list (car sub_list))
(if (= (car sub_list) 10)
(progn
(setq pt (cdr sub_list))
(if (member pt pt_list) ;过滤掉重复点。
(setq pt_list pt_list)
(setq pt_list (cons pt pt_list))
)
)
)
)
(setq len (length pt_list))
)
;-------------------------------------------------------------------------------
;POLYLINE获得点列表子程序。
;-------------------------------------------------------------------------------
(defun polyline_get_pt_list ()
(setq pt_list nil)
(setq sub_ent_name ent_name)
(setq sub_ent_name (entnext sub_ent_name))
(while (and (/= sub_ent_name nil) (/= (cdr (assoc 0 (entget sub_ent_name))) "SEQEND"))
(setq pt (cdr (assoc 10 (entget sub_ent_name))))
(if (member pt pt_list) ;过滤掉重复点。
(setq pt_list pt_list)
(setq pt_list (cons pt pt_list))
)
(setq sub_ent_name (entnext sub_ent_name))
)
)
;-------------------------------------------------------------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询