list 的排序指令

  • Share this:

; list 的排序指令

; -------------------------------------------------------------------- ; 點座標 (x y z) 所組成的list ; 可以用下列的指令來排序

(setq PntLst ( vl-sort PntLst '( lambda (lista listb) ( > (car lista) (car listb))) ) ) ; 以點座標的 x 值, 由大至小排序

(setq PntLst ( vl-sort PntLst '( lambda (lista listb) ( < (car lista) (car listb))) ) ) ; 以點座標的 x 值, 由小至大排序

(setq PntLst ( vl-sort PntLst '( lambda (lista listb) (< (cadr lista) (cadr listb))) ) ) ; 以點座標的 y 值, 由小至大排序

(setq PntLst ( vl-sort PntLst '( lambda (lista listb) (< (caddr lista) (caddr listb))) ) ) ; 以點座標的 z 值, 由小至大排序

; --------------------------------------------------------------------

; acad_strlsort [autolisp 的排序指令]

(defun get_blklist_for_block () (setq blocksobj ( vla-get-blocks dwgobj)) (setq blklist nil) ( vlax-for sobj blocksobj (setq blkn ( vla-get-name sobj)) (if (/= (substr blkn 1 1) "*") (setq blklist ( cons blkn blklist)) ) ) (setq blklist ( acad_strlsort blklist)) )

; ------------------------------------------------------------------

; vl-sort [ vlisp 的排序指令 ]

(setq printlist nil) ( foreach printname pop_default_plot_list (if (/= ( substr printname (- ( strlen printname) 2) 3) "pc3") (setq printlist ( cons printname printlist)) ) ) (setq printlist ( vl-sort printlist ' > ))

(show_list "pop_def_plot" printlist)

; (setq boundingbox_list ( vl-sort boundingbox_list '( lambda (lista listb) (< ( car ( car lista)) ( car ( car listb))) ) ) )


Tags: