Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Layerstatus-Manager mit LISP steuern

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:  Layerstatus-Manager mit LISP steuern (1334 mal gelesen)
wuselking
Mitglied



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

Beiträge: 293
Registriert: 19.11.2004

AutoCAD 2018
EPLAN P8 v2.9 SP1 build 14642

erstellt am: 27. Aug. 2019 11: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

Hallo!
Gibt es die Möglichkeit, den Layerstatus-Manager über LISP Befehle zu steuern?
Dort ist ein bestimmter Status gespeichert, der in allen Layouts im entsprechenden AF gelten soll.
Im entsprechenden AF der Layouts möchte ich über einen LISP Befehl diesen Status aufrufen können.
Geht das
?

Danke für die Hilfe!

------------------
Danke und Grüße
Olaf
P.S.
Wer Schreinfehler findet, darf sie behalten.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Aug. 2019 11:56    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 wuselking 10 Unities + Antwort hilfreich

>"Gibt es die Möglichkeit, den Layerstatus-Manager über LISP Befehle zu steuern?"
>"Du kannst mit Lisp generell kein Dialogfeld oder Palette steuern, also NIE.
>"man muß sich immer den dahinterliegenden Variablen und Befehlen bedienen oder eigene Funktionen erstellen.

Die Befehlszeilenversion vom LAYER-Befehl (-LAYER)funktioniert leider nicht wie erwartet in Bezug auf Ansichtsfenster,
daher muß man sicher der API bedienen, ansonsten würden man auch die Option STATUS vom Befehl-LAYER nutzen können.
(für die aktuelle Aufgabe wäre es aber eh eher eine schlechte Wahl, was das zugreifen auf AutoCAD-Befehl generell ist)

Hast du denn VORHER mal geschaut was in der Hilfe zu finden ist zum Thema "Layerstate" ?
Es gibt eine Menge an Lispfunktionen rund um Layerstate, darunter auch eine zum wiederherstellen eine Status.
layerstate-restore (AutoLISP)

(layerstate-restore "Statusname" (car(entsel)) 4)

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

wuselking
Mitglied



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

Beiträge: 293
Registriert: 19.11.2004

AutoCAD 2018
EPLAN P8 v2.9 SP1 build 14642

erstellt am: 27. Aug. 2019 12:27    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

Danke für die rasche Antwort!
Ja, auf der Hilfeseite war ich. Aber sowohl mein Englisch alsauch meine LISP Kenntnisse sind nur rudimentär.
Wenn ich dich richtif verstanden habe, dann sollte der Befehl so aussehen:

(defun C:Lay-GR ()
(prompt "\n Layerstatus Grundriss\n ")
((layerstate-restore "_nur Grundriss" (car(entsel)) 4)
"")
)

Ist das richtig so?

------------------
Danke und Grüße
Olaf
P.S.
Wer Schreinfehler findet, darf sie behalten.

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

wuselking
Mitglied



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

Beiträge: 293
Registriert: 19.11.2004

AutoCAD 2018
EPLAN P8 v2.9 SP1 build 14642

erstellt am: 27. Aug. 2019 12:42    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

Hmm, eine Klammer war zuviel.
In der Statuszeile steht, dass ich ein Objekt auswählen soll.
Wenn ich mis Esc abbreche steht das im Status:
"Objekt wählen: ; Fehler: Fehler bei ADS-Anforderung"

Leider habe ich keinen Plan ...

------------------
Danke und Grüße
Olaf
P.S.
Wer Schreinfehler findet, darf sie behalten.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Aug. 2019 12:44    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 wuselking 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von wuselking:
Ist das richtig so?

Wie du selbst beim testen feststellen wird: Nein
Wenn man
((layerstate-restore "_nur Grundriss" (car(entsel)) 4) "")
durch
(layerstate-restore "_nur Grundriss" (car(entsel)) 4)
tauscht, dann würde "es" wenigstens ein funktionierender Code sein,
soweit man im Layout ist
ein sichtbares Ansichtfenster vorhanden ist
ein Layerstatus mit Namen "_nur Grundriss" existiert
..


