分解L形
把附件中的L形全分解出来,附件中的图形还可以衍生,仅示例了些常见的!希望是一个思路解全部,不要分类的! 忘记了附件,下面补上 本帖最后由 ZZXXQQ 于 2014-8-31 08:31 编辑图中只有一个L形
(defun c:tt ()
(setq ss1 (ssadd))
(if (and (princ "\n选择L形: ")
(setq ss (ssget '((0 . "LWPOLYLINE") (90 . 6))))) (progn ;选六条边的复线
(repeat (setq i (sslength ss))
(setq en (ssname ss (setq i (1- i))))
(setq ent (entget en))
(setq e42 (mapcar '(lambda (x) (if (= (car x) 42) (cdr x))) ent));凸度
(if (apply '= (cons 0.0 e42)) (progn ;凸度=0,无弧
(setq plst (mapcar '(lambda (x) (if (= (car x) 10) (cdr x))) ent));节点表
(setq ptlst (mapcar 'cons plst (append(cdr plst)(list(car plst)))));点两两成对
(setq anglst (mapcar '(lambda (x) (apply 'angle x)) ptlst));直线角度
(setq anglst (vl-sort anglst '<));角度排序
(if (= (length anglst) 2) (ssadd en ss1));三线平行为L形
))
)
))
(sssetfirst nil ss1)
)
可能我没表达清晰,附件中的所有图形都由L形组成,把每个图形所包含的L形分解出来,所示图例可以是不平行的,可以宽度不同,因为情况可以衍生很多种,所以没一一列出,现在只求把图中的解决。图片中红色的是分解后所要的结果!
页:
[1]