* 폴더내 파일 리스트를 검색하면 아래와 같이 표현 됩니다.
입력값 : (vl-sort(acad_strlsort(vl-directory-files (getvar “dwgprefix”) “*.dwg”)) ‘<)
출력값 : (“M-100.dwg” “M-1000.dwg” “M-10000.dwg” “M-200.dwg” “M-300.dwg”)
* (“M-100.dwg” “M-200.dwg” “M-300.dwg” “M-1000.dwg” “M-10000.dwg”) 이런 순서로 하고 싶습니다
설비^^*Lv.0
리스트 정렬방법 도와주세요
공유
파일명은 문자이고 문자의 소트는 출력된 결과가 정상입니다.
님은 파일명에 포함된 숫자로 소트하고 싶다는 것이므로
1. 문자를 숫자로 바꾸는 함수 구현
(atoi (substr “M-100.dwg” 3 )) ; – 세번째문자에서 정수로변환
2. 비교 함수로 변경
‘(lambda (s1 s2) (< (atoi (substr s1 3 )) (atoi (substr s2 3 )) ) )
3. 소트문에서 ‘< 를 비교함수로 치환
(vl-sort(acad_strlsort(vl-directory-files (getvar “dwgprefix”) “*.dwg”))
‘(lambda (s1 s2) (< (atoi (substr s1 3 )) (atoi (substr s2 3 )) ) ) )