Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  member und Gruppencode

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:  member und Gruppencode (1839 mal gelesen)
Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 15. Feb. 2008 17:07    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,

eine Verständnisfrage, wenn ich den folgenden Code verwende:

;; ELEM ist das gewählte Objekt, in dem Fall eine Spline.
(setq INHALT (entget (cdar (entget ELEM))))
(setq INHALT (member (assoc 10 INHALT) INHALT))

Mit
(member (assoc 10 INHALT) INHALT)
will ich alle Angaben mit dem Gruppen-Code 10 in der Liste INHALT haben. Das funktioniert auch einwandfrei, es sind dann in der Liste INHALT auch alle mit dem Gruppen-Code 11 enthalten.

Ich benötige die 10er und die 11er in der Liste, aber warum sind die 11er einfach mit dabei?

Gruß
Theodor Schönwald


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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Feb. 2008 17:49    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 Theodor Schoenwald 10 Unities + Antwort hilfreich

(member  liefert doch die RESTLISTE ab Fundstelle zurück,

um alle GC10'er zu bekommen ist
(vl-remove-if-not '(lambda(X)(member (car X) '(10))) INHALT)
besser.
..habs gleich so implementiert, das man auch '(10 11) übergeben kann um nach GC10 und GC11 zu suchen

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 15. Feb. 2008 22:18    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

Danke Thomas,

manchmal sieht man die einfachsten Sachen nicht.
Danke für den schönen Code-Vorschlag, leider kann ich ihn nur bei ACAD und seit neuestem (seit Torsten Moses für Bricscad arbeitet) auch für Bricscad. Bei Progecad, ZWcad und den DWGeditor von Solid Works, funktionieren keine VL-Befehle und sonstige Unarten haben diese Programme auch, aber auch Sachen die geschickter sind als bei ACAD, z.B. Konturrichtung bei einer Polylinie ändern ist im Pedit-Befehl vorhanden.
Auch die unnötige Frage, wenn ich bei Pedit eine Linie oder Bogen anwähle, ob das Element in eine Polylinie umgewandelt werden soll, ist nicht vorhanden.

Diese Vorteile machen mir aber wieder Arbeit, wenn ein Lisp-Tool für
für ACAD und einen ICAD-Abkömmling laufen soll:

Beispiel:
Zuerst mit "ACADVER" die Version abfragen,
Dann wenn ACAD:
(command "_pedit" elem "_Y" "_J" "" ...
sonst:
(command "_pedit" elem "_J" "" ...
und noch mehr so schöne Sachen.

Aber das nur als allgemeine Info.

Viele Grüße
Theodor



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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 16. Feb. 2008 17:47    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 Theodor Schoenwald 10 Unities + Antwort hilfreich

naja .. dann würde ich mir sowas wie vl-remove nachproggen .. mit repeat/foreach und if und cons sollte es eigentlich kein Problem darstellen

------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

scj
Mitglied
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 17. Feb. 2008 10:56    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 Theodor Schoenwald 10 Unities + Antwort hilfreich

Ich habe vor einiger Zeit mal massoc gefunden:

Code:

(defun massoc (key alist / x nlist) ; Jaysen Long
(foreach x alist
(if
(eq key (car x))
(setq nlist (cons (cdr x) nlist))
)
)
(reverse nlist)
)


Das verwende ich auch für BricsCAD.
Mit besten Grüßen aus der Rhön
Jochen

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 17. Feb. 2008 14:05    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

Danke Jochen,

Du hast immer den Punkt, den ich gerade benötige.

Viele Grüße

Theodor

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 18. Feb. 2008 10:52    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,

mit dem Vorschlag von Jochen, sehen die Zeilen nun so aus:

(setq INHALT (entget (cdar (entget ELEM)))
      INHALT (append (MASSOC 10 INHALT) (MASSOC 11 INHALT))

Gruß
Theodor Schönwald

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 21. Feb. 2008 00: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 Thomas,

ich musste als Ersatz für "vl-remove-if-not" nichts basteln, Axel hatte es längst gebastelt.
;;---------------------------------
(defun WHEREEVER (LISTE EXPR /)
(apply 'append
        (mapcar
        '(lambda (V /)
          (if ((eval EXPR) V)
            (list V)
          )
          )
        LISTE
        )
)
)
;;-----------------------------------

Mit WHEREEVER von Axel geht es so:

(setq INHALT (entget (cdar (entget ELEM)))
(WHEREEVER INHALT '(lambda (x) (member(car x) '(10 11))))

Nun funktionieren beide Vorschläge Deiner mit der Ergänzung von Axel und der von Jochen.

Nochmals Danke

Gruß
Theodor

[Diese Nachricht wurde von Theodor Schoenwald am 21. Feb. 2008 editiert.]

[Diese Nachricht wurde von Theodor Schoenwald am 21. Feb. 2008 editiert.]

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