Ich bin hier raus da wohl auch die restlichen Aufgaben fix und fertig serviert werden müßten nehme ich an.
Die Antworten auf nachfolgende Anmerkungen/Fragen sind aber auch für nachfolgende Helfer interessant:

>"Gibt es die Möglichkeit, den Layerstatus-Manager über LISP Befehle zu steuern?
>"-ein bestimmter Status -der in allen Layouts
Also wird ein "durch alle Layouts benötigt", Problem?

>"im entsprechenden AF gelten soll."
Was ist die die Eindeutigkeit um das Ansichtsfenster pro Layout zu indentifizieren?
Man muß dem Programm ja sagen welches AF bearbeitet werden soll, Problem?

>"Im entsprechenden AF der Layouts möchte ich über einen LISP Befehl diesen Status aufrufen können."
Hmm, jetzt also doch nur für ein Ansichtsfenster im aktuellen Layout?
Dann reicht dein Code (modifiziert wie vorgeschlagen)


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

wuselking
Mitglied



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

Beiträge: 293
Registriert: 19.11.2004

AutoCAD 2018
EPLAN P8 v2.9 SP1 build 14642

erstellt am: 27. Aug. 2019 13:10    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

Danke, hat schon weitergeholfen.

Dieser Befehl soll mit anderen in einer Script Datei verwendet werden.
Wir haben viele Layouts verschiedener Gewerke (Lichtruf, Brandmeldeanlege, Kabelwege, ...).
Bei den verschiedenen Layouts müssen verschiedene Layer eingeschaltet sein.
Da wir regelmäßig einen neuen Grundriss erhalten, wird dieser auf Standard gebracht und der Layerstatus abgespeichert.
Nun habe ich für jedes Layout ein Script geschrieben, welche Layer ein bzw. augeschaltet werden müssen und dazu noch Befehlsbutton erstellt. So sind wir schneller, um die richtigen Layer anzeigen zu lassen.
Nervend ist nur, wenn ein neuer Grundriss hinterlegt ist, immer wieder in jedem Layout den Layerstatus-Manager aufrufen zu müssen. Daher meine Idee, auch das ins Script mit reinzuschreiben.

Wir rufen also das entsprechende Layout auf und befinden uns bereits im richtigen AF.
So, wie der Befehl jetzt aufgebaut ist, muss ich aus dem AF rausgehen und dann das AF anklicken. Ich nahm an, wenn man bereits im AF ist geht es auch bzw. anders.

Das nur damit du verstehst, wie ich zu der seltsamen Frage kam.

Trotzdem vielen Dank!

------------------
Danke und Grüße
Olaf
P.S.
Wer Schreinfehler findet, darf sie behalten.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Aug. 2019 13:28    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 wuselking 10 Unities + Antwort hilfreich

"Wir rufen also das entsprechende Layout auf und befinden uns bereits im richtigen AF."
Wird ja immer schlimmer, Daumendrück 

Es geht auch alles anders, aber man muß sich den besten Weg für sich in Ruhe selbst finden.
(Außenstehende kennen ggf. alle Möglichkeiten und Wege, aber die Hintergrundinformationen bei euch zB. nicht)

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

wuselking
Mitglied



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

Beiträge: 293
Registriert: 19.11.2004

AutoCAD 2018
EPLAN P8 v2.9 SP1 build 14642

erstellt am: 27. Aug. 2019 15:12    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

So funktioniert es, wenn man im Layout in einem AF bereits ist (sollte natürlich das richtige sein ;-)):

(layerstate-restore "NAME DES LAYERSTATUS" (vlax-vla-object->ename (vla-get-activepviewport (vla-get-activedocument (vlax-get-acad-object)))) 4)

Nicht der eleganteste Weg vielleicht, aber genau das, was ich haben wollte.

------------------
Danke und Grüße
Olaf
P.S.
Wer Schreinfehler findet, darf sie behalten.

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