FastFiber

OPGELOST - lijst met geopende tekeningen

Gestart door gery, wo 17 10 2018, 20:13:32

Vorige topic - Volgende topic

gery

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?
AutoCAD 2020 - Windows 10

roy_043

In de lambda gebruik je reverse. Dus jouw code gooit e.e.a. door elkaar.

gery

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!
AutoCAD 2020 - Windows 10

roy_043


gery

Zonder "reverse" staan alle open tekeningen netjes opgelijst, maar in omgekeerde volgorde van opening. Met "reverse" wordt de lijst niet correct omgekeerd. Raar.
AutoCAD 2020 - Windows 10


roy_043

@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))))

gery

Klopt Roy, 'k had het ondertussen ook ontdekt.

Bedankt voor het meedenken allen!
AutoCAD 2020 - Windows 10