找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: petertian

[求助] [求助]:怎样清除多义线(lwpolyline)上的重复点?

[复制链接]
 楼主| 发表于 2005-9-28 14:46:34 | 显示全部楼层
最初由 舟自横 发布
[B][QUOTE]最初由 petertian 发布
[B][QUOTE]最初由 舟自横 发布
[B]试一下这个:
[PHP]
(defun hy_delcfvetex(en / o1list o1listx pos);;删除重复顶点
  (if (setq o1list (hy_listdoublep (entge... [/B]

大虾,我已经将样图发在您的邮箱中,望查收!谢谢您!亟盼回复!万分感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 18:12:03 | 显示全部楼层
已收到你的邮件,但是我从你的图上并没有查出有重复顶点..
我想你的要求应该不是删除重复顶点,而是合并节点吧,
是不是要把在一直线或同一圆弧上的顶点删除掉?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-28 18:18:12 | 显示全部楼层
最初由 舟自横 发布
[B]已收到你的邮件,但是我从你的图上并没有查出有重复顶点..
我想你的要求应该不是删除重复顶点,而是合并节点吧,
是不是要把在一直线或同一圆弧上的顶点删除掉? [/B]


舟自横大虾您好,对不起,图发错了,我另发!您可以看第181和第182个顶点的坐标是相同的,我要去掉182顶点或181顶点,您的程序对于闭合多义线(lwpolyline)不起作用,删除不掉重复顶点!只对不闭合的lwpolyline可以取掉重复顶点!闭合的lwpolyline怎么办?谢谢!我已经重新发过了,附件叫shiyan
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-28 18:32:46 | 显示全部楼层
试过 6 楼链接中的程序吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-28 18:40:29 | 显示全部楼层
最初由 eachy 发布
[B]试过 6 楼链接中的程序吗? [/B]

试验过了,六楼的程序对于闭合的lwpolyline会变形,将不重复的点都去掉了,并且多边形处理后已经变形了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-28 19:27:02 | 显示全部楼层
最初由 petertian 发布
[B]
试验过了,六楼的程序对于闭合的lwpolyline会变形,将不重复的点都去掉了,并且多边形处理后已经变形了 [/B]

你用的哪个版本CAD?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 20:32:48 | 显示全部楼层
有收到你的邮件
我测试了一下是删除不了180点
经过研究并不是程序有问题而是你的顶点不重复相差很小
差不多0.00001左右所以程序判为不一致
所根据你的要求我把程序做了一些改动加上精度控制就可以了
[PHP]
(defun hy_delcfvetex(en preci / o1list o1listx pos)
  (setq length1 (length (entget en)))
  (if (setq o1list (hy_listdoublep (massoc 10 (entget en)) t preci))
       (foreach item o1list
                              (setq pos (vl-position (cons 10 item) (entget en))
                                   o1listx (hy_addnth (cons 10 item) pos (vl-remove item (entget en))))
                     
                                )
                            )
       (entmod o1listx)
     (prompt (strcat  "\n共删除了" (itoa (/ (- length1 (length (entget en))) 4)) "个重复顶点"))
     )
(defun hy_listdoublep(lip do preci / uuli u item nlist);;加上精度控制PRECI
  (if (/= lip nil)
    (progn
   (setq nlist nil)
  (setq u 0)
  (repeat (length lip)
    (setq item (nth u lip))
    (setq uuli lip)
    (foreach meti lip (if (equal meti item preci) (setq uuli (vl-remove meti uuli))))
    (if (< (length uuli)
           (- (length lip) 1)
           )
        (setq nlist (cons item nlist))
      )
    (setq u (1+ u))
    )
   ))
    (if (and nlist do) (hy_erasedouble (reverse nlist) preci)
      (reverse nlist))
    )
(defun hy_erasedouble(nlist preci / needlist);;;精度控制参数PRECI
  (setq needlist nlist)
  (foreach item nlist (setq needlist (append (list item)
                                             (vl-remove-if '(lambda(x) (equal item x preci)
                                                              )
                                               needlist)))
    )
  (reverse needlist))
(defun hy_addnth(new n oldlist / alist blist);;
  (setq alist nil)
  (setq i 0)
  (repeat n
    (setq alist (cons (nth i oldlist) alist))
    (setq i (1+ i))
    )
  (setq alist (reverse alist))
  (setq i n)
  (setq blist nil)
  (repeat (- (length oldlist) n)
    (setq blist (cons (nth i oldlist) blist))
    (setq i (1+ i))
    )
  (setq blist (reverse blist))
  (append alist (list new) blist)
  )
(defun massoc (key alist / x nlist)
  (foreach x alist
    (if (eq key (car x))
      (setq nlist (cons (cdr x) nlist))
      )
    )
  (reverse nlist))
[/PHP]
测试
(defun c:tt() (hy_delcfvetex (car(entsel "\n请选择需要操作的复线")) 0.001))
返回     "共删除了1个重复顶点"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 20:52:20 | 显示全部楼层

找出重复点,重画

我自己是这么整的,虽然有点慢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-29 07:38:51 | 显示全部楼层
舟兄,参数太多??
另,似乎未见对凸度处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-29 08:04:33 | 显示全部楼层
删除顶点处理凸度做什么..ENTMOD后图元会自动整理的
或者你自己试一下程序就知道了..
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-29 08:31:03 | 显示全部楼层
最初由 舟自横 发布
[B]有收到你的邮件
我测试了一下是删除不了180点
经过研究并不是程序有问题而是你的顶点不重复相差很小
差不多0.00001左右所以程序判为不一致
所根据你的要求我把程序做了一些改动加上精度控制就可以了
[PHP]
(de... [/B]


舟自横大虾,我试过了,这个新修改的程序还是删除不掉封闭的lwpolyline,现在竟然连不封闭的lwpolyline都删除不了,我在cad2002版下试验过的!程序运行后出现:“共删除了-1个重复顶点”,并且我发现你的程序每运行一次,重复点就会多一次!呵呵!麻烦您看看程序!
另外,回复斑竹,我是在2002下运行斑竹的程序的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-29 12:13:41 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-29 15:41:01 | 显示全部楼层
最初由 eachy 发布
[B]用这个吧
http://www.xdcad.net/forum/showthread.php?s=&threadid=466221
很完美的 [/B]


谢谢斑竹,我刚才试验了,完全满足了我的要求!非常感谢eachy  
斑竹的劳动!以后我会大力支持我们的论坛!再次感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-6 00:12:41 | 显示全部楼层
eachy 版主是好版主,可是人家给的链接是 aeo 版主写的程序,你这个“感谢”好像更应该谢aeo吧?呵呵

另外,程序也还有不足,近似闭合的没有能处理成闭合。

提供一个自己的。命令也是 c:plxc。可以处理近似闭合的情况(多义线属性没有闭合,但是首尾顶点接近或重合,自动处理成闭合并减少一个顶点)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1261个

财富等级: 财源广进

发表于 2005-11-7 17:10:05 | 显示全部楼层
最初由 狂刀 发布
[B]eachy 版主是好版主,可是人家给的链接是 aeo 版主写的程序,你这个“感谢”好像更应该谢aeo吧?呵呵

另外,程序也还有不足,近似闭合的没有能处理成闭合。

提供一个自己的。命令也是 c:plxc。可以处理近似闭?.. [/B]


谢谢,这个程序的确好。还有我想可不可以把此程序改成处理
“二维多段线”的,因为现在我所接触的基本都是二维多段线,
多段线没有厚度,所以少用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 14:30 , Processed in 0.182530 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表