| |
| 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: Layerstand speichern Button (2439 mal gelesen)
|
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 09:23 <-- editieren / zitieren --> Unities abgeben:
Hi zsamme´, folgende Idee hatte ich heute morgen. Weiß allerdings nicht ob es so etwas schon gibt. - Den aktuellen Layerstand beim drücken des Buttons speichern. (Also so ähnlich wie bei den Expresstools, nur ohne den Layer-Manager) - Jetzt kann ich nach belieben die Layer ein und ausschalten. - Nach nochmaligen drücken des Buttons, wird der gespeicherte Layerstand zurückgesetzt. Merke gerade, daß es wohl gar nicht so einfach ist, da der Layerstand irgenwohin ja gespeichert werden muß. Hat jemand von euch soetwas, oder ähnliches? P.S. Die Layernamen und Zustände sind nicht immer gleich. Danke und Gruß CADoffel ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Aug. 2004 09:32 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 05. Aug. 2004 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
|
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 09:46 <-- editieren / zitieren --> Unities abgeben:
@Sebastian: Genau das möchte ich eigentlich umgehen. Ich möchte nicht einen Namen eingeben müssen, weil ich eh nur einen Layerstand speichern möchte. Dieser wird dann kurz später wieder zurückgesetzt. Danke Dir trotzdem. Gruß CADoffel ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 05. Aug. 2004 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
|
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 05. Aug. 2004 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
Also ich habe mit ein VBA-teil programmiert. Kannst auch für Namen z.B. automatisch Datum + Uhrzeit mit Mili-Sek eingeben als Default Code:
... Dim StateObj As AcadLayerStateManager Dim eMask As AcLayerStateMask On Local Error Resume Next SaveLayerStateFrm.Show If SaveLayerStateFrm.OK = True Then Set StateObj = New AcadLayerStateManager StateObj.SetDatabase ThisDrawing.Database eMask = acLsNone With SaveLayerStateFrm If .CheckBox1.Value = True Then eMask = acLsOn If .CheckBox2.Value = True Then eMask = eMask + acLsFrozen If .CheckBox3.Value = True Then eMask = eMask + acLsLocked If .CheckBox4.Value = True Then eMask = eMask + acLsPlot If .CheckBox5.Value = True Then eMask = eMask + acLsNewViewport If .CheckBox6.Value = True Then eMask = eMask + acLsColor If .CheckBox7.Value = True Then eMask = eMask + acLsLineType If .CheckBox8.Value = True Then eMask = eMask + acLsLineWeight If .CheckBox9.Value = True Then eMask = eMask + acLsPlotStyle StateObj.Save .TextBox1.Text, eMask End With End If End Sub
Das mit Lisp machen ist auch schön ------------------ "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 09:56 <-- editieren / zitieren --> Unities abgeben:
Dann brauche ich 2 Buttons. Egal, wenn es funzt. Wie muß denn das Makro dazu aussehen? Mit "lman;s;c;" komme ich nicht weiter. CADoffel ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 05. Aug. 2004 10:12 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
Erstmal mußt du für dich selbst und uns festlegen wie das überhaupt laufen soll ! Möchtest du irgendwann mal den LayStati speichern und die ganze Sitzung über immerwieder genau diesen wiederherstellen oder möchtest du das eher so: Statusneuerstellen/Statuswiederherstellen/Statusneuerstellen/Statuswiederherstellen/Statusneuerstellen/... Aber ich will da jetzt auch nicht in die Richtung weitermachen - mir reicht immernoch "Layerp" ! (muß man halt mehrfach druffdrücke) oder aber eben der Lman, aber genau das möchtest du ja nicht.
------------------ - Sebastian - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 05. Aug. 2004 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
|
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 10:51 <-- editieren / zitieren --> Unities abgeben:
Habe eigentlich eher gedacht, daß der alte Status überschrieben wird. Also: Statusneuerstellen/Statuswiederherstellen/Statusneuerstellen/Statuswiederherstellen... ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Aug. 2004 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
(defun c:LAYERstandswitch() (if (=(getvar "USERS1") "LAYERSTAND WIEDERHERSTELLEN") (progn (command "-layer" "STATUS" "Wiederherstellen" "STAND" "" "" "") (setvar "USERS1" "LAYERSTAND WIEDERHERSTELLEN") ) (progn (command "-layer" "Status" "Löschen" "Stand" "" "" "") (command "-layer" "STATUS" "SPEICHERN" "STAND" "" "" "") (setvar "USERS1" "LAYERSTAND SPEICHERN") ) ) ) Ist das was Fuchsi meint, jetzt aber nur auf einen Button. (wer's braucht ???) ------------------ - Thomas -
[Diese Nachricht wurde von CADmium am 05. Aug. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 05. Aug. 2004 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
@Cadmium hat nur einen kleinen schönheitsfehler das abspeichern des layerzustands unter dem namen STAND funktioniert nur einmal, danach kommt ne fehlermeldung : Neuen Namen für Layerstatus eingeben: STAND Layerstatus "STAND" ist bereits vorhanden. Neuen Namen für Layerstatus eingeben: STAND1 eigentlich müsstest du vorher den layerstatus STAND Löschen
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Aug. 2004 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
|
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 11:59 <-- editieren / zitieren --> Unities abgeben:
Bei mir kommt folgendes: -Das Textfenster öffnet sich.(s.Screenshot) Warum? :-( ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Aug. 2004 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
.. na dann schick noch ein (graphscr) hinterher! (defun c:LAYERstandswitch() (if (=(getvar "USERS1") "LAYERSTAND WIEDERHERSTELLEN") (progn (command "-layer" "STATUS" "Wiederherstellen" "STAND" "" "" "") (setvar "USERS1" "LAYERSTAND WIEDERHERSTELLEN") ) (progn (command "-layer" "Status" "Löschen" "Stand" "" "" "") (command "-layer" "STATUS" "SPEICHERN" "STAND" "" "" "") (setvar "USERS1" "LAYERSTAND SPEICHERN") ) ) (graphscr) ) ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
michelangelo Mitglied
Beiträge: 158 Registriert: 08.04.2004 Win XP, ACAD 2002 ExpressTool vom ACAD 2000
|
erstellt am: 05. Aug. 2004 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
Habe für das ein lisp gefunden braucht nur ein button, ist aber nur für die aktuelle zeichnung gültig nach schliessen der zeichnung ist der layerstand weg. ;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ;; LAYERSTATUS ;; ;; Programm sichert den aktuellen Layerstand oder schreibt den gesicherten Layerstand wieder zurück. Die Variable, ;; in die gesichert wird, kann vom Benutzer nicht vorgegeben werden - auch hat diese Routine nichts mit den ;; Bonustools 'LMAN' zu tun. ;; ;; ;; Dezember 1998 ;; Letzte Änderung: 22.1.1999 ;; ;; (c) Volker Kleppel / Beethovenstrasse 68 / 71640 Ludwigsburg / vkleppel@lycosmail.com ;; ;; System: AutoCAD 14 ;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= (defun c:layerst ( / answer) (if (not layersteinst) (setq layersteinst "Auto")) (if (= layersteinst "Auto") (progn (princ "\nModus: Automatisch") (if (= layerlisteflip T) (progn (initget 128 "Sichern Wiederherstellen Einstellung") (if (not (setq answer (getkword "\nLayerstatus: Einstellung/Sichern/<Wiederherstellen> "))) (setq answer "Wiederherstellen")) ) (progn (initget 128 "Sichern Wiederherstellen Einstellung") (if (not (setq answer (getkword "\nLayerstatus: Einstellung/Wiederherstellen/<Sichern> "))) (setq answer "Sichern")) ) ) ) (progn (princ "\nModus: Manuell") (initget 128 "Sichern Wiederherstellen Einstellung") (if (not (setq answer (getkword "\nLayerstatus: Einstellung/Sichern/<Wiederherstellen> "))) (setq answer "Wiederherstellen")) ) ) ;Einstellung (if (= answer "Einstellung") (progn (initget 128 "Manuell Auto") (if (not (setq layersteinst (getkword "\nEinstellung: Manuell/<Auto> "))) (setq layersteinst "Auto")) (print) ) ) ;Wiederherstellen (if (= answer "Wiederherstellen") (progn (if (not layerstliste) (princ "\nKeinen Layerstand gesichert!") (layerwiederherstellen)) (setq layerlisteflip nil) ) ) ;Sichern (if (= answer "Sichern") (layersichern) ) (print) ) (defun layersichern ( / dump) (setq layerliste nil) (setq dump (tblnext "LAYER" T)) (while (/= dump nil) (setq layerstliste (append layerstliste (list dump))) (setq dump (tblnext "layer")) ) (setq layerlisteflip T) (princ "\nLayerstauts wurde gesichert") (print) ) (defun layerwiederherstellen ( / i dump regendump) (setq i (length layerstliste) regendump nil) (while (> i 0) (setq temp (nth (1- i) layerstliste)) (setq en (tblobjname "LAYER" (cdr (assoc 2 temp)))) (setq ent (entget en)) (if (= (boole 1 1 (cdr (assoc 70 temp))) 1) (setq regendump T)) (setq ent (subst (assoc 70 temp) (assoc 70 ent) ent)) (setq ent (subst (assoc 62 temp) (assoc 62 ent) ent)) (entmod ent) (entupd en) (setq i (1- i)) ) (setq dump (getvar "CMDECHO")) (setvar "cmdecho" 0) (command "_.layer" "") (setvar "cmdecho" dump) (if (= regendump T) (progn (command "_regenall") (princ "\nZeichnung muß regeneriert werden ..."))) (princ "\nLayerstatus wurde wiederhergestellt") (print) ) (princ "\nLAYERSTATUS geladen [(c) 1998 · Volker Kleppel]") (princ "\nAufruf durch: layerst") (print) ich habe noch eine Frage, im fogenden beitrag: http://ww3.cad.de/foren/ubb/Forum145/HTML/000716.shtml habt ihr über das urheberrecht diskutiert. wen ich ein lisp reinkopiere weil ich nicht mehr weiss wo her ich es habe ist das einproblem? die copyright's sind ja vermerkt. [Diese Nachricht wurde von michelangelo am 05. Aug. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 14:42 <-- editieren / zitieren --> Unities abgeben:
@thomas: irgendwie funzt das bei mir nicht. Das Textfenster wird jetzt zwar wieder geschlossen, aber der Layerstand wird nicht wiederhergestellt. @ michelangelo: genau das isses. Lässt sich mit 2 Buttons wunderbar realisieren. Würde das auch mit einem gehen? Also abwechselnd sichern und wiederherstellen? Gruß :-) ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
michelangelo Mitglied
Beiträge: 158 Registriert: 08.04.2004 Win XP, ACAD 2002 ExpressTool vom ACAD 2000
|
erstellt am: 05. Aug. 2004 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
warum machst du zwei?? ein button schreib dort z.B.: ^c^cLayerst oder deluxversion: ^C^C(if (not Layerstatus)(load "Layerstatus" '("Layerstatus"))) Layerst das lisp wechselt automatisch die vorauswahl. das heisst button drucken rechte maustaste für standspeichern button drücken rechtemaustaste für wiederherstellen button drucken rechte maustaste für standspeichern button drücken rechtemaustaste für wiederherstellen ..... erst wenn du von diesem rhythmus weg willst musst du noch was eingeben. lies einfach die befehlseingabe.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADoffel Mitglied Tech. Zeichner (Haustechnik)
Beiträge: 131 Registriert: 12.08.2002 - Win 2000<P>- AutoCAD 2002 LT+ LT-Extender+ Exresstools 1-8 - AutoCAD 2002 Architectual Desktop + Expresstools 1-9
|
erstellt am: 05. Aug. 2004 15:10 <-- editieren / zitieren --> Unities abgeben:
Das war das, was ich gesucht habe. Ich danke euch vielmals. Gruß CADoffel ------------------
"ich weiß dass ich nichts weiß, dennoch weiß ich mehr als diejenigen die nicht wissen dass sie nichts wissen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 06. Aug. 2004 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für CADoffel
Hallo Leute Das ist ja schön und gut. Den Ansatz von Thomas aus einem anderen Beitrag finde ich besser, da ohne dem Befehl "command". Hab ihn mal hier reinkopiert. (defun LAYER-export(DATEINAME / LAYER LAYDATA LISTE DATEI) (While (setq LAYER (tblnext "LAYER" (null LAYER))) (setq LAYDATA (vl-remove-if '(lambda (L)(member(car L) '(-1 330 -2 5 390))) (entget(tblobjname "LAYER" (cdr(assoc 2 LAYER))) '("*")) ) ) (setq LISTE (cons LAYDATA LISTE)) ) (if(setq DATEI(open DATEINAME "w")) (progn (foreach LAYER LISTE (princ "(entmake '" DATEI) (prin1 LAYER DATEI) (princ ")\n" DATEI) ) (close DATEI) ) ) ) (defun c:LAYER-EXPORT ( / DATEINAME ) (if (setq DATEINAME (getfiled "LAYER-EXPORT" (getvar "SAVEFILEPATH") "LAY" 1)) (LAYER-EXPORT DATEINAME) (princ "\nAbgebrochen ..............\n") ) (princ) ) (defun c:LAYER-IMPORT ( / DATEINAME ) (if (setq DATEINAME (getfiled "LAYER-IMPORT" (getvar "SAVEFILEPATH") "LAY" 8)) (load DATEINAME) (princ "\nAbgebrochen ..............\n") ) (princ) ) Das einzigste woran Thomas nicht gedacht hat ist, das man auch Plotstiltabellen in den Layer ändern kann. Hat vielleicht jemand Lust das so umzutexten das auch der Plotstil mit abgespeichert und wieder hergestellt wird? Das darf natürlich nur passieren wenn die Zeichnung für benannte Plotstile eingestellt wurde. ... (if (= (getvar "PSTYLEMODE") 1 )(ohne plotsile)(mit plotstile))... ------------------ Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |