CADsite forum

AutoCAD => Autolisp => Topic gestart door: gery op vr 01 07 2016, 18:56:39

Titel: selection set omzetten naar list
Bericht door: gery op vr 01 07 2016, 18:56:39
Is er een eenvoudige manier om in lisp een selection set om te zetten naar een list?
Of is er een eenvoudige manier om een list met op het scherm geselecteerde items op te zetten?

Achtergrond van de vraag: foreach werkt met lists, while en repeat werken met selection sets.
Titel: Re: selection set omzetten naar list
Bericht door: Reimer op vr 01 07 2016, 22:20:07
Even googlen levert volgens mij bruikbare oplossingen.
Maar je kunt toch ook gewoon while of repeat gebruiken op je selection set?
Wat ik vaak gebruik (even uit mijn hoofd dus hopelijk zonder typefouten):
(setq SS (ssget))
(setq CNT 0)
(while (< CNT (sslength SS))
  (setq OBJ (ssname SS CNT))
  ;-- programma --
  (setq CNT (+ CNT))
);_while


Reimer
Titel: Re: selection set omzetten naar list
Bericht door: gery op zo 03 07 2016, 13:31:53
Bedankt voor je antwoord Reimer.

Ik gebruik meestal de repeat functie:

(setq #ss (ssget ...))
(setq #counter (sslength #ss))
(repeat #counter
  (setq #counter (1- #counter))
  ; --- actual function ---
)


De foreach function leek me ook wel handig maar die werkt met een list ipv selection set.
Ik had gedacht dat er misschien een standaard AutoLISP functie zou bestaan die de omzetting op een eenvoudige (lees: met zeer weinig code) kan doen.
Titel: Re: selection set omzetten naar list
Bericht door: roy_043 op ma 04 07 2016, 09:21:24
BricsCAD heeft hier een standaard functie voor: vle-selectionset->list.
Maar het is ook redelijk eenvoudig om zelf een dergelijke functie te maken. Zie hier (http://www.cadsite.be/smf/index.php?topic=6450.msg33774#msg33774) voor een voorbeeld.
Titel: Re: selection set omzetten naar list
Bericht door: gery op ma 04 07 2016, 10:11:59
Bedankt allen!
Maar dit gaat me te ver leiden, ik zal de repeat functie wel blijven gebruiken.