关于按坐标位置排序的问题,请教各位大佬
按坐标如何排序才能达到如图的效果,琢磨了很长时间,百思不得其解 下面仅针对例图分析排序规则如下
1.
所有板材取左上角点
2.
当板材长度为全长时,仅以X由小到大排序
3.
当板材长度非全长时,行列排序,规则为:(主干)从下到上,(分支)从左到右
行列排序的函数可以搜我的帖子作参考,模式 (ssdivsort (ssget) 1 "-E" fuzz)
楼主你只需要解决板材是否全长的分组问题即可
再提供一个可能用的上的函数
;;将一个复合表“拍平”成一个非复合表。
(defun flatten ( biao )
(cond
((null biao) NIL)
((atom biao)(list biao))
((atom (car biao)) (cons (car biao) (flatten (cdr biao))))
((append (flatten (car biao)) (flatten (cdr biao))))
)
) 0:总点表lstp
1:先对X进行升序排序(P1 P2 P3 P4 P5......),取出X最小的点P1。
2:判断P2 P3的点,是否在在X轴容差范围内即是同一列,如果在就把分成一个表lstX1
3:判断对lst1进行Y轴排序LSTY1,取出Y轴的最小点PY1.PY1是X容差范围内左下角点。
4:根据PY1的Y轴坐标,在总点表中lstp,寻找Y轴容差范围(同一行)lstYX1,所有点进行编号。
5:总表中取出lstyx1,得到新lstp。重复上诉操作。
总结来说:先分列,找到第一列中的第一个点,根据这个点找到同行的点的进行编号。取出编号之后的点,再分列,找到第一列中的第一个点。。。。。。。 看不出普遍性, 把 13 去了,你想要什么样的结果?
两个矩形是否有分隔空间的作用。 你是只有两个矩形,还是图形中会有不定数量的其它图形? 看图排序规则似懂非懂。 中间的矩形为空洞,其他区域为等宽的板材,按从左到右的顺序编号 坐等大佬出现,哈哈。 这个问题应该这样解决:先求出每块板的矩形包络坐标,或者说是找出多少快板,然后对每块板进行排序。一块板中间被部分开洞,最小最大包络坐标也是可以处理的。 看图找规则。