| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: mehrere Elemente in List tauschen mit subst (991 / mal gelesen)
|
cadking Mitglied CAD-Zeichendiensleistung
 
 Beiträge: 242 Registriert: 26.10.2004 Intel Quadcore i7,W7-64bit, Quadro FX 3800 MEP/ACA2018; MEP/ACA2018; MEP/ACA2021; MEP/ACA2021
|
erstellt am: 30. Sep. 2019 20:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich möchte in einer Entityliste von Layout mehere Elemente autauschen. Hinweis zu Werten: (setq Papierformat "ISO_full_bleed_A2_(594.00_x_420.00_MM)") (setq Ausrichtung (cons 73 0)) !Bereich -> ((0.0 0.0 0.0) (1211.0 594.0 0.0)) (setq Planlänge (car(car(cdr bereich)))) -> 1211.0 (setq Planhöhe (car(cdr(car(cdr bereich))))) -> 594.0 LayoutEntlist: (-1 . <Objektname: 319e1520> ) (0 . "LAYOUT") (5 . "BEB2") (102 . "{ACAD_REACTORS") (330 . <Objektname: 3a581560> ) (102 . "}") (330 . <Objektname: 3a581560> ) (100 . "AcDbPlotSettings") (1 . "") (2 . "Kein") (4 . "Letter_(8.50_x_11.00_Inches)") (40 . 6.35) (41 . 6.35) (42 . 6.35001) (43 . 6.35001) (44 . 215.9) (45 . 279.4) (46 . -2068.41) (47 . -752.237) (48 . 0.0) (49 . 0.0) (140 . 1211.0) (141 . 594.0) (142 . 1.0) (143 . 1.0) (70 . 512) (72 . 1) (73 . 0) (74 . 0) (7 . "") (75 . 16) (147 . 1.0) (76 . 0) (77 . 2) (78 . 300) (148 . 1042.05) (149 . 244.961) (100 . "AcDbLayout") (1 . "A1Überlänge") (70 . 1) (71 . 2) (10 1020.01 500.926 0.0) (11 1235.91 780.326 0.0) (12 0.0 0.0 0.0) (14 282.434 499.925 -0.00152582) (15 1711.05 1094.03 3.49246e-08) (146 . 0.0) (13 0.0 0.0 0.0) (16 1.0 0.0 0.0)
(setq newLayoutEntlist (subst (cons 10 (car bereich))(assoc 10 LayoutEntlist);Plotfenster Ecke unten links (cons 11 (car (cdr bereich)))(assoc 11 LayoutEntlist);Plotfenster Ecke oben rechts (cons 4 Papierformat) (assoc 4 LayoutEntlist);Papierformat Ausrichtung (assoc 73 LayoutEntlist);Zeichnungsausrichtung (Querformat 73 . 1)(Hochformat 73 . 0) (cons 46 0.0) (assoc 46 LayoutEntlist);Abstand von Fenster zu Papierformat unten (cons 47 0.0) (assoc 47 LayoutEntlist);Abstand von Fenster zu Papierformat oben (cons 48 0.0) (assoc 48 LayoutEntlist);Abstand von Fenster zu Papierformat rechts (cons 49 0.0) (assoc 49 LayoutEntlist);Abstand von Fenster zu Papierformat links (cons 148 0.0) (assoc 148 LayoutEntlist);X-Versatz Fenster zu Papierformat (cons 149 0.0) (assoc 149 LayoutEntlist);Y-Versatz Fenster zu Papierformat (cons 44 Planlänge)(assoc 44 LayoutEntlist);Plotfensterlänge von Papierformat (cons 45 Planhöhe)(assoc 45 LayoutEntlist);Plotfensterhöhe von Papierformat LayoutEntlist) ) gibt mir -> Zu viele Argumente -< zurück Was ist mit dem subst nicht in Ordnung? Ich habe es auch ohne die Kommentare (die Kommentare hinter den versucht. Gleiches Ergebnis. ------------------ Danke Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22675 Registriert: 03.06.2002 Alles
|
erstellt am: 30. Sep. 2019 21:24 <-- editieren / zitieren --> Unities abgeben:          Nur für cadking
Öffne die AcadHilfe und schau dir die Doku zur Lispfunktion SUBST an. Unabhängig davon ob es in dem Fall überhaupt funktionieren wird..Bitte teste die Funktion an einer einfachen LINIE! Du wirst in der Doku sehen: Subst erwartet 3 Argumente, nicht mehr, nicht weniger. Du wirst also jedes Ergebnis zwischenspeichern müssen (setq) und mit dieser Entityliste weiterarbeiten müsse oder das Ganze verschachteln müssen. Aber mach es zunächst mit dem Zwischenspeichern, das hilft dem Verständnis. Meld dich mit deinem LINIE Test (und nur 2 oder 3 Änderungen) wenn es noch immer nicht funktionieren will. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| Anzeige: | Infos zum Werbeplatz >> | GeoTools CAD APP für Tiefbau, Facility Management, GIS, Vermessung und Kartografie GeoTools is a geo-data application that is useful to view, create, modify, analyze and report on CAD data that is geographic in nature. Useful for GIS data creation, surveying, mapping, facilities management, infrastructure, landscape development, city planning or similar, workflows.
|
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung und AutoLISPler
    
 Beiträge: 1781 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 01. Okt. 2019 17:57 <-- editieren / zitieren --> Unities abgeben:          Nur für cadking
Hallo Stefan, nur so ein Gedanke, das kann man auch mit einer MAPCAR-Schleife machen. Die Liste "layoutEntList" mit MAPCAR durchlaufen lassen, und jeweils auf Vorhandensein des aktuellen Gruppencodes mit ASSOC in der Liste "NewList" prüfen. Wenn ja, dann wird der Eintrag aus der Liste "newList" verwendet, sonst der Eintrag aus der Liste "layoutEntList". Einschränkung: auf diese Weise dürfen keine Gruppencodes getauscht werden, die doppelt auftreten (z.B. Gruppencode 10 bei LW-Polylinie), das gibt Murks. Anmerkung: in der Liste "layoutEntList" habe ich bei den Gruppencodes -1 und 330 einen String eingefügt, ist ja nur zum testen des Prinzips. Code:
(defun c:test ( / AUSRICHTUNG BEREICH LAYOUTENTLIST NEWLAYOUTENTLIST NEWLIST PAPIERFORMAT PLANHÖHE PLANLÄNGE X) (setq Papierformat "ISO_full_bleed_A2_(594.00_x_420.00_MM)") (setq Ausrichtung 0) (setq bereich '((0.0 0.0 0.0) (1211.0 594.0 0.0))) (setq Planlänge (car(cadr bereich)));;; -> 1211.0 (setq Planhöhe (cadr(cadr bereich)));;; -> 594.0 (setq NewList (list(cons 10 (car bereich));Plotfenster Ecke unten links (cons 11 (cadr bereich));Plotfenster Ecke oben rechts (cons 4 Papierformat) ;Papierformat (cons 73 Ausrichtung);Zeichnungsausrichtung (Querformat 73 . 1)(Hochformat 73 . 0) (cons 46 0.0);Abstand von Fenster zu Papierformat unten (cons 47 0.0);Abstand von Fenster zu Papierformat oben (cons 48 0.0);Abstand von Fenster zu Papierformat rechts (cons 49 0.0);Abstand von Fenster zu Papierformat links (cons 148 0.0);X-Versatz Fenster zu Papierformat (cons 149 0.0);Y-Versatz Fenster zu Papierformat (cons 44 Planlänge);Plotfensterlänge von Papierformat (cons 45 Planhöhe);Plotfensterhöhe von Papierformat ) ) ;;;Nur Testliste, Normalerweise mit (entget ename) (setq layoutEntList '((-1 . "<Objektname: 319e1520>");;;STRING, nur zum testen (0 . "LAYOUT") (5 . "BEB2") (102 . "{ACAD_REACTORS") (330 . "<Objektname: 3a581560>");;;STRING, nur zum testen (102 . "}") (330 . "<Objektname: 3a581560>");;;STRING, nur zum testen (100 . "AcDbPlotSettings") (1 . "") (2 . "Kein") (4 . "Letter_(8.50_x_11.00_Inches)") (40 . 6.35) (41 . 6.35) (42 . 6.35001) (43 . 6.35001) (44 . 215.9) (45 . 279.4) (46 . -2068.41) (47 . -752.237) (48 . 0.0) (49 . 0.0) (140 . 1211.0) (141 . 594.0) (142 . 1.0) (143 . 1.0) (70 . 512) (72 . 1) (73 . 0) (74 . 0) (7 . "") (75 . 16) (147 . 1.0) (76 . 0) (77 . 2) (78 . 300) (148 . 1042.05) (149 . 244.961) (100 . "AcDbLayout") (1 . "A1Überlänge") (70 . 1) (71 . 2) (10 1020.01 500.926 0.0) (11 1235.91 780.326 0.0) (12 0.0 0.0 0.0) (14 282.434 499.925 -0.00152582) (15 1711.05 1094.03 3.49246e-08) (146 . 0.0) (13 0.0 0.0 0.0) (16 1.0 0.0 0.0) )) (setq newLayoutEntlist (mapcar '(lambda(X) (if (assoc (car X)NewList) (assoc (car X)NewList) X))layoutEntList))
newLayoutEntlist)
------------------ viele Grüße Jörn http://www.bosse-engineering.com Foto-Manager Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |