马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 st788796 于 2013-9-27 09:07 编辑
 - ;;ss - pickset
- ;;row --- row --- 排序方式,0 按行 1 按列,选择方式为拾取或 F 方式时无效
- ;;x-oper- 行方向,'< 以SS整体包围盒的0/1连线做基线(小号在下),'> 以2/3连线做基线(小号在上)
- ;;y-oper- 列方向,'< 以SS整体包围盒的0/3连线做基线(小号在左),'> 以1/2连线做基线(小号在右)
- (defun XD::Pickset:TableSortbySelect (ss row x-oper y-oper / pts->dircect info el pts mod)
- (defun pts->dircect (p1 p2 / an mod)
- (setq an (angle p1 p2))
- (cond
- ((< 0. an (* pi 0.5)) ;_左下
- (setq mod 0)
- )
- ((< (* pi 0.5) an pi) ;_右下
- (setq mod 1)
- )
- ((< pi an (* pi 1.5)) ;_右上
- (setq mod 2)
- )
- (t (setq mod 3))
- ) ;_左上
- mod
- )
- (setq info (ssnamex ss 0))
- (if (member (car info) '(1 4)) ;_ Pick & f
- (setq el (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
- (progn ;_2 w & wp ; 3 c & cp
- (setq pts (mapcar 'cadr (cdadr info)))
- (if (= (length pts) 4)
- (setq mod (pts->direct (car pts) (caddr pts)))
- (setq mod
- (pts->direct (car pts) (apply 'xdrx_points_centroid pts))
- )
- )
- (setq el (xd::pickset:tablesort ss row mod x-oper y-oper))
- )
- )
- el
- )
|