Met LISP code (vlax-map-collection (vla-get-documents (vlax-get-acad-object)) '(lambda (x) (setq #lst (reverse (cons (vla-get-name x) #lst)))))
kan ik een lijst maken met daarin alle op dat moment geopende tekeningen. Echter, deze staan in een willekeurige volgorde. Hoe kan ik diezelfde lijst bekomen maar met de tekeningen in de volgorde zoals ze geopend zijn?
In de lambda gebruik je reverse. Dus jouw code gooit e.e.a. door elkaar.
Citaat van: roy_043 op do 18 10 2018, 09:09:50
In de lambda gebruik je reverse. Dus jouw code gooit e.e.a. door elkaar.
Inderdaad, was me nog niet opgevallen, normaal keert "reverse" de lijst gewoon om, maar dat blijkt niet zo te zijn.
Bedankt!
Reverse werkt naar behoren...
Zonder "reverse" staan alle open tekeningen netjes opgelijst, maar in omgekeerde volgorde van opening. Met "reverse" wordt de lijst niet correct omgekeerd. Raar.
Heb je hier wat aan:
https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-F3B27BD2-27FA-4185-B22C-85509175C171-htm.html
@Gery: Je stapelt reverse op reverse:
(setq lst (reverse (cons 1 lst))) => (1)
(setq lst (reverse (cons 2 lst))) => (1 2)
(setq lst (reverse (cons 3 lst))) => (2 1 3)
...
Probeer dit:
(reverse (vlax-for doc (vla-get-documents (vlax-get-acad-object)) (setq lst (cons (vla-get-name doc) lst))))
Klopt Roy, 'k had het ondertussen ook ontdekt.
Bedankt voor het meedenken allen!