| 
|  |  |  |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |  |  |  |  |  | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung 
 |  
| Autor | Thema:  Layerstatus (1051 mal gelesen) |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 09:26  <-- editieren / zitieren -->    Unities abgeben:            
  Guten Tag! Ich möchte in Lisp eine bestimmte Eigenschaft von Layern (z.B. "Sperre") in einem Layerstatus speichern, um später wieder genau den vorherigen Stand dieser einen Eigenschaft wieder herstellen zu können, unabhängig davon, was inzwischen sonst an Layer umgestellt wurde. Jetzt ist das Problem, dass der zu bearbeitenden Layerstatus im Layer-Befehl nur mit einem Umschalter zwischen [Ja] und [Nein] möglich ist, ohne dass der Lisp-Befehl den aktuellen Status kennt. (es könnte ja sein, dass ich wo anders eine andere Eigenschaft benötige) Daher suche ich nach einem Weg, meinen gewünschten Status vorab zu definieren und dann im Layer-Befehl nur anzuwenden. Danke und schönen Tag noch! ------------------Gruß aus Wien
 Bernhard
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Maier2018 Mitglied
 Schlaumaier
 
  
 
      Beiträge: 25Registriert: 15.01.2018
 Autocad 2021 |    erstellt am: 03. Nov. 2021 10:00  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bernhard GSD   |  | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 Alles |    erstellt am: 03. Nov. 2021 10:01  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bernhard GSD   
  Biite noch mal     Ich sehe zwar grob wo die Reise hingeht und Layerstus ist eine der am besten Unterstützten features,aber dennoch frage ich vorher noch ienmal nach:
 >>"nur mit einem Umschalter zwischen [Ja] und [Nein] möglich ist"Ich habe wirklich null Ahnung was dieser Satz (der komplette natü+rlich
  ) sagen soll, kannst du das bitte noch einmal ausführlicher für Noobs erklären?
 >>", ohne dass der Lisp-Befehl den aktuellen Status kennt."
 ? Lost
 >>" (es könnte ja sein, dass ich wo anders eine andere Eigenschaft benötige)"Das bezieht sich vermutlich nun darauf das du nicht alle Eigenschaften aller Layer wiederherstellen möchtest!?
 >>"Daher suche ich nach einem Weg, meinen gewünschten Status vorab zu definieren und dann im Layer-Befehl nur anzuwenden."Du möchtest also einen Layerstatus ganz normal "per Hand" in der AutoCAD-Benutzeroberflächer wiederherstellen,
 nun suchst du aber eine Möglichkeit *irgendwas* an dem Layerstatus zu manipulieren - per Lisp.
 Damit ich mir dein Ziel nicht zusammenreimen muss, vielleicht erklärst du es noch einmal etwas strukturierter oder technischer,oder vielleicht auch weniger technisch - keine Ahung
   (was man zwar ohnehin beim lsen macht, aber wir wollen ja nicht unnötig aneinander vorbei reden)
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 10:32  <-- editieren / zitieren -->    Unities abgeben:            
 Code:-LAYER
 Aktueller Layer:  "M_M-9"
 Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIN/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/Frieren/Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen/Xref]: _State
 Option eingeben [?/Speichern/Wiederherstellen/Bearbeiten/Name/Löschen/Importieren/Exportieren]: _Save Neuen Namen für Layerstatus eingeben: Name StatusEin                 Nein
 Gefroren            Nein
 SPerre              Ja
 Plot                Nein
 neue AFs frieren    Nein
 Farbe               Nein
 linienTyp           Nein
 Linienstärke        Nein
 Transparenz         Nein
 plotSTil            Nein
 Zu ändernden Status eingeben[Ein/Gefroren/SPerre/Plot/neue AFs frieren/Farbe/linienTYp/Linienstärke/TRansparenz/plotSTil]:
 
 Oder als Lisp:  Code:(Command "_layer" "_state" "_save" "Name" "" "")
 
 Ich möchte den Status wie oben voreinstellen. Durch "Zu ändernden Status eingeben" wird nur zwischen [Ja] und [Nein] hin- und hergeschalten, aber es ist so kein definierter Status herstellbar. Ich möchte nur den Status von "SPerre" sicheren (oder in anderen Fällen "Gefroren"). Den aktuellen Status kennt das Lisp-Programm ja nicht (?) Ziel ist es, den vorherigen Zustand gesperrter und nicht gesperrter Layer wiederherstellbar zu machen. Hier werden alle Layer, außer dem aktuellen gesperrt:
 Code:(DEFUN c:ISO2()
 (SETQ #aktlay (GETVAR "CLAYER"))
 (COMMAND "_LAYER" "_Lock" "*" "_Unlock" #aktlay "")
 (PRINC)
 )
 
 Hier sollte der vorherige Zustand wiederhergestellt werden, auch wenn vorher bereits Layer gesperrt waren und das auch bleiben sollen. Hier werden aber noch alle Layer entsperrt.
 Code:(DEFUN c:uniso2()
 (COMMAND "_LAYER" "_Unlock" "*" "")
 (PRINC)
 )
 
 Ich hoffe, so ist es jetzt verständlicher.    
 ------------------Gruß aus Wien
 Bernhard
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 10:38  <-- editieren / zitieren -->    Unities abgeben:            
  Danke für deine Bemühungen. Leider geht das aber am Ziel vorbei, da es für beliebige Layer funktionieren soll. Natürlich könnte man alle benötigten Eigenschaften mit (entget (tblobjname "Layer" ".....")) auslesen und als dotted-pair in einer Liste speichern und wieder herstellen. Das könnte auch eine eigene Funktion erledigen. Aber ich hoffe, dass es für LAYERSTATUS eine einfachere Lösung gibt. ------------------Gruß aus Wien
 Bernhard
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 10:59  <-- editieren / zitieren -->    Unities abgeben:            
  Ich denke, ich habe den Lösungsansatz: (layerstate-save "Name" 4 nil) - dann die gewünschten Layer SPerren (layerstate-restore "Name" nil) Allerdings bleibt nach layerstate-restore das Fading hängen. Eventuell hilft es, vorher "LAYLOCKFADECTL" auf 0 zu setzen und dann wieder auf den vorherigen Wert. ------------------
 Gruß aus Wien
 Bernhard
 [Diese Nachricht wurde von Bernhard GSD am 03. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 11:15  <-- editieren / zitieren -->    Unities abgeben:            
  So schaut der fertige Code aus: Es sollen nur Objekte auf dem aktuellen Layer verändert werden können. So bleibt es übersichtlich und trotzdem steuerbar. Beim zweiten "_unlock" werden Layer hinzugefügt, die nie gesperrt werden sollen. Code:(DEFUN c:iso2 ()
 (SETQ #aktlay (GETVAR "CLAYER"))
 (LAYERSTATE-SAVE "laystateiso2" 4 nil)
 (COMMAND "_LAYER" "_Lock" "*" "_Unlock" #aktlay "_Unlock" "H_P29" "")
 (PRINC)
 )
 
 Und zurück zum Ursprung.
 LAYLOCKFADECTL wird zwischenzeitlich auf 0 gesetzt, um ein hängenbleiben des Fadings zu verhindern.
 
 Code:(DEFUN c:uniso2 (/ #laylockfadectl)
 (SETQ #laylockfadectl (GETVAR "LAYLOCKFADECTL"))
 (SETVAR "LAYLOCKFADECTL" 0)
 (LAYERSTATE-RESTORE "laystateiso2" nil)
 (SETVAR "LAYLOCKFADECTL" #laylockfadectl)
 (PRINC)
 )
 
 ------------------Gruß aus Wien
 Bernhard
 [Diese Nachricht wurde von Bernhard GSD am 03. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 Alles |    erstellt am: 03. Nov. 2021 11:21  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bernhard GSD   
  Du schreibst von so unterschiedlichen Dingen, da wird es echt schwer "jedem Satz zu folgen". Aber ich versuche es, wie immer. --- >>"Ich möchte den Status wie oben voreinstellen. Durch "Zu ändernden Status eingeben" wird nur zwischen [Ja] und [Nein] hin- und hergeschalten,"
 Was sonst, es gibt ja nur Berücksichtigen? JA (oder Nein), was will man da anderes haben aus JA, oder Nein?
 >>"aber es ist so kein definierter Status herstellbar."Das sind ja nunmal zwei verschiedene Sachen (wenn man die Voreinstlelung separat betrachten möchte)
 Einen Status definert man, also durch anlegen eines Layerstatus, sprich Speichern.
 Dazu kommt dann die Voreinstellung der Einstellungen für das Wiederherstellen.
 >>"Ich möchte nur den Status von "SPerre" sicheren (oder in anderen Fällen "Gefroren")."Ein Layerstatus beinhaltet immer alle Eigenschaften, das solltest du wissen wenn
 du Layerstus *egal wie* einsetzt.
 Was aber auch egal ist, denn man gibt ja beim Wiederherstrellen an WAS wiederherstellt werden soll.
 >>" Den aktuellen Status kennt das Lisp-Programm ja nicht (?)Was meinst du damit? Auch ohne das zu wissen lasse ich ein paar Kommentare fallen:
 - Mit Lisp sind dir alle aktuellen Eigenschaften aller Layer zugänglich,
 - Es ist nie ein Status aktuell, denn ein Status ist nicht mit den Layer verknüpft.
 AutoCAD hat aber eine Prüfung im Status-Dialog welche dir anzeigt
 ob die aktuellen Layereinstellen zufällig mit einem deiner Status übereinstimmt.
 Vielleicht meinst du die Voreinstellung für das Wiederherstellen eines Status?
 Ungeachtet dessen wie man an diese Information kommen kann, soll auch das egal sein,
 du legst einfach ALLES fest vor dem wiederherstellen.
 >>"Ziel ist es, den vorherigen Zustand gesperrter und nicht gesperrter Layer wiederherstellbar zu machen."Dann deaktiviere zum Wiederherstellen die anderen Eigenschaften und stelle den Status wieder her.
 --- Und ab jetzt der Wechsel von Anwender zu Lisp:Layerstatus ist ja eines der wenigen recht gut unterstützten features, das hast du auch bereits gefunden.
 Deiner letzten Antwort entnehme ich jetzt mal: Du hast nun was du wolltest!? Gut.
 >>" das Fading hängen."
 Ob hinterher hjin und später zutück, oder ob du einen anderen Weg zum "refresh findest", eigentlich egal.
 Schreib uns für welche Variante du dich dann entschieden hast.
  
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 14:45  <-- editieren / zitieren -->    Unities abgeben:            
 Zitat:Original erstellt von cadffm:
 
 Was sonst, es gibt ja nur Berücksichtigen? JA (oder Nein), was will man da anderes haben aus JA, oder Nein?
 
 
 Ja, eh. Aber ich hätte gerne gesagt, WAS ich will und nicht den Status von [Ja] nach [Nein] und von [Nein] auf [Ja] - Das ist für einen Programmablauf unbrauchbar.... Zitat:
 Dazu kommt dann die Voreinstellung der Einstellungen für das Wiederherstellen.
 
 
 Nein, bei der Befehlszeilenversion gibt es keine Optionen für das Wiederherstellen, nur für das Sichern - wenigstens bei ACAD2020. Zitat:
 Und ab jetzt der Wechsel von Anwender zu Lisp:
 Layerstatus ist ja eines der wenigen recht gut unterstützten features, das hast du auch bereits gefunden.
 Deiner letzten Antwort entnehme ich jetzt mal: Du hast nun was du wolltest!? Gut.
 
 
 Ja, diese Lösung mit Lisp ist eh die genialere. Man lernt auch bei Lisp immer wieder was Neues kennen. Zitat:
 >>" das Fading hängen."
 Ob hinterher hjin und später zutück, oder ob du einen anderen Weg zum "refresh findest", eigentlich egal.
 Schreib uns für welche Variante du dich dann entschieden hast.
 
 Vorerst bleibt die Variante wie in meinem Post oben. Aber eventuell stolpere ich ja mal über was Besseres. Aber immerhin: Es läuft wie geplant und erleichtert die Arbeit. Wie auch immer: Danke für deine Bemühungen mich zu unterstützen.
 ------------------Gruß aus Wien
 Bernhard
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 Alles |    erstellt am: 03. Nov. 2021 15:38  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bernhard GSD   
 ["Dazu kommt dann die Voreinstellung der Einstellungen für das Wiederherstellen."] >>"Nein, bei der Befehlszeilenversion gibt es keine Optionen für das Wiederherstellen, nur für das Sichern - wenigstens bei ACAD2020." JA - ABER. Das ist ein und dasselbe! Dialogfeld wie auch Befehlszeile.. Wenn du in AutoCAD einen Layerstatus erstellst, dann sind alle Eigenschaften voreingestellt auf AKTIVIERT ( = sollen wiederhergestellt werden),im Nachgang kannst du die Häkchen entfernen.. und änderst dabei aber den gespeicherten Layerstatus.
 So ist das im Dialogfeld und genau so funktioniert es auch in der Befehlzeile. Sollte ich mich irren, vorab ein fettes SORRY - ist aus dem effeff   schau es dir im Dialog an, schau es dir in der Befehlszeile an, sollte identisch laufenmit dem Unterschied dass du im Dialog auf einen Status klickst und in der Befehlszeile
 Bearbeiten<Statusname> wählen musst.
 
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 03. Nov. 2021 16:05  <-- editieren / zitieren -->    Unities abgeben:            
 Zitat:
 So ist das im Dialogfeld und genau so funktioniert es auch in der Befehlzeile.
 
 
 Im Dialogfeld ja, in der Befehlszeile komischerweise ist es anders. Aus der Hilfe zu -LAYER Zitat:Speichern
 Speichert den Status und die Eigenschaftseinstellungen der Layer in einer Zeichnung unter einem angegebenen Layerstatusnamen. Wenn Sie einen Layerstatus speichern, legen Sie fest, welche Layereinstellungen bei einer späteren Wiederherstellung des Layerstatus betroffen sind.
 WiederherstellenStellt den Status und die Eigenschaften aller Layer mit den zuvor gespeicherten Einstellungen wieder her. Dabei werden nur die Layerstatuswerte und Eigenschaften wiederhergestellt, die bei der letzten Speicherung des Layers festgelegt wurden.
 
 Der Befehl LAYERSTATUS ist ja eigentlich auch nicht Teil des LAYEReigenschaften-Managers, sondern ein eigener Befehl, der aus dem ExpressTools Befehl LMAN hervorgegangen ist.
 Übrigens auch mit Lisp (laystate-save name mask viewport) ist es so, dass beim Speichern mit mask die zu speichernden Eigenschaften bitcodiert definiert werden, während (layerstate-restore name viewport [restoreflags]) keine Möglichkeit zur Wahl der wiederherzustellenden Eigenschaften mehr bietet.
 Übrigens wird der mit (laystate-save ... gespeicherte Status auch im LAYERSTATUS angezeigt, aber dort völlig falsch wiederhergestellt. ------------------Gruß aus Wien
 Bernhard
 [Diese Nachricht wurde von Bernhard GSD am 03. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 Alles |    erstellt am: 03. Nov. 2021 17:12  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bernhard GSD   
  Haargenau! Jetzt zitierst du sogar die Hilfe - die im Grunde das wiederspiegelt was ich auch sagte. Beim Anlegen/Speichern eines Status triffst du eine Vorauswahl für das Wiederherstellen. Im Dialog, wie auch über die Befehlszeile! Beim Wiederherstellen wird entsprechend der zuletzt gespeicherten Einstellung agiert.Im Dialog fällt einem kaum auf wie man durch Häkchen rein/raus den Layerstatus verändert/verändern kann,
 in der befehlszeile musst du halt explizit BEARBEITEN aufrufen dafür.
 Also ich sitze wieder am Rechner und sehe "dennoch" alles zum Dialog und zu -LAYER bestätigt was ich geschrieben haben. Lisp:
 Von Lispfunktionen habe ich dabei noch nicht geredet, denn sollte es dort anders sein,
 so  würde ich es vor dem Antworten erst 1:1 testen müssen - das habe ich nicht im Kopf.
 Wobei mir aktuell bei dem Thema die Zeit fehlte es einfach mal nebenher "vorab" mit allem möglichen zu testen,
 wenn du aber mal konkrete Beispiel hast (DWG, LSP und Vorgangsbeschreibung, Erwartung vs. IST), dann gerne.
 >>"während (layerstate-restore name viewport [restoreflags]) keine Möglichkeit zur Wahl der wiederherzustellenden Eigenschaften mehr bietet."
 Wie im Dialogfeld und wir im -LAYER Befehl auch!
 Im Knopf[Wiederherstellen] oder der Option "Wiederherstellen" in der Befehlzeile,
 gibt es keine weitern Einstellungen und Optionen.
 In beiden Fällen heißt es wie im Lisp: Wiederhergestellt wird was zuletzt eingestellt/gespeichert wurde.
 >>"Übrigens wird der mit (laystate-save ... gespeicherte Status auch im LAYERSTATUS angezeigt,"
 äähm, ja natüprlich?
 Ein Kreis erscheint auch auf dem Bildschirm, auch wenn du diesen per Lisp API erstellt hast, macht ja Sinn
 
 >>" aber dort völlig falsch wiederhergestellt."Also an dieser Stelle, wenn ich nicht völlig daben liege,
 dann zeigt sich doch hier das du da irgendwie mit dem Thema noch auf Kriegsfuß stehst.
 Was um Gottes, Allah  und alte Reifen Willen stimmt denn dan nicht, gar "völlig falsch" soll es sein.Beispiele?' DWG, Code -> Beschreibung Erwartung vs Ist.
 Ich schaue gerne nach, entweder lerne ich etwas, oder ich kann helfen, beides freut mich und daher lebe ich immer im WinWin
  Aus der Hüfte geschossen, da ich mich an nichts negatives erinnere,
 aber es ist auch lange her das ich meine (funktionierenden) Programme diesbezüglich
 erstellt habe und Lisp-Layerstatus muß man nach einer Handvoll Routinen eigentlich
 nicht mehr anpssen => Sonderfälle, so es diese gibt, geraten in Vergessenheit
 
    
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | cadffm Moderator
 良い精神
 
         
 
  
 
      Beiträge: 22689Registriert: 03.06.2002
 Alles |    erstellt am: 03. Nov. 2021 17:17  <-- editieren / zitieren -->    Unities abgeben:           Nur für Bernhard GSD   
  Wenn es hier nur um die Anwendersicht ginge, dann würde ich ja darauf tippen  diese Jemand stellt Layerstatus in Layouts wieder her und in diesem Fall  führt das Ergebnis oft (und zum Teil verständlicherweise) zu Verwirrungen. Ist dann aber alles Erklärbar, auch wenn nicht alles gefällt wie es funktioniert. Du Bernhard kennst dich hingegen wohl aus und hast per Dialogfeld keine Probleme?Bleibt noch eine geringe Chance: Vielleicht wendest du die Lispfunktionen ggf, falsch an?
 Die Befehlszeile, welche identisch zum Dialog funktioniert (überzeuge mich vom Gegenteil),
 ist dir ja auch noch nicht so ganz grün?
 Freue mich schon darauf wie das ausgeht     
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Bernhard GSD Mitglied
 
 
    
 
      Beiträge: 515Registriert: 29.08.2002
 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu) |    erstellt am: 04. Nov. 2021 08:56  <-- editieren / zitieren -->    Unities abgeben:            
 Zitat:Original erstellt von cadffm:
 Beim Anlegen/Speichern eines Status triffst du eine Vorauswahl für das Wiederherstellen.
 
 Ja, genau. Gleiches passiert beim Lisp-Befehl.Dass nur eine Vorauswahl für die Wiederherstellung getroffen wird, habe ich erst später erkannt. So wird jetzt ein Schuh draus.
 Wie auch immer: Das Lisp funktioniert und leistet gute Dienste.Eventuell kommt später noch eine Funktion dazu, die die Auswahl mehrerer Objekte (und damit Layer) ermöglicht.
 Zitat:Original erstellt von cadffm:
 Du Bernhard kennst dich hingegen wohl aus und hast per Dialogfeld keine Probleme?
 
 Zwar keine Probleme, aber ich nutze das Dialogfeld so gut wie gar nicht.Meine Layereinstellungen laufen alle über Lisps.
 ------------------Gruß aus Wien
 Bernhard
 [Diese Nachricht wurde von Bernhard GSD am 04. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Anzeige.:
 Anzeige: (Infos zum Werbeplatz >>)
  |