找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1966|回复: 14

[求助] 把顶点表排成直线顶点表少了一段,请修改一下.

[复制链接]

已领礼包: 394个

财富等级: 日进斗金

发表于 2013-6-13 20:28:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
取得一个多段线的顶点表lst后,想把lst重排一下成一条直线的顶点表,对不封闭的多段线没有问题,但如果是闭合的多段线就少了最后一个点,结果排出来的表少了一段,请帮忙看看改正一下.
(defun Linelst ()
  (setq px (caar lst) py (cadar lst))
  (mapcar '(lambda(x)(setq ddlst(cons(vlax-curve-getDistAtPoint obj x)ddlst)))lst)
  (mapcar '(lambda(x)(setq Linelst(cons (list (+ x px)py)Linelst)))(reverse ddlst))
  (setq Linelst (reverse Linelst))  
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-13 20:39:57 | 显示全部楼层
楼主,能不能贴个图上来,看的清楚。

点评

图如下: [attachimg]2614[/attachimg]  详情 回复 发表于 2013-6-13 21:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-13 20:41:31 | 显示全部楼层
你意思是多段线封闭的话,就少了一点? 函数发布里面有个函数,你看看

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

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

 楼主| 发表于 2013-6-13 21:06:53 | 显示全部楼层
本帖最后由 kwok 于 2013-6-13 21:39 编辑
Lispboy 发表于 2013-6-13 20:39
楼主,能不能贴个图上来,看的清楚。

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-13 21:27:09 | 显示全部楼层
你判断下多段线是否封闭,如果不封闭,你把顶点再加到尾部不就闭合多一点了吗,上面给你的那个帖子就是这个函数。

点评

就是封闭了才少一点。 可不可以不判断是否闭都能排到跟多线段同样的段数.?  详情 回复 发表于 2013-6-13 21:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

 楼主| 发表于 2013-6-13 21:31:28 | 显示全部楼层
本帖最后由 kwok 于 2013-6-13 21:40 编辑
Lispboy 发表于 2013-6-13 21:27
你判断下多段线是否封闭,如果不封闭,你把顶点再加到尾部不就闭合多一点了吗,上面给你的那个帖子就是这个 ...

就是封闭了才少一段。它只按找到的顶点排,所以少了p4~p1这一段 (我把图片更新了一下,现在看可能更清楚表达要达到的目的)
可不可以不判断是否闭都能排到跟多线段同样的段数.?

点评

封闭要少一个顶点,你自己补上,再展开。  详情 回复 发表于 2013-6-13 22:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-6-13 22:07:07 | 显示全部楼层
函数发布里面有求顶点的函数啊。不知道你是怎么求的顶点

  1. (setq ed (entget (car (entsel))))
  2. (setq a (vl-remove-if '(lambda(x)(/= (car x) 10)) ed))
  3. ((10 1630.42 293.409) (10 2020.9 317.008) (10 2050.82 541.981) (10 1597.35
  4. 655.254) (10 1540.67 450.733))

  5. 命令: (setq a (mapcar 'cdr a))
  6. ((1630.42 293.409) (2020.9 317.008) (2050.82 541.981) (1597.35 655.254)
  7. (1540.67 450.733))


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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-6-13 22:08:39 | 显示全部楼层
kwok 发表于 2013-6-13 21:31
就是封闭了才少一段。它只按找到的顶点排,所以少了p4~p1这一段 (我把图片更新了一下,现在看可能更清楚 ...

封闭要少一个顶点,你自己补上,再展开。

点评

不知道怎么补顶点,请帮忙把1楼的码改一下补上一个点,谢谢!  详情 回复 发表于 2013-6-14 10:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

 楼主| 发表于 2013-6-14 10:42:01 | 显示全部楼层
newer 发表于 2013-6-13 22:08
封闭要少一个顶点,你自己补上,再展开。

不知道怎么补顶点,请帮忙把1楼的码改一下补上一个点,谢谢!

点评

你用下上面给你提供的函数,不就补上了吗? lst 是你的顶点表  详情 回复 发表于 2013-6-14 12:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-14 12:11:34 | 显示全部楼层
kwok 发表于 2013-6-14 10:42
不知道怎么补顶点,请帮忙把1楼的码改一下补上一个点,谢谢!

你用下上面给你提供的函数,不就补上了吗?

lst 是你的顶点表
  1. (if (XD::Curve:IsClosed e)
  2.    (setq lst (XD::PnTs:Close lst))
  3. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-14 16:10:52 来自手机 | 显示全部楼层
用 70 判断不完全,还要判断起始点是否相同以确定是否添加点来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-14 16:24:45 | 显示全部楼层
Free-Lancer 发表于 2013-6-14 16:10
用 70 判断不完全,还要判断起始点是否相同以确定是否添加点

这不是闭合的范畴,这已经是点重合的范畴了,就是线段长度为零的情况,判断也不复杂,就是长度为零就不画线就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

 楼主| 发表于 2013-6-14 16:36:01 | 显示全部楼层
我换方法了,先直接画线,再取线的顶点.
直接排顶点表要考滤选中的线是否闭合,闭合的总是会少一点,因它的起点和终点是一个点.
如果是闭合我把它弄成不闭合了,好象也不行,,所以这个补点,不会弄,水平有限.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-14 16:47:29 | 显示全部楼层
kwok 发表于 2013-6-14 16:36
我换方法了,先直接画线,再取线的顶点.
直接排顶点表要考滤选中的线是否闭合,闭合的总是会少一点,因它 ...

70组码为1是闭合线(不懂VL方法,不知vlax-curve-isClosed所指的闭合是重合还是真的闭合),对闭合线,把点表的第一个点复制到最后,就是“补点”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2226个

财富等级: 金玉满堂

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 12:34 , Processed in 0.490144 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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