| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Farbe auf von Layer - Problem mit GC420,430 (2343 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 14. Feb. 2012 15:39 <-- editieren / zitieren --> Unities abgeben:
Hi ! ich versuche gerade mittels LISP eine Elementfarbe auf vonLayer zu setzen. Bekantermaßen hat ein solches Element nicht den Gruppencode 62. Gefunden habe ich bisher im Netz den Link zu mapcar (http://www.autolisp-tutorial.mapcar.net/entmod.html). Aber irgendwie klappt das nur, wenn ich auf eine Element schreibe das auch nur eine Indexfarbe hat. Wenn das Zielelement allerdings einen Farbbuch hat (und damit den GC 420,430 beinhaltet) dann bleiben die GC erhalten und die Indexfarbe wird ignoriert. Kann einer von Euch mir einen Tipp geben wie ich das realisiert bekomme ? Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 14. Feb. 2012 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 15. Feb. 2012 09:42 <-- editieren / zitieren --> Unities abgeben:
hi ! das hat mir schon einmal bei der "Bereinigung" der Liste geholfen. Das Problem ist nur das mit entmod es jetzt ein Problem gibt. Vor dem entmod habe ich mir mal die Elementliste ausgeben lassen:
Code: ((-1 . <Objektname: 7ffffb09eb0>) (0 . LINE) (330 . <Objektname: 7ffffb069f0>) (5 . 283) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (370 . 106) (100 . AcDbLine) (10 8571.01 4280.33 0.0) (11 8732.12 1338.6 0.0) (210 0.0 0.0 1.0))
Nachdem zurückschreiben hat das Element immer noch sein Farbe die es vor dem entmod hatte: Code: ((-1 . <Objektname: 7ffffb09eb0>) (0 . "LINE") (330 . <Objektname: 7ffffb069f0>) (5 . "283") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 6) (370 . 106) (100 . "AcDbLine") (10 8571.01 4280.33 0.0) (11 8732.12 1338.6 0.0) (210 0.0 0.0 1.0))
Hat einer eine weiterführende Idee ? Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Feb. 2012 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 15. Feb. 2012 10:55 <-- editieren / zitieren --> Unities abgeben:
hi ! danke - damit habe ich schon einmal mit vonLayer hinbekommen. Damit hat sihc aber gleich die nächste Baustelle aufgemacht. Wenn ich auf eine Element ein TrueColor (GC420) oder ein Farbbuch (GC430) zuweisen möchte und vorher dieses nicht vorhanden ist, dann kommt es zu Problemen. Sind diese GC schon da, dann ist der Austausch kein Problem. Wenn der Gruppencode nicht mehr benötigt (zb. wenn eine Indexfarbe oder vonlayer / vonblock verwendet wird) - dann ist es auch jetzt möglich diesen GC zu entfernen. Wenn dieser aber nicht vorhanden ist, dann muss dieser irgendwie angehängt werden. Hierzu habe ich folgendes zusammengebaut: Code: (if source_gc420 ;;wenn ein GC vorliegt, dann wird dieser ausgetauscht (if (assoc 420 eliste) (setq eliste (subst (cons 420 source_gc420) (assoc 420 eliste) eliste ) ;Austauschen des Ltyps in der Elementdatenliste ) ;end-setq ;;ansonsten GC neu anhängen (setq eliste (list eliste (cons 420 source_gc420))) );endif (setq eliste (vl-remove-if'(lambda(X)(member(car X)'(420))) eliste)) );endif - gc420
Wenn ich das Ausführe dann kommt die Meldung, das der DXF-Gruppencode falsch ist: Zitat: gc62 42 gc420 14856199 gc430 RAL CLASSIC$RAL 1004 zurückschreiben: ((((-1 . <Objektname: 7ffffb09eb0>) (0 . LINE) (330 . <Objektname: 7ffffb069f0>) (5 . 283) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (62 . 42) (370 . 106) (100 . AcDbLine) (10 8571.01 4280.33 0.0) (11 8732.12 1338.6 0.0) (210 0.0 0.0 1.0)) (420 . 14856199)) (430 . RAL CLASSIC$RAL 1004)) Fehler: Fehlerhafte DXF-Gruppe: (((-1 . <Objektname: 7ffffb09eb0>) (0 . "LINE") (330 . <Objektname: 7ffffb069f0>) (5 . "283") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 42) (370 . 106) (100 . "AcDbLine") (10 8571.01 4280.33 0.0) (11 8732.12 1338.6 0.0) (210 0.0 0.0 1.0)) (420 . 14856199))
Hat einer vielleicht auch hierzu eine Idee ? Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Feb. 2012 11:04 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 15. Feb. 2012 11:14 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Feb. 2012 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 15. Feb. 2012 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
hallo jan Zitat: Wenn ich das Ausführe dann kommt die Meldung, das der DXF-Gruppencode falsch ist
das liegt daran, dass deine liste falsch aufgebaut wird. folgende zeile ist falsch: Code: (setq eliste (list eliste (cons 420 source_gc420)))
wenn du eine unterliste an eine bestehende liste mit unterlisten als unterliste anhaengen willst, dann so:
Code: (setq eliste (append eliste (list (cons 420 source_gc420))))
gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 15. Feb. 2012 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo ! mit dem Hinweis von neurosis hat es funktioniert - danke dafür. Zitat:
.. jo .. die Reihenfolge der GC beachten 62 kommt hinter 8, 420 hinter 62 und 430 hinter 420
das stimmt nicht ganz - es hat auch so funktioniert. AutoCAD sortiert die GC im Anschluss selber ein. Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Feb. 2012 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 20. Feb. 2012 13:02 <-- editieren / zitieren --> Unities abgeben:
Moin! ich muss dieses Posting nochmal aufnehmen. Mein Problem ist das irgendwie die modifizierte Liste nicht an dem Objekt übernommen wird - auch kommt keine Fehlermeldung. Hier erst einmal einige Info. Es soll die volayer-Eigenschaften (Farbe) auf ein Element mit Farbe übertragen werden. Hierzu entferne ich alle überflüssigen GC mittels beispielhaft: Code:
(setq eliste (vl-remove-if'(lambda(X)(member(car X)'(62))) eliste))
Jetzt habe ich mal eliste ausgeben lassen vor und hinter von Entmod eliste wie das Objekt vorgefunden wird: Zitat: ((-1 . <Objektname: 7ffffb0a420>) (0 . LINE) (330 . <Objektname: 7ffffb069f0>) (5 . 33A) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . Layer1) (62 . 6) (6 . ACAD_ISO02W100) (370 . 106) (100 . AcDbLine) (10 10010.3 814.887 0.0) (11 10130.3 -989.963 0.0) (210 0.0 0.0 1.0))
eliste vor ENTMOD:
Code: ((-1 . <Objektname: 7ffffb0a420>) (0 . LINE) (330 . <Objektname: 7ffffb069f0>) (5 . 33A) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . Layer1) (6 . ACAD_ISO02W100) (370 . 106) (100 . AcDbLine) (10 10010.3 814.887 0.0) (11 10130.3 -989.963 0.0) (210 0.0 0.0 1.0))
Nachdem sich nicht geändert hat fragt ich die aktuellen Daten mittels (entget (car (entsel))) ab: Zitat: ((-1 . <Objektname: 7ffffb0a420>) (0 . "LINE") (330 . <Objektname: 7ffffb069f0>) (5 . "33A") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Layer1") (62 . 6) (6 . "ACAD_ISO02W100") (370 . 106) (100 . "AcDbLine") (10 10010.3 814.887 0.0) (11 10130.3 -989.963 0.0) (210 0.0 0.0 1.0))
Gesperrt ist das Element auch nicht - wie gesagt es kommt auch keine Fehlermeldung - dennoch ist (62 . 6) immer noch da !!!! Hat einer von Euch eine Idee ? Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 20. Feb. 2012 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 20. Feb. 2012 15:18 <-- editieren / zitieren --> Unities abgeben:
|