尘缘一生 发表于 2022-12-4 09:00:08

图框排序函数

本帖最后由 尘缘一生 于 2022-12-4 19:44 编辑

对秋榄大侠的图框排序函数,进行下容差补充,

对一行图框,排列错位的,进行容差
注:对于画图,图幅不统一者(例:实际都是1号图,但画的图电子版却是大大小小),无效,大大小的那种。实际上,那种画法也很多,
    要求高的设计院是不允许的。


[*];图框排序左右上下排序点表----(一级)-----
[*];lis ((p1 p2) (p3 p4)...))包容合对角点表之表
[*];1 2 3 4
[*];5 6 7 8
[*];秋榄,MODIFY 尘缘一生
[*](defun order-pt1 (lis)         
[*](setq lis
[*]    (vl-sort lis
[*]      '(lambda (f1 f2 / p1 p2 p-3 p3 p4 rt x1 y1 x2 y2)
[*]         ;x1, y1对应于第一组的图框中心点的坐标
[*]         (setq p1 (car f1) p2 (cadr f1))
[*]         (setq p-3 (list (car p2) (cadr p1)));第一图框右下角
[*]         (setq x1 (* (+ (car p1) (car p2)) 0.5))
[*]         (setq y1 (* (+ (cadr p1) (cadr p2)) 0.5))
[*]         (setq p3 (car f2) p4 (cadr f2))
[*]         (setq x2 (* (+ (car p3) (car p4)) 0.5))
[*]         (setq y2 (* (+ (cadr p3) (cadr p4)) 0.5))
[*]         (if (< (abs (- y1 y2)) (* 0.2 (distance p2 p-3)));如果中心点y坐标之差小于第一个图框高度的1/5倍
[*]         (setq y1 y2) ; 排序认为在同一行
[*]         )
[*]         (setq rt (< y1 y2)) ;优先Y坐标比较,小的话在前
[*]         (if (and (null tr) (equal y1 y2 1e1))
[*]         ;Y坐标相同时,比较X坐标,大的话在前
[*]         (setq rt (> x1 x2))
[*]         )
[*]         rt
[*]       )
[*]    )
[*])
[*]lis
[*])


链接:https://pan.baidu.com/s/1VyaYDqSsYxiBMbk6OzR91g
提取码:m3lb

烟盒迷唇 发表于 2022-12-4 09:07:52

听说过秋枫,没听说过秋榄

e2002 发表于 2022-12-4 20:50:42

Model中同样的出图图框,比例不同,其大小不同很正常。在layout里面才能一样大小。

lxl217114 发表于 2022-12-5 14:42:50

秋榄是谁?满头的问号
+100861000010010   

chslwj521 发表于 2024-3-30 08:22:56

赞,感谢大佬分享;P
页: [1]
查看完整版本: 图框排序函数