这个是明经上递增刷的部分框选代码,作用是文字的选择集按y坐标排序,然后按x坐标排序。对于左对齐的同列文字,x值相同,排序是按y从下到上。
但位于其他对齐,比如中间对齐的同列文字,虽然对齐点的x相同,但由于文字长度不同,插入点的x不同,程序就认为是不同的列,导致会因为部分长度较长的文字排序较为靠前。
所以,想求教下如何修改,可以按照文字的对齐点来对文字集合排序。
 - (setq lst (vl-sort lst (function (lambda
- (e1 e2) ; 框选文本先由下到上排序(其它情况自己修改)
- (< (cadr (car e1)) (cadr (car e2)))
- ))))
- (setq lst (vl-sort lst (function (lambda
- (e1 e2) ; 框选文本后由左到右排序(其它情况自己修改)
- (< (car (car e1))
- (if (and
- (>= (car (car e2)) (- (car (car e1)) txtlong))
- (<= (car (car e2)) (+ (car (car e1)) txtlong))
- )
- (car (car e1))
- (car (car e2))
- ))))))
|