Hi,
wenn Axel schon was allgemeines dazu beisteuert will auch ich das tun...
Reaktoren sind wirklich nicht das gelbe vom Ei.
Aber man kann auch auf andere Weise ähnliche Effekte erreichen, gerade dann wenn Aufgaben sich häufig wiederholen.
Ich habe mir ein Lisp-Konstrukt gebaut, in dem man Themenbezogen arbeitet; also z.B. Thema: Wasserleiungen, oder Gasleitungen usw.
Man wählt ein Thema und verwendet einen Extra-Werkzeugkasten für diverse Befehle die man so braucht (z.B. Text erzeugen, Bemassen, Leitung zeichnen usw.). Hinter diesen Befehlen verbergen sich Funktionsaufrufe die im wesenlichen folgendes machen:
1. Thema überprüfen
2. In exterer Parameterdatei gucken, welche Werte für die Kombination aus "Befehl" und "Thema" gelten:
z.B. Thema: Gas, Befehl: Leitung -> steht in der Parameterdatei:
Layer "Gas", Farbe: "1" usw..., Befehl für Gasleitung zeichnen "_.pline".
3. Layer wird entsprechend gesetzt und Befehl aufgerufen...
Noch besser wird's bei Text-Befehlen:
Für ein Thema steht in der Parameterdatei dann der Textstil, die vorgesehene Texthöhe, der Layer usw.
Oder Bemassung, Bemassungsstil, Layer...
Was eben so erforderlich ist.
Das ganze ist dann mit'n paar Funktionen gekoppelt, die automatisch Blöcke importieren, fehlende Stile laden, Layer erzeugen usw.
Da kann man wunderbar schnell mit arbeiten.
Ich nenne das hier immer "Fire&Forget"-Funktionen.
Die Kollegen hier machen sich keine Gedanken mehr um Layer, Textstile, Massstile, Zeichenregeln... Dies übernimmt alles die Themensteuerung.
Und das beste ist, die Toolbar-Icons sind immer gleich, wie sich ein Befehl "Zeichne Leitung" auswirkt hängt immer vom aktuellen Thema ab,
Gas und Wasser Thema ruft _.pline auf, Abwasser 'n extra Lisp das fregestellte Linienzüge mit Schachtblöcken an den Knickpunkten malt, Fernwärme erzeugt Doppellinien, Fremdleitung erzeugt Linien...
Und alles immer auf den richtigen Layern und mit den richtigen Einstellungen. Man kann also auch durchaus OHNE Reaktoren leben...
Hier ein Auszug aus zweien meiner Parameterdateien:
(zur Veranschaulichung)
;_ Layer.txt
;;; Layer.txt -> Parameterdatei für ZVO-NIS
;;; Aufbau der Parameter in Liste:
;;; ("LayerName" "FarbNr." "Linientyp" Druckbar? Linienstärke?)
;;; nth 0 = String
;;; nth 1 = Farbnummer als String
;;; nth 2 = Linientyp der Acad.lin oder Acadneu.lin als String
;;; nth 3 = Integer: 1=druckbar 0=nicht druckbar
;;; nth 4 = Integer: -3=Vorgabe Weitere zulässige Werte siehe Acad Hilfe
;;; Begin Layers
("$_PRINTER" "222" "CONTINUOUS" 1 25)
("$BILD$ABWASSER" "6" "CONTINUOUS" 1 -3)
("$BILD$BLANKO" "6" "CONTINUOUS" 1 -3)
("$BILD$GAS" "6" "CONTINUOUS" 1 -3)
("$BILD$KABEL" "6" "CONTINUOUS" 1 -3)
("$BILD$KARTE" "6" "CONTINUOUS" 1 -3)
("$BILD$REGEN" "6" "CONTINUOUS" 1 -3)
("$BILD$WASSER" "6" "CONTINUOUS" 1 -3)
("$MARK$-$ABWASSER" "3" "CONTINUOUS" 0 -3)
("$MARK$-$BLANKO" "9" "CONTINUOUS" 0 -3)
("$MARK$-$GAS" "2" "CONTINUOUS" 0 -3)
("$MARK$-$KABEL" "6" "CONTINUOUS" 0 -3)
("$MARK$-$REGEN" "153" "CONTINUOUS" 0 -3)
("$MARK$-$WASSER" "4" "CONTINUOUS" 0 -3)
("$MARK$ABETRIEB" "21" "CONTINUOUS" 0 -3)
("$MARK$ABWASSER" "3" "CONTINUOUS" 0 -3)
("$MARK$BLANKO" "9" "CONTINUOUS" 0 -3)
("$MARK$GAS" "2" "CONTINUOUS" 0 -3)
("$MARK$KABEL" "6" "CONTINUOUS" 0 -3)
("$MARK$REGEN" "153" "CONTINUOUS" 0 -3)
("$MARK$FWAERME" "1" "CONTINUOUS" 0 -3)
("$MARK$WASSER" "4" "CONTINUOUS" 0 -3)
("$PLOT$LAYOUT" "1" "CONTINUOUS" 1 -3)
("$PLOT$MARK" "7" "GESTRICHELT" 0 -3)
("0" "7" "CONTINUOUS" 1 -3)
("B_AFLURGRENZE" "9" "FLURGRENZE" 1 -3)
("B_AFSNSTRASSE" "8" "CONTINUOUS" 0 -3)
("B_AFSNUMMER" "8" "CONTINUOUS" 0 -3)
("B_AGEMARKUNGSGRENZE" "9" "GEMARKUNGSGRENZE" 1 -3)
("B_AGEMEINDEGRENZE" "9" "STRICHPUNKT" 1 -3)
("B_AKREISGRENZE" "247" "RAND2" 1 -3)
("B_ATXT25" "8" "CONTINUOUS" 1 -3)
("B_ATXT35" "254" "CONTINUOUS" 1 -3)
("B_ATXT5" "9" "CONTINUOUS" 1 -3)
("B_BPLAN" "16" "GESTRICHELT2" 1 -3)
("B_GBPLAN" "13" "GESTRICHELT2" 1 -3)
("B_GGHAUSNR" "253" "CONTINUOUS" 1 -3)
("B_GGHAUSNRBPLAN" "13" "GESTRICHELT2" 1 -3)
("B_GGHPT" "9" "CONTINUOUS" 1 -3)
("B_GGHPTBPLAN" "15" "GESTRICHELT2" 1 -3)
("B_GGHPTENTWURF" "75" "CONTINUOUS" 1 -3)
("B_GGHPTINFO" "253" "CONTINUOUS" 1 -3)
...
("F_TOTMASS" "93" "CONTINUOUS" 1 -3)
("F_WAERDETAIL" "1" "CONTINUOUS" 1 -3)
("F_WAEREBT" "1" "CONTINUOUS" 1 -3)
("F_WAERHOEHE" "1" "CONTINUOUS" 1 -3)
("F_WAERINFO" "210" "CONTINUOUS" 1 -3)
("F_WAERLTG" "161" "GESTRICHELT2" 1 35)
("F_WAERMASS" "1" "CONTINUOUS" 1 -3)
("F_WAERFLICK" "1" "CONTINUOUS" 1 -3)
("F_WAERSCHIEBER" "1" "CONTINUOUS" 1 -3)
("F_WAERSCHUTZROHR" "6" "CONTINUOUS" 1 -3)
("F_$ZUSTAENDIG$" "6" "CONTINUOUS" 0 -3)
("G_HD16DETAIL" "1" "CONTINUOUS" 1 -3)
("G_HD16EBT" "1" "CONTINUOUS" 1 -3)
("G_HD16FLICK" "1" "CONTINUOUS" 1 -3)
("G_HD16HINWEIS" "1" "CONTINUOUS" 1 -3)
("G_HD16HOEHE" "1" "CONTINUOUS" 1 -3)
("G_HD16INFO" "4" "CONTINUOUS" 1 -3)
("G_HD16KATSCHUTZ" "1" "CONTINUOUS" 1 -3)
("G_HD16LTG" "20" "GESTRICHELT2" 1 70)
("G_HD16MASS" "1" "CONTINUOUS" 1 -3)
("G_HD16NR_SCHIEBER" "1" "CONTINUOUS" 1 -3)
("G_HD16SCHIEBER" "1" "CONTINUOUS" 1 -3)
("G_HD4PDETAIL" "1" "CONTINUOUS" 1 -3)
("G_HD4PEBT" "1" "CONTINUOUS" 1 -3)
("G_HD4PFLICK" "1" "CONTINUOUS" 1 -3)
("G_HD4PHINWEIS" "1" "CONTINUOUS" 1 -3)
("G_HD4PHOEHE" "1" "CONTINUOUS" 1 -3)
("G_HD4PINFO" "4" "CONTINUOUS" 1 -3)
("G_HD4PLTG" "211" "GESTRICHELT2" 1 50)
("G_HD4PMASS" "1" "CONTINUOUS" 1 -3)
("G_HD4PNR_SCHIEBER" "1" "CONTINUOUS" 1 -3)
("G_HD4PSCHIEBER" "1" "CONTINUOUS" 1 -3)
...
;_ Themes.txt
;;; Diese Datei legt die Themen und Parameter für die NIS-Steuerung fest
;;; Semikola am Anfang einer Zeile werden als Kommentar gewertet.
;;; Leerzeilen werden ignoriert.
;;; Der Aufbau der Datei ist folgender:
;;; Das Wort "Rubrik" läßt das Programm erkennen, das eine neue Rubrik anfängt.
;;; Unter "Rubrik" ist immer der Name der Rubrik zu finden.
;;; Dann folgt das Thema
;;; auf das Thema muss das Layersegment für dieses folgen
;;; anschließend Infotxthöhe
;;; ...Höhentxthöhe
;;; ...Blockliste
;;; die Blockliste setzt sich wie folgt zusammen:
;;; ("BLOCKNAME" "Übersetzungstext" "LAYER")
;;; Beipiel:
;;;
;;; "Rubrik" -Kennung
;;; "ABWASSER" -Name der Rubrik
;;; "GEFÄLLEKANAL" -Thema
;;; "S_H" -1 tes Layersegment des Themas
;;; Änderung: Um geplanten Straßen und B-Plänen in der Grundkarte Rechnung zu
;;; tragen, wurden in Blanko auch Themen eingeführt.
;;; Leider lassen sich diese nicht mehr mit Hilfe des 1. Layersegments erfaßen.
;;; D.h. im Thema Blanko werden die Layerlisten erstmal komplett erfaßt ("B_")
;;; und dann im Nachhinein bezüglich des aktuellen Themas nochmal gefiltert.
;;; Siehe Funktion (c:layer-sel
;;; 0.9 -Infotexthöhe
;;; 0.9 -Höhentexthöhe
;;; ("SCHACHT" "Schacht" "S_HSCHACHT") -es folgen die Segmente der Blockliste...
;;; ("BAUM" "Baumymbol" "S_HMASS") -usw...
;;; Wenn keine Blöcke vorgesehen sind, folgt einfach das nächste "Rubrik"
;;; Wenn kein eindeutiger Layer zuzuordnen ist sollte als Layer "0" angegeben werden,
;;; da auf diese Art eine Meldung zum manuellen zuordnen des Blocks erscheint...
;;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;;; ! Am Ende der Datei muß ein "Rubrik" als EOF stehen !
;;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;;; Aus dieser Abfolge erzeugt die Steuerung eine Liste, aus der alle relevanten
;;; Daten entnommen werden können:
;;; Was wird in "MODEMACRO" angezeigt, welche Texthöhen gelten, welche Blöcke sind
;;; zulässig usw.
;;; Die jeweils aktuellen Daten werden in der GLOBALEN Variable "THEME-LIST" vorgehalten.
;;; And always remember: Have more fun!
"Rubrik"
"WÄRME"
"HAUSANSCHLUSS"
"F_HA"
0.9
0.9
("SCHIEBER" "Absperrschieber" "F_HASCHIEBER")
("KLAPPE" "Absperrklappe" "F_HASCHIEBER")
("AS" "Anschlussschieber" "F_HASCHIEBER")
("REDUZ" "Reduzierung" "F_HAEBT")
("HKUPP" "Kupplung" "F_HAEBT")
("LUEFTER" "Lüftersymbol" "F_HAEBT")
("SR_XSCAL" "Schutzrohr" "F_HASCHUTZROHR")
("KSCHUTZ" "Kathodenschutzpfahl" "F_HAEBT")
("PFAHLINF" "Pfahl-Beschilderung" "F_HAMASS")
("PRESMARK" "Markierung für Pressung" "F_HADETAIL")
("PRESPROT" "Protokoll für Pressung" "F_HADETAIL")
("SCHACHT" "Schachtsymbol" "F_HAMASS")
("FSCHACHT" "Fremdschachtsymbol" "F_HAMASS")
("BAUM" "Baumsymbol" "F_HAMASS")
("GRENZSTN" "Grenzsteinsymbol" "F_HAMASS")
("KILOMSTN" "Kilometerstein" "F_HAMASS")
("PFEIL" "Pfeilsymbol" "0")
("NRDPFEIL" "Nordpfeil" "0")
"Rubrik"
"WÄRME"
"HAUPTROHR"
"F_WAER"
0.9
0.9
("SCHIEBER" "Absperrschieber" "F_WAERSCHIEBER")
("KLAPPE" "Absperrklappe" "F_WAERSCHIEBER")
("AS" "Anschlussschieber" "F_WAERSCHIEBER")
("REDUZ" "Reduzierung" "F_WAEREBT")
("HKUPP" "Kupplung" "F_WAEREBT")
("LUEFTER" "Lüftersymbol" "F_WAEREBT")
("SR_XSCAL" "Schutzrohr" "F_WAERSCHUTZROHR")
("KSCHUTZ" "Kathodenschutzpfahl" "F_WAEREBT")
("PFAHLINF" "Pfahl-Beschilderung" "F_WAERMASS")
("PRESMARK" "Markierung für Pressung" "F_WAERDETAIL")
("PRESPROT" "Protokoll für Pressung" "F_WAERDETAIL")
("SCHACHT" "Schachtsymbol" "F_WAERMASS")
("FSCHACHT" "Fremdschachtsymbol" "F_WAERMASS")
("BAUM" "Baumsymbol" "F_WAERMASS")
("GRENZSTN" "Grenzsteinsymbol" "F_WAERMASS")
("KILOMSTN" "Kilometerstein" "F_WAERMASS")
("PFEIL" "Pfeilsymbol" "0")
("NRDPFEIL" "Nordpfeil" "0")
"Rubrik"
"WÄRME"
"STILLGELEGT"
"F_TOT"
0.65
0.65
"Rubrik"
"GAS"
"HOCHDRUCK 16 BAR"
"G_HD16"
1.25
0.9
("G_S" "Streckenschieber" "G_HD16SCHIEBER")
("G_AS" "Anschlussschieber" "G_HD16SCHIEBER")
("G_SS" "Stationsschieber" "G_HD16SCHIEBER")
("G_VBS" "Verbindungsschieber" "G_HD16SCHIEBER")
("G_LUEFTR" "Lüftersymbol" "G_HD16EBT")
("G_LS" "Lüfterschieber" "G_HD16SCHIEBER")
("GSCHRANK" "Gasschrank" "G_HD16EBT")
("REDUZ" "Reduzierung" "G_HD16EBT")
("REDUZ" "Wechsel" "G_HD16INFO")
("HKUPP" "Kupplung" "G_HD16EBT")
("SR_XSCAL" "Schutzrohr" "G_HD16EBT")
("KSCHUTZ" "Kathodenschutzpfahl" "G_HD16KATSCHUTZ")
("G_PFAHL" "Hinweispfahl" "G_HD16HINWEIS")
("PFAHLINF" "Pfahl-Beschilderung" "G_HD16MASS")
("G_SPA" "Sperrblasenarmatur" "G_HD16EBT")
("RRKAPPE" "Riechrohr" "G_HD16EBT")
("G_WT" "Wassertopf" "G_HD16EBT")
("DT_GISO" "Isolierstück" "G_HD16EBT")
("DT_X" "X-Stück" "G_HD16EBT")
("PRESMARK" "Markierung für Pressung" "G_HD16DETAIL")
("PRESPROT" "Protokoll für Pressung" "G_HD16DETAIL")
("SCHACHT" "Schachtsymbol" "G_HD16MASS")
("FSCHACHT" "Fremdschachtsymbol" "G_HD16MASS")
("BAUM" "Baumsymbol" "G_HD16MASS")
("GRENZSTN" "Grenzsteinsymbol" "G_HD16MASS")
("KILOMSTN" "Kilometerstein" "G_HD16MASS")
("PFEIL" "Pfeilsymbol" "0")
("NRDPFEIL" "Nordpfeil" "0")
...
Ist vielleicht am Anfang 'n bischen Aufwändig (man braucht ja nicht alles auf einmal machen) lohnt aber. Die Zeitersparnis ist gewaltig.
Und multipliziert sich natürlich mit der Anzahl der Anwender.
------------------
Ciao,
Marc
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP