Como ordenar os layouts do AutoCAD em ordem crescente

Hoje surgiu uma questão num grupo de whatsapp (mórre deabo!!) de como seria uma maneira de ordenar os layouts no AutoCAD.
Bem, considere o código abaixo:


(defun c:ordenalayout (ordem listaLayouts layouts)
  
;carrega as extensoes VL
  (vl-load-com)
  
  (
setq
    
;obtem a coleção de layouts do desenho atual
    listaLayouts (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
    
;obtem a lista de nomes de layout, ordenados em ordem crescente
    layouts      (vl-sort (layoutlist'<)
    
;inicializa a ordem
    ordem        1)
  

  
;para todo nome de layout na lista de nomes ordenados
  (foreach layout layouts
    
;poe a ordem do layout igual a 'ordem'
    (vla-put-taborder (vla-item listaLayouts layoutordem)
    
;incrementa a ordem
    (setq ordem (1+ ordem))
    )
)

Ele ordena os layouts em ordem alfabética (ok, lexicograficamente em ordem crescente).

Note, estou supondo que se tem número no nome do layout, você escreveu algo parecido com:
"FL-01", "FL-02", ... "FL-55", ... "FL-XX"

E não:
"FL-1", "FL-2", ... "FL-55", ... "FL-XX"

Note que os números menores que 10, tem o zero na frente.

Um comentário: