Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Eigene Liste sortieren nach x oder y.

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Eigene Liste sortieren nach x oder y. (561 mal gelesen)
Jungspunt
Mitglied



Sehen Sie sich das Profil von Jungspunt an!   Senden Sie eine Private Message an Jungspunt  Schreiben Sie einen Gästebucheintrag für Jungspunt

Beiträge: 21
Registriert: 14.06.2009

erstellt am: 07. Sep. 2009 22:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo

Ich bräuchte bitte ein bischen Hilfe bei meinem unten angeführten
Beispiel. Und zwar möchte ich meine Liste die neben dem Objektnamen
auch den x und y Wert des Objekts enhält sortieren.
Und zwar nach Benutzereingabe Eingabe aufsteigen nach x oder y Koordinaten
oder absteigend.

Bin noch Anfänger.

Danke

Code:

(if (setq auswahl (ssget '((0 . "INSERT"))))
(progn
(setq n 0)
(repeat (sslength auswahl)
(setq obj_na (ssname auswahl n) n (+ n 1))
(setq obj_data (entget obj_na))
    (setq obj_punkt (cdr (assoc 10 obj_data)))

(setq punktx (car obj_punkt))
(setq punkty (cadr obj_punkt))
(setq liste_blocke (list obj_na punktx punkty 0.0))
(princ liste_blocke)
        )
  )
)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 07. Sep. 2009 22:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jungspunt 10 Unities + Antwort hilfreich

Hallo Jungspunt,
zuerst einmal solltest Du die Blöcke, die Du untersuchen willst in einer Liste zusammensammeln. Mit
Code:
(setq liste_blocke (list obj_na punktx punkty 0.0))
überschreibst Du immer wieder die Variable liste-blocke. für's Sammeln musst Du "CONS" verwenden:
Code:
(setq liste_blocke (cons (list obj_na punktx punkty 0.0) liste_blocke))
Dann schau Dir mal die Funktion "vl-sort" an. Die sortiert Listen entsprechend einer Vergleichsfunktion. z.B.
Code:
(vl-sort '(3 4 2 5) '< )
ergibt (2 3 4 5)
In Deinem konkreten Fall musst Du aber eine lambda-Funktion zum Vergleich heranziehen, da Du das 2. bzw. 3. Element zum Sortieren verwenden willst:
Code:
(setq liste_blocke (vl-sort liste_blocke (function (lambda (x y) (< (cadr x) (cadr y))))))
sortiert z.B. nach x-Koordinate aufsteigend.
Und jetzt als Bonus alles Zusammen:
Code:
(if (setq auswahl (ssget '((0 . "INSERT"))))
  (progn
    (setq n 0)
    (repeat (sslength auswahl)
      (setq obj_na (ssname auswahl n)
            n      (+ n 1)
      )
      (setq obj_data (entget obj_na))
      (setq obj_punkt (cdr (assoc 10 obj_data)))

      (setq punktx (car obj_punkt))
      (setq punkty (cadr obj_punkt))
      (setq liste_blocke (cons (list obj_na punktx punkty 0.0) liste_blocke))
    )
    (setq liste_blocke (vl-sort liste_blocke (function (lambda (x y) (< (cadr x) (cadr y))))))
    (princ liste_blocke)
  )
)


Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

          http://www.voxelman.de

[Diese Nachricht wurde von wronzky am 07. Sep. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jungspunt
Mitglied



Sehen Sie sich das Profil von Jungspunt an!   Senden Sie eine Private Message an Jungspunt  Schreiben Sie einen Gästebucheintrag für Jungspunt

Beiträge: 21
Registriert: 14.06.2009

erstellt am: 08. Sep. 2009 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super
Danke für deine Hilfe.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz