| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Entmod mit Variable benutzen (1328 mal gelesen)
|
RSt-Stahl Mitglied
Beiträge: 79 Registriert: 08.07.2005 ACAD 2006 AMD Athlon XP +4800 X2 1,5 GB Ram 500 GB HD ATI Radeon XT1900
|
erstellt am: 24. Jan. 2008 15:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, habe ein Problem mit einem Code den ich gerne mit einer Variablen "füllen" würde nur leider funktioniert es nicht so wie ich es mir vorstelle. (entmod(subst'(62 . 2)(assoc 62 (entget obj))(entget obj))) funktioniert einwandfrei. Nur wenn ich anstelle von Farbe 2 eine variable einfügen will funktioniert es nicht mehr. Habe schon zahlreiche Möglichkeiten versucht (siehe unten) leider bekomme ich es nicht hin. Hat jemand von euch eine Idee wie ich das anstellen kann? Weitere Versuche: (entmod(subst'(62 . Farbe01)(assoc 62 (entget obj))(entget obj))) oder (entmod(subst'(62 . "Farbe01")(assoc 62 (entget obj))(entget obj))) sowie (entmod(subst'(62 . (rtos Farbe01))(assoc 62 (entget obj))(entget obj))) brachten keinen Erfolg. Möchte mir eine Anwendung erstellen um Farben von Elementen, sowie Layer und Linientypen abzuändern.... Danke schon mal im voraus. Thomas P.S. Ich habe schon mal Elemente mit entmod erstellt da konnte ich Variablen benutzen! jedoch wurde die listen mit cons erstellt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 24. Jan. 2008 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
(setq FARBE01 25) (entmod(subst (cons 62 Farbe01)(assoc 62 (entget obj))(entget obj))) du darft die Listen nicht quoten .. das war aber schon öfter hier Thema im Forum .. ich empfehle dir noch mal das Autolisp-Kochbuch als Lektüre!!
------------------ - 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 |
RSt-Stahl Mitglied
Beiträge: 79 Registriert: 08.07.2005 ACAD 2006 AMD Athlon XP +4800 X2 1,5 GB Ram 500 GB HD ATI Radeon XT1900
|
erstellt am: 24. Jan. 2008 15:47 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: (setq FARBE01 25) (entmod(subst (cons 62 Farbe01)(assoc 62 (entget obj))(entget obj))) du darft die Listen nicht quoten .. das war aber schon öfter hier Thema im Forum .. ich empfehle dir noch mal das Autolisp-Kochbuch als Lektüre!!
Hallo CADmium,
das mit dem Quoten war tatsächlich der Fehler! Habe das Kochbuch leider zuhause liegen. Aber wäre wohl trotzdem nicht so schnell wie durch deine Hilfe auf den Fehler gekommen! Noch mal danke U's sind unterwegs Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 24. Jan. 2008 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
Zitat: Original erstellt von RSt-Stahl: Noch mal danke U's sind unterwegs
Auch Danke. ------------------ - 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 |
RSt-Stahl Mitglied
Beiträge: 79 Registriert: 08.07.2005 ACAD 2006 AMD Athlon XP +4800 X2 1,5 GB Ram 500 GB HD ATI Radeon XT1900
|
erstellt am: 24. Jan. 2008 17:10 <-- editieren / zitieren --> Unities abgeben:
Eine abschließende Frage hätte ich dann aber doch noch wie verhält es sich bei append wenn ich dort den Wert aus der Variablen weitergeben will? Ich bekomme immer die Fehlermeldung: Fehlerhafte Funktion (62 . 241) ich versuche den Eintrag so zu erstellen: (setq farbe01 241) (entmod(append(entget obj)((cons 62 farbe01)))) normaler weise würde ich hier auch Quoten! nur das funktioniert genauso wenig. Wie bei dem anderen Beispiel 3 Posts vorher! Leider brauche ich die Funktion auch da ich Objekte habe die keinen GP 62 haben..... Gruß Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 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: 24. Jan. 2008 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
Hallo Thomas, es müßte eigentlich so funktionieren: (setq farbe01 241) (entmod(append(entget obj)(LIST(cons 62 farbe01)))) weil append immer Listen haben möchte. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSt-Stahl Mitglied
Beiträge: 79 Registriert: 08.07.2005 ACAD 2006 AMD Athlon XP +4800 X2 1,5 GB Ram 500 GB HD ATI Radeon XT1900
|
erstellt am: 25. Jan. 2008 09:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, ja habe ich auch im Kochbuch gestern Abend gelesen (das append listen haben möchte) habe dann auch den Ausdruck geprüft: (setq farbe01 241) (listp (cons 62 farbe01)) ich bekam ein True zurück deswegen dachte ich es wäre bereits eine liste! Ich glaube ich sollte das Buch mal von Anfang an durcharbeiten und vieles was ich nur durch versuchen "erlernt" habe vergessen und mit dem Buch bei Null anfangen. Danke für die Hilfe Gruß Thomas PS: U's sind verschickt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 25. Jan. 2008 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
Zitat: Original erstellt von joern bosse: Hallo Thomas, es müßte eigentlich so funktionieren: (setq farbe01 241) (entmod(append(entget obj)(LIST(cons 62 farbe01))))weil append immer Listen haben möchte.
@Jörn vorweg: es funktioniert so (da ausprobiert) Ich dachte immer man muß bestimmte GC (wie z.B. 62) immer zwischen den 100ern einfügen, oder sortiert das ACAD dann automatisch richtig ein? (hab' das mal irgendwo hier im Forum gelesen) Ciao Georg
------------------ http://www.xx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Jan. 2008 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
Zitat: Original erstellt von gmk: @Jörnvorweg: es funktioniert so (da ausprobiert) Ich dachte immer man muß bestimmte GC (wie z.B. 62) immer zwischen den 100ern einfügen
besser ist das .. bei der Farbe ist es wohl nicht so kritisch
------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 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: 25. Jan. 2008 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Jan. 2008 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
nimm z.B. Mtext ... der mehrere GC 3 (und den GC1) haben kann, in denen der Textstring abgespeichert ist .. da die falsche Reihenfolge beim entmoden ... oder nimm ne Bemaßung: z.B. ((-1 . <Objektname: 7432aa38> ) (0 . "DIMENSION") (330 . <Objektname: 71453cd8> ) (5 . "F7DF") (100 . "AcDbEntity") (67 . 1) (410 . "Zeichnung Bl.1") (8 . "AM_5") (100 . "AcDbDimension") (2 . "*D114") (10 299.252 449.645 0.0) (11 302.252 452.345 0.0) (12 0.0 0.0 0.0) (70 . 32) (1 . "<>") (71 . 5) (72 . 1) (41 . 1.0) (42 . 30.0) (73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) (210 0.0 0.0 1.0) (3 . "KE-DIMSTYLE") (100 . "AcDbAlignedDimension") (13 305.252 420.141 0.0) (14 299.252 420.141 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 0.0) (50 . 3.14159) (100 . "AcDbRotatedDimension")) nach (100 . "AcDbEntity") kommen die (allgemeinen) ACADObjekteigenschaften nach (100 . "AcDbDimension") die Eigenschaften einer Bemaßung algemein nach (100 . "AcDbAlignedDimension") .. die speziellen Eigenschaften einer ausgerichteten Bemaßung usw. Da sollte man bei der entmake liste schon aufpassen.. mache Sachen wie den GC62 sortiert entmod , bei (62 . 256) wird er sogar nicht gesetzt, sondern das dotted-pair ganz entfernt .. usw. .. aber das ist alles IMHO nirgens dokumentiert. Deshalb ist man mir der richtigen Reigenfolge (meist) auf der sicheren Seite ------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 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: 25. Jan. 2008 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für RSt-Stahl
|