找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1883|回复: 9

[求助]:图元排序请教

[复制链接]
发表于 2006-1-17 18:39:55 | 显示全部楼层 |阅读模式

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

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

×
ssget生成的选择集是按实体生成的顺序排列的,这样的顺序其实相当于无序。
我希望按一定规则重新排序,为后续进一步操作做准备。切割机从某一指定起点开始,按最短路径切割完所有图形。自感LISP力不从心,还望高手指教。
有高手给我提供过思路,我贴出来,大家探讨,同时希望高手能帮我。

1、得到要排序的图元,只能是LINE,PLINE,ARC,CIRCLE;
2、给定开始点;
3、取出图元的首未点进行判断;
4、判断首未点与开始点(前一点)的距离;
5、若与未点距离近,从未点重画图元,删去旧图元。否则从起点重画图元。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11283个

财富等级: 富甲天下

发表于 2006-1-18 14:29:09 | 显示全部楼层

Re: [求助]:图元排序请教

最初由 zhengguoyun 发布
[B]ssget生成的选择集是按实体生成的顺序排列的,这样的顺序其实相当于无序。
我希望按一定规则重新排序,为后续进一步操作做准备。切割机从某一指定起点开始,按最短路径切割完所有图形。自感LISP力不从心,还望高手?.. [/B]


从上到下,逐步求精。
1、得到要排序的图元,只能是LINE,PLINE,ARC,CIRCLE;
   (使用SSGET函数)
2、从头开始循环;
3、顺序取1号图元;放入排序表中;
4、从第二图元开始循环;
5、顺序取另一图元;
6、判断新图元的首未点与1号图元的首未点是否重合,
   若与首点重合,
   将图元加在序列图元的前面,改首点为该图元的不重合点,未点不变。从选择集中删去图元,内循环序号减一;
   若与未点重合
   将图元加在序列图元的后面,改未点为该图元的不重合点,首点不变。从选择集中删去图元,内循环序号减一;
7、内循环序号加一
8、若小于图元总数,回到5步;
9、将连续图元表加入图元排序表;
10、外循环序号加一
11、若小于图元总数,回到3步;
12、给定开始点;
13、循环判断已排序表中图元与开始点的距离,将包含最近点的图元序列移到表头;
14、将移到表头的图元序列中的未点作为开始点;
15、重复13;
16、按最近点排好序的表重画图元(注意图元的首未点)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-20 14:20:38 | 显示全部楼层
衷心地感谢楼上的回复,但是有可能各个图元间没有公共点的情况,我思路有一点了,但是实际操作起来有一定的困难,楼上的囊继续帮我吗,我已经写了两天了,中间有好多小问题我都没搞定
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11283个

财富等级: 富甲天下

发表于 2006-1-20 22:54:51 | 显示全部楼层
重合判断用函数EQUAL,其最后一个参数是两数的误差。
没有公共点就作为下一切割开始点。
有问题就提,如不好说明可以发图或已经写出的程序。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-21 09:54:48 | 显示全部楼层
一种最简单的解决办法
1,以开始点为始点,然后按照一定精度dx在[0,PI]之间构造一条直线,分别与选择的实体求到所有的交点
2,然后取出这些交点到始点最短的焦点集合A1(有可能只有一个交点或者无交点),并记录下最短的距离L1,然后在比较以前的最短距离L1S,如果L1〈L1S,那么L1S=L1,这是前一次的最短点集合A1S=A1。
3,在递增因子=PI或者LS1=最小的可控制的长度(一般为0)的时候退出循环。
4,最后得到最短的距离:L1S和这个最小路径的所有可能的切割终点集合A1S。
5,本模型适用范围:切割为一条直线;
6,模型说明:dx为你所追求的精度,越小,精度越高;当dx比较大的时候,可能出现变异,切记。在你采用此方法的时候,可以采用粗网格优化相结合,效果可能更好!
7/模型优点|:此模型不需要排列选择的图元;可以处理边缘线数据不闭和情况(即输入数据残缺)
8/模型缺点:计算时间与计算机性能和边缘线图元的多小有关系;dx过大,可能得到的解为逼近最优的解
8,你会不会c,如果会的话,我可以给你伪编码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-23 11:41:15 | 显示全部楼层
谢谢楼上的回复,我的切割线里有直线,圆弧/多义线,所以您的可能不能和我的要求,不过很谢谢你 。


另外想请教zxq0220 一个细节问题;怎样才能重画圆弧,使起点调换,还是说不可能。多义线的重画呢:我用
(setq list1 (cdr (entget n1)))
       (entmake list1)
实现了顺序的重画,反序的怎么办呢。请教!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11283个

财富等级: 富甲天下

发表于 2006-1-23 22:27:04 | 显示全部楼层
重画圆弧:如果用PLINE重画,就用三点画弧,只要算出弧的中点和两个端点就可以了。
另:你6楼写的程序只是重画(重新显示)选中的实体,并没有生成新的实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-24 09:08:10 | 显示全部楼层
其实上面的模型对圆弧和多义线也实用,只是实现需要知道切割的轨迹,然后构造相应的实体,最后求交即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2008-11-24 19:27:51 | 显示全部楼层
重画圆弧:如果用PLINE重画,就用三点画弧,只要算出弧的中点和两个端点就可以了。
另:你6楼写的程序只是重画(重新显示)选中的实体,并没有生成新的实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 21:08 , Processed in 0.327824 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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