Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Setzen von Layereigenschaften über entget

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Setzen von Layereigenschaften über entget (1530 mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 03. Jul. 2012 17:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi !

ich habe den Gruppencode (mit gc in den Variablen benannt) von Layereigenschaften ermittelt und in einer Tab-getrennten Datei hinterlegt.

Jetzt bin ich bei der Wiederherstellungsfunktion.

Die Daten lese ich ein und splite die Zeichenkette einer Speicherungszelle auf -> Liste

Nun will ich die Daten wieder auf die Layer anwenden und habe folgenden Code erstellt:

Code:
(setq tmp_ly  (car lstData)
tmp_gc62 (cadr lstData)
tmp_gc70 (caddr lstData)
)

(if (/= tmp_ly "0")
(if (setq tbl_layer (tblsearch "Layer" tmp_ly))
(progn

(princ "\n")
(princ tbl_layer)

(setq tbl_layer
(subst
(cons 62 (float tmp_gc62))
(assoc 62 tbl_layer)
tbl_layer
)
tbl_layer
(subst
(cons 70 (float tmp_gc70))
(assoc 70 tbl_layer)
tbl_layer
)


) ;end-setq
(entmod tbl_layer)


Also die Konvertierung der Zeichenkette in Zahlenwerte habe ich mit FLOAT berücksichtigt.

Aber wenn die Daten zurück geschrieben werden sollen kommt folgende Meldung im Befehlszeilenfenster:

((0 . LAYER) (2 . Block) (70 . 0) (62 . -5) (6 . Continuous))
Fehler: Fehlerhafter Argumenttyp: numberp: "5"_.UNDO Aktuelle Einstellungen:
Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja

Hat einer Idee warum das eventuell nicht funktioniert oder habe ich gar einen Gedankenfehler ?

Gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADblue
Mitglied



Sehen Sie sich das Profil von CADblue an!   Senden Sie eine Private Message an CADblue  Schreiben Sie einen Gästebucheintrag für CADblue

Beiträge: 117
Registriert: 20.07.2011

ACAD18,Linear19

erstellt am: 03. Jul. 2012 17:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Zitat:
((0 . LAYER) (2 . Block) (70 . 0) (62 . -5) (6 . Continuous))

also pauschal würde ich mal sagen es müsste so aussehen

Code:
((0 . "LAYER") (2 . "Block") (70 . 0) (62 . 5) (6 . "Continuous"))

schau mal obs was hilft und BTW GC 62 hat keine "-" farben.

mfg blue

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

spider_dd
Mitglied



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 03. Jul. 2012 17:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Hallo Jan,

m.E. manipulierts Du die falschen Daten.
Das Layerobjekt musst Du Dir mit

(setq tbl_layer (entget (tblobjname "layer" tmp_ly)))

holen. Das kannst Du dann mit entmode bearbeiten.
Die Farbnummer würde ich außerdem mit atoi in Ganzzahl umwandeln.

HTH
Gruß
Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Geos
Mitglied
Vermessungstechniker i.R.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 04. Jul. 2012 07:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

@cadblue
Zitat:
und BTW GC 62 hat keine "-" farben.

Doch, die Farbe ist neg. wenn der Layer ausgeschaltet

------------------
Schöne Grüße
Ernst

www.geopaint.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADblue
Mitglied



Sehen Sie sich das Profil von CADblue an!   Senden Sie eine Private Message an CADblue  Schreiben Sie einen Gästebucheintrag für CADblue

Beiträge: 117
Registriert: 20.07.2011

ACAD18,Linear19

erstellt am: 04. Jul. 2012 08:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

jo hast recht, is mir vorher noch nicht aufgefallen, arbeite eher mit angeschalteten layern 

immer noch nicht weitergekommen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADblue
Mitglied



Sehen Sie sich das Profil von CADblue an!   Senden Sie eine Private Message an CADblue  Schreiben Sie einen Gästebucheintrag für CADblue

Beiträge: 117
Registriert: 20.07.2011

ACAD18,Linear19

erstellt am: 04. Jul. 2012 09:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

BTW: was willst du eigenlich machen? einen neuen layer erstellen oder einen bestehenden verändern?


New:
(entmake'((0 . "LAYER")(100 . "AcDbSymbolTableRecord")(100 .
"AcDbLayerTableRecord")(2 . "test")(70 . 0)(62 . 3)(6 . "continuous")))

Mod:
(entmod (subst (cons 2 "test")(assoc 2 (entget *haupt*))(entget *haupt*)))

wo hackts denn genau?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 13. Jul. 2012 14:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hi!

ich bin einmal wieder bei der Sache und habe jetzt ein Problem was ich nicht nachvollziehen kann.

Wie bereits geschrieben habe ich die GC 62 und 70 gespeichert um diese über Entget wieder herzustellen.

Ganz zu Anfang habe ich die Layereigenschaften abgefragt:

Zitat:
:: (entget (tblobjname "Layer" "NeuerLayer5"))

((-1 . <Entity name: 15849f60>) (0 . "LAYER") (5 . "4B") (330 . <Entity name: 0b542118>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "NeuerLayer5") (70 . 0) (62 . 3) (6 . "Continuous") (290 . 1) (370 . -3) (390 . <Entity name: 0bdd88c8>) (347 . <Entity name: 0bdd91b0>:nozwinker


Diese Einstellungen habe ich mit meinem Tool gesichert:
NEUERLAYER5 GC62=3    GC70=0

Dann habe ich meine Zeichnung verstellt (gefroren und ausgeschaltet):

Zitat:

((-1 . <Entity name: 15849f60>) (0 . "LAYER") (5 . "4B") (330 . <Entity name: 0b542118>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "NeuerLayer5") (70 . 1) (62 . -3) (6 . "Continuous") (290 . 1) (370 . -3) (390 . <Entity name: 0bdd88c8>) (347 . <Entity name: 0bdd91b0>:nozwinker

Dann protokolliert mein Tool für die Wiederherstellung folgendes:

Zitat:

Datenzeile: (NEUERLAYER5 3 0)
tmp_gc62: 3
tmp_gc70: 0

Layereigenschaften vor der Manipulation der Elementdaten:
((-1 . <Entity name: 15849f60>) (0 . LAYER) (5 . 4B) (330 . <Entity name: 0b542118>) (100 . AcDbSymbolTableRecord) (100 . AcDbLayerTableRecord) (2 . NeuerLayer5) (70 . 1) (62 . -3) (6 . Continuous) (290 . 1) (370 . -3) (390 . <Entity name: 0bdd88c8>) (347 . <Entity name: 0bdd91b0>:nozwinker

Layereigenschaften nach der Manipulation der Elementdaten:
((-1 . <Entity name: 15849f60>) (0 . LAYER) (5 . 4B) (330 . <Entity name: 0b542118>) (100 . AcDbSymbolTableRecord) (100 . AcDbLayerTableRecord) (2 . NeuerLayer5) (70 . 0) (62 . 3) (6 . Continuous) (290 . 1) (370 . -3) (390 . <Entity name: 0bdd88c8>) (347 . <Entity name: 0bdd91b0>:nozwinker


Diese Liste wird mit entmod zurückgeschrieben.

Wenn ich das gemacht habe, dann wird laut Layereigenschaftsmanager (Briscad) der Layer getaut und eingeschaltet.

Die Layereigenschaften sagen jetzt:

Zitat:
((-1 . <Entity name: 15849f60>) (0 . "LAYER") (5 . "4B") (330 . <Entity name: 0b542118>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "NeuerLayer5") (70 . 0) (62 . 3) (6 . "Continuous") (290 . 1) (370 . -3) (390 . <Entity name: 0bdd88c8>) (347 . <Entity name: 0bdd91b0>:nozwinker

Die Objekte auf dem Layer werden aber nicht angezeigt !

REGEN hilft nicht. Dann habe ich den Layer mal gesperrt und entsprerrt.

Und siehe da - jetzt sind die Objekte wieder sichtbar!

Jetzige Eigenschaften:

Zitat:
((-1 . <Entity name: 15849f60>) (0 . "LAYER") (5 . "4B") (330 . <Entity name: 0b542118>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "NeuerLayer5") (70 . 4) (62 . 3) (6 . "Continuous") (290 . 1) (370 . -3) (390 . <Entity name: 0bdd88c8>) (347 . <Entity name: 0bdd91b0>:nozwinker

Als ich das unter AcMap gemacht hatte, da konnte ich die Elemente mit

Zitat:
Isolieren
beenden wieder sichtbar machen.

Nach Literatur ist zwar Bit4 für Sperren / Entsperren zuständig - wird aber in den dokumentierten Eigenschaften nur in der letzten Liste mit dargestellt.

Entweder bin ich betriebsblind oder ..... ?? Ich verstehe das ganze nicht mehr.

Kann mir einer weiterhelfen ?

Gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz