[功能] 多段线除重点---实用版
本帖最后由 /db_自贡黄明儒_ 于 2015-1-9 11:50 编辑;;[功能] 多段线除重点---实用版---新鲜出炉
;;(HH:Remove1 (ssname (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))) 0))
(defun HH:Remove1 (e / FLAG LST PTS)
(setq pts (OverPtsPL e))
(foreach x (entget e)
(cond
((= 10 (car x))
(setq Flag (car pts))
(setq pts (cdr pts))
(cond ((not Flag) (setq Lst (cons x Lst))))
)
(T (setq Lst (cons x Lst)))
)
)
(entmod (reverse Lst))
(princ)
)
**** Hidden Message *****
有什么改进?
和上午那个比,哪个地方更好了? 带弧线的,封闭,不封闭的都测试了吗? ddddddddddd
newer 发表于 2015-1-8 14:01
带弧线的,封闭,不封闭的都测试了吗?
这个主要删除在一条线的点
封闭的也测试了,大部分情况下是正确的{:soso_e113:}
/db_自贡黄明儒_ 发表于 2015-1-8 14:51
这个主要删除在一条线的点
封闭的也测试了,大部分情况下是正确的
黄大师伟大,,,学习了,。。
这个加入《关于多线段》里呀
/db_自贡黄明儒_ 发表于 2015-1-8 14:51
这个主要删除在一条线的点
封闭的也测试了,大部分情况下是正确的
那哪部分不正确?
newer 发表于 2015-1-8 16:02
那哪部分不正确?
首尾点在一条线上,且不封闭时,不正确
改个子函数就好了
;;114.3 [功能] 多段线端点与前后点是否在同一直线上
;;(OverPtsPL (car(entsel)))=>(T T nil nil nil T nil T T)
(defun OverPtsPL (e / LST LST0 LST1 LST2 X Y Z)
(setq lst0 (HH:PtLists e))
(cond
((HH:isClosed e)
(setq lst1 (append (cdr lst0) (list (car lst0))))
(setq lst2 (cons (last lst0) lst0))
(mapcar '(lambda (x y z) (PtIn2Pts1 x y z 0.001)) lst0 lst2 lst1)
)
(T
(setq lst1 (cdr lst0))
(setq lst2 (cdr lst1))
(setq lst (mapcar '(lambda (x y z) (PtIn2Pts1 x y z 0.001)) lst1 lst0 lst2))
(setq lst (append (cons nil lst) (list nil)))
)
)
)
ysq101 发表于 2015-1-8 15:59
黄大师伟大,,,学习了,。。
这个加入《关于多线段》里呀
自己加吧,刚好楼上用了(HH:isClosed e)
支持黄大师!!! 黄大师,应该把“禁用表情” 勾上, 都显示成表情符号了 本帖最后由 明天你好 于 2015-1-8 16:34 编辑
看看! 谢谢分享
lucas3 发表于 2015-1-8 16:11
黄大师,应该把“禁用表情” 勾上, 都显示成表情符号了
勾上也有,{:soso_e110:} 一直在找这个程序,