| |
| 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: Layer Einstellung überschreiben (1761 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 28. Jan. 2013 17:07 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich habe folgendes Problem, ich habe 2 Zeichnungen, bei denen ich die Farbeinstellung der xrefs abgleichen will, also dass in beiden zeichnungen die gl. farben sind. problem ist, es der "layer state manager" bei xrefs nicht arbeitet. meine frage ist kann ich überhaupt die farben modifizieren ? Also mein code soll folgendes tun, ich gehe in die original zeichnung und lese eine liste mit layernamen und farbe aus, gehe anschl. in die Abgleich zeichnung und lese die liste ein und modify gleichzeitig die layer. ich weiss nur nicht ob das mit entmod geht bzw. wie ich es anstelle da der layer kein zeichenobjekt ist Code:
; Exportiere layereinstellung in einen file (defun c:exlay (/ file) (if (and (setq file (getfiled "Datei export" "C:\\" "TXT" 1)) (setq file (open file "w")) ) (princ (TableEx "LAYER") file) (close file) ) ) ;Importiere layereinstellung aus einen file (defun c:imlay (/ file zeile) (if (setq file (getfiled "Datei import" "C:\\" "TXT" 2)) (progn (setq file (open file "r")) (setq zeile (read-line file)) (close file) (TableIm "LAYER") ) (alert "Keine Datei gewählt!") )(princ) ) ; Funktion zur Ermittlung der Original Farbeinstellung (defun TableEx (str / obj name) (while (setq obj (tblnext str (null obj))) (setq name (cdr (assoc 2 obj))) (setq color (cdr (assoc 62 obj))) (setq liste (cons (list name color) liste)) ) liste ) ; Funktion zur Ermittlung der spez. Farbeinstellung ; und modifizieren der Original- mit der Aktuellen- Farbeinstellung (defun TableIm (str / obj name) (while (setq obj (tblnext str (null obj))) (setq name (cdr (assoc 2 obj))) (setq color (cdr (assoc 62 obj))) (setq liste (cons (list name color obj) liste)) ) (foreach N liste (foreach M (read zeile) (if (= (car N) (vl-princ-to-string (car M))) (entmod (subst (cons 62 (cadr M)) (cons 62 (cadr N)) (entmakex (caddr N))!!!)) ) ) )(princ) )
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 29. Jan. 2013 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, Zitat: Original erstellt von cadplayer:
ich weiss nur nicht ob das mit entmod geht bzw. wie ich es anstelle da der layer kein zeichenobjekt ist
als ich vor vielen Jahren begonnen habe, neue Layer zu erstellen oder vorhanden Layer zu modifizieren, fand ich dafür nur die Möglichkeit es mit (command "_.-layer" ...) zu tun. Da dies bis heute (Version 2012) noch funktioniert, habe ich mich nicht um andere Funktionen bemüht. In der Anlage ist aber eine Liste von Layer-Funktionen, die vielleicht für Dich interessant sind. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 29. Jan. 2013 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Verwende tblobjname und modifiziere das was du da bekommst Und wenn du eine Liste einfach mit princ in eine Datei schreibst ist die schlecht zeilenweise wieder einlesbar. Schau dir folgendes mal an, so gehts. Viel Spass damit. (defun k_print_datei (pfad liste / datei) ;;; Schreibt Liste in Datei so daß diese mit "Load" gelesen werden kann (if pfad (progn (setq datei (open pfad "w")) (write-line "(quote (" datei) (foreach data liste (print data datei) ) (write-line "" datei) (write-line "))" datei) (close datei) ) ) )
(defun LaycolEx (/ lay liste) ;;; Layerfarben exportieren (while (setq lay (tblnext "LAYER" (null lay))) (setq liste (cons (list (cdr (assoc 2 lay)) (cdr (assoc 62 lay))) liste) ) ) (k_print_datei (getfiled "Datei export" "C:\\" "TXT" 1) liste ) (princ) ) (defun LaycolIm (/ liste lay lay_data) ;;; Layerfarben importieren (if (setq liste (load (getfiled "Datei import" "C:\\" "TXT" 2))) (foreach lay liste (if (tblsearch "LAYER" (car lay)) (progn (setq lay_data (entget (tblobjname "LAYER" (car lay)))) (setq lay_data (subst (cons 62 (cadr lay)) (assoc 62 lay_data) lay_data ) ) (entmod lay_data) ) ) ) (alert "Keine Datei gewählt!") ) (princ) ) ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 29. Jan. 2013 15:12 <-- editieren / zitieren --> Unities abgeben:
Danke für die Mühe euch beiden: Ja @Bernd, das ging mir bisher genauso - nur klappt´s leider nicht wenn man xref-Layer hat. @Andreas du hast mir das Geheimnis verraten, dass auch Layer als E-objekte gelesen werden können. Das war mir neu. Danke für die Auffrischung. Der Code läuft einwandfrei und ich habe mir noch die Liste 70 für die Eigenschaft Layer freeze thaw mit reingespielt. Es ist absolut nach meinem Wunschdenken. ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 30. Jan. 2013 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: Danke für die Mühe euch beiden: Ja @Bernd, das ging mir bisher genauso - nur klappt´s leider nicht wenn man xref-Layer hat.
WAS klappt bei XRef-Layern nicht , bis auf das erstellen kenne ich keinen Unterschied. Code: (entmod (subst (cons 62 (cadr M)) (cons 62 (cadr N)) (entmakex (caddr N))!!!))
SO(!) ist das Programm nicht lauffähig, das macht die Forenhilfe unnötig schwierig Dirk. Abgesehen davon das man 1. keine XRef-Layer erstellen kann und 2. du das ja auch gar nicht willst , du willst Layer doch nur ändern oder ?
------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) [Diese Nachricht wurde von cadffm am 30. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 30. Jan. 2013 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Jan. 2013 11:52 <-- editieren / zitieren --> Unities abgeben:
cadffm: Deine Frage habe ich nicht richtig verstanden, genau die Codezeile war nicht richtig umgesetzt, das hat mir Andreas bereits mitgeteilt cadmium: Klar habe ich auf jeden Fall jetzt eingebaut ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Trixe2 Mitglied Bauzeichnerin Elektroplanung
Beiträge: 19 Registriert: 04.09.2006 AutoCAD Civil 3D 2012(SP1), ETools deu (2007) Win 7 2.40GHz 4(3)GB RAM NVIDIA Quadro FX 560
|
erstellt am: 30. Jan. 2013 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|