| |
| 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
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 15. Feb. 2008 17:07 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 15. Feb. 2008 17:49 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
(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
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 15. Feb. 2008 22:18 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 16. Feb. 2008 17:47 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
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
Beiträge: 554 Registriert: 09.08.2001
|
erstellt am: 17. Feb. 2008 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
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
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 17. Feb. 2008 14:05 <-- editieren / zitieren --> Unities abgeben:
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 18. Feb. 2008 10:52 <-- editieren / zitieren --> Unities abgeben:
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 21. Feb. 2008 00:03 <-- editieren / zitieren --> Unities abgeben:
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 |