请教一个关于polyline顶点的问题
本帖最后由 作者 于 2003-12-13 22:24:40 编辑我有一个polyline线,比如有1、2、3三个顶点。。。他们在一直线上,那我就要把2这个顶点给删了。。。请问怎么作?
(判断顶点1、2、3如果不在一直线那还是不要删的)
---------------
1 2 3
各位大虾帮忙解决一下吧 判断1、2和2、3的角度,看是否相同,以及这两段是否都是直线 还不是很懂。。。
而且我还碰到些问题:比如怎么样才能够删点。。。能有些简单的源代码吗? 你应该提供你自己写的一个程序,不对没关系,这样能看出你会哪些,就比较好回答。比如说你第一个问题,我不清楚你是对功能实现不清楚,还是对这种判断的方法不清楚。。。
删除顶点将其对象的DXF组码中对应的顶点及40、41、42
(defun c:test( / ent ents pt lst i)
(command "_.undo" "be")
(setq ent (car (entsel)))
(setq ents (entget ent))
(setq pt (getpoint "输入要删除的点:"))
(setq lst (member (cons 10 (reverse (cdr (reverse pt)))) ents))
(if lst
(progn
(setq lst (list (assoc 10 lst) (assoc 40 lst) (assoc 41 lst) (assoc 42 lst)))
(setq i 0)
(repeat 4
(setq ents (vl-remove (nth i lst) ents))
(setq i (1+ i))
)
)
)
(entmod ents)
(command "_.undo" "e")
(princ)
) 谢谢。。。老大。。。你写的那部分太经典了。。。如果我要写出同样的功能的要写很长。。。看样子我还是太菜了 简化一下:
(defun c:test ()
(setq p (getpoint "\nPick Point:"))
(setq ents (entget (ssname (ssget p) 0)))
(setq lst (member (list 10 (car p)(cadr p)) ents))
(foreach i (list (assoc 10 lst)(assoc 40 lst)(assoc 41 lst)(assoc 42 lst))
(setq ents (vl-remove i ents))
)
(entmod ents)
) ;;MEFLYING
;;vl-remove會把相同的資料去掉
;;這樣會失去 相同點 & 相同寬度 & 相同凸度 的資料
;;LOCKMYEYE的復合線頂點編輯工具可供參考,等有空我也研究研究
页:
[1]