181
WoT WMF PowerWMFeinfügen3.0 Simon Pie cc-by-sa Seite 1 Einleitung PowerWMFeinfügen ist ein Datenkompressionsprogramm zum Einfügen von AutoCADinhalten in Word. Der eingefügte Inhalt ist eine Vektorgrafik im Dateiformat WMF (Windows Metafile). PowerWMFeinfügen wird im Bereich der professionellen Dokumentation eingesetzt. Es gibt viele Dokumente, dessen äußeres Erscheinungsbild wichtig ist. Zu einem schönen Dokument gehören auch Vektorgrafiken. Schöne Vektorgrafiken haben gegenüber Bitmaps diese Vorteile: beliebig Zoomen: keine Pixel an der Tafel, im PDF oder auf dem Papier gute Lesbarkeit der Texte, auch wenn sie viel zu klein sind scrollen über das Dokument, ohne Sand im Mausrad besseres Verständnis und Durchsuchen nach Texte winzige Dateigröße scharfe Linien, auch wenn sie diagonal sind gestochen scharfe Drucke - egal ob 4 Seiten pro Blatt oder starke Vergrößerung Dokumente mit Vektorgrafiken sind sehr beliebt bei den jüngeren Menschen der Counterstrike-Generation. Bei alten Leuten kann es vorkommen, dass sie solchen Quatsch wie Word, AutoCAD, Vektorgrafiken und Rechenprogamme ihren Bleistift, Zeichenbrett, Handskizze und Handrechnung vorziehen. Dennoch gehört die Zukunft dem Fortschritt und nicht denen, die in Ruhestand gehen, sodass vektorisierte Dokumente immer mehr an Popularität gewinnen. Mit AutoCAD, Word und PowerWMF kann jeder dieses Ziel nun erreichen und ist nicht mehr auf erfahrene Dokumentierer mit spezieller Software angewiesen. Dieses Dokument beschreibt die Anwendung und die Funxionsweise des Makros „PowerWMFeinfügen“. Das Makro PowerWMFeinfügen bildet die dringend benötigte Verbindung zwischen AutoCAD und Word. Zeichnungen werden in AutoCAD mit viel Zeit gezeichnet und dann müssen diese irgendwie in Word eingefügt werden. Bitmapformate, wie PNG und JPG, sind der herkömmliche Lösungsweg. AutoCAD kann WMF Grafiken erzeugen, die aber sehr zu wünschen übrig lassen. Die WMF beim Druck viel zu dünn aus und die Farben müssen manuell auf schwarz gesetzt werden. Genau hier setzt das Makro an. Dieses wandelt die Farben wie nach einer CTB in

Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

  • Upload
    vanliem

  • View
    230

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 1

EinleitungPowerWMFeinfügen ist ein Datenkompressionsprogramm zum Einfügen von AutoCADinhalten in Word. Der eingefügte Inhalt ist eine Vektorgrafik im Dateiformat WMF (Windows Metafile). PowerWMFeinfügen wird im Bereich der professionellen Dokumentation eingesetzt.Es gibt viele Dokumente, dessen äußeres Erscheinungsbild wichtig ist. Zu einem schönen Dokument gehören auch Vektorgrafiken. Schöne Vektorgrafiken haben gegenüber Bitmaps diese Vorteile:

beliebig Zoomen: keine Pixel an der Tafel, im PDF oder auf dem Papier gute Lesbarkeit der Texte, auch wenn sie viel zu klein sind scrollen über das Dokument, ohne Sand im Mausrad besseres Verständnis und Durchsuchen nach Texte winzige Dateigröße scharfe Linien, auch wenn sie diagonal sind gestochen scharfe Drucke - egal ob 4 Seiten pro Blatt oder starke Vergrößerung

Dokumente mit Vektorgrafiken sind sehr beliebt bei den jüngeren Menschen der Counterstrike-Generation. Bei alten Leuten kann es vorkommen, dass sie solchen Quatsch wie Word, AutoCAD, Vektorgrafiken und Rechenprogamme ihren Bleistift, Zeichenbrett, Handskizze und Handrechnung vorziehen. Dennoch gehört die Zukunft dem Fortschritt und nicht denen, die in Ruhestand gehen, sodass vektorisierte Dokumente immer mehr an Popularität gewinnen.Mit AutoCAD, Word und PowerWMF kann jeder dieses Ziel nun erreichen und ist nicht mehr auf erfahrene Dokumentierer mit spezieller Software angewiesen.

Dieses Dokument beschreibt die Anwendung und die Funxionsweise des Makros „PowerWMFeinfügen“.Das Makro PowerWMFeinfügen bildet die dringend benötigte Verbindung zwischen AutoCAD und Word. Zeichnungen werden in AutoCAD mit viel Zeit gezeichnet und dann müssen diese irgendwie in Word eingefügt werden. Bitmapformate, wie PNG und JPG, sind der herkömmliche Lösungsweg. AutoCAD kann WMF Grafiken erzeugen, die aber sehr zu wünschen übrig lassen. Die WMF beim Druck viel zu dünn aus und die Farben müssen manuell auf schwarz gesetzt werden. Genau hier setzt das Makro an. Dieses wandelt die Farben wie nach einer CTB in native WMF Strichstärken um. Damit werden 2 Probleme auf einmal gelöst. Man muss die Farben nicht mehr auf Schwarz setzen und beim Einfügen haben diese bereits Strichstärken.Die zweite Funxion des Makros ist eine verlustarme Datenkompression mit einer Kompressionsrate von 50% bis 85%. Der Kompressionsalgorithmus dieses Makros setzt sich aus einer strukturellen und einer geometrischen Datenkompression zusammen. ZIParchive, wie docx oder xlsx, kombinieren eine Wörterbuchkompression mit der Huffmannentropiekompression. Die Datenkompression des Makros konkurriert also nicht mit ZIP, sodass hier nicht geprahlt wird, dass PowerWMF ein klein bisschen besser packt als ZIP, sondern PowerWMF und ZIP ergänzen sich und erreichen zusammen ein größeres Ergebnis.

Es wird Word 2007 empfohlen.

PowerWMFeinfügen vereinigt beste grafische Qualität mit minimalstem Speicherbedarf!

Page 2: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 2

Einsatzgebiete Professionelle Grafiken werden dringend in prachtvollen Diplom-, Bachelor-, Master- und

Doktorarbeiten, Skripte sowie Lehrbüchern und häufig gelesenen Dokumenten benötigt! Außerdem sind erklärende Grafiken für Excelberechnungen sinnvoll, wo es auf häufige

Wiederverwendung ankommt. Für Einwegstatiken und Wegwerfdokumente ist PowerWMF im Gegensatz zur Bitmap

zumindest die etwas bessere Wahl, da die Grafiken schneller in Word eingefügt sind und weniger Speicher brauchen.

Dokumente, die als PDF gedruckt werden müssen. Vektorgrafiken bleiben auch in PDF Vektorgrafiken. Bei Bitmaps hingegen kann man sich ab Windows 7 mit Word 2010 noch so viel Mühe mit dem Aussehen und der Kompression machen, beim Druck werden diese erstmals hässlich und speicherfressend zerrechnet. Mit Word 2010 kann man besser telefonieren, aber schlechter drucken. Word 2013 hat eine schlechtere Darstellung von WMF-Dateien und bei Word2016 sagte man, dass es bei Formeln abstürzt.

Gute Grafiken sind nichts für Ingenieurbüros der alten Schule, wo noch die Seitenzahlen mit dem Kuli reingeschrieben und die Blätter mehrmals zusammengescannt werden.

PowerWMF macht keinen Sinn, wo WMF keinen Sinn macht. Dies betrifft zum einen Kunstwerke. WMF enthält keine Splinien, Farbverläufe und Transparenz und ist daher gänzlich ungeeignet für schöne Kunstwerke. Für Kunst sind z.B. die Dateiformate SVG, CDR und SWF sinnvoll. Auch das erweiterte Windows Metafile hat keine Farbverläufe und Transparenz, sodass Word selbst für Kunst ungeeignet ist. Zum anderen werden Word und Windows vorausgesetzt, also keine Arbeiten mit Latex und Linux. Für reine Nichtkunstwerke wie technische Zeichnungen und mathematische Berechnungen ist Word mit WMF die beste Wahl, weil das abgespeckte WMF sehr wenig Speicher benötigt.

Beim Arbeiten mit Bautext macht der Formelumwandler keinen Sinn, da Bautext im Gegensatz zu Word besser rechnen und schlechter formatieren kann. Wer bei Word bleiben will, dem ist der Formelumwandler eine riesige Hilfe.

Dieses Dokument beinhaltet auch den Formelumwandler. Mit diesen kann Word als Taschenrechner benutzt werden und Formeln schnell und bequem erstellt werden. Wer viele Berechnungen in Word dokumentiert, wird diesen dringend brauchen.

Page 3: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 3

Inhaltsverzeichnis

Einleitung..............................................................................................................................................1

PowerWMF anwenden........................................................................................................................5

Beispiel für Dokumentation.................................................................................................................7Dokumentation eines Praktikanten.....................................................................................................8durchschnittliche Dokumentation....................................................................................................10professionelle Dokumentation..........................................................................................................12

Beispielgrafiken..................................................................................................................................14

Problemlösungen bei hässlicher Grafik...........................................................................................22Die Texte sind zensiert.....................................................................................................................22In der Grafik liegen lauter kleine Kreise rum und die Punkte der Axen fehlen...............................24Die Texte sehen hässlich aus............................................................................................................24Die Grafik sieht immer noch hässlich aus........................................................................................25Es fehlen Objekte.............................................................................................................................26Die Grafik wird nicht in ein korrektes PDFormat umgewandelt.....................................................26Die Grafik hat falsche Linienstärken...............................................................................................27Die Grafik sieht nach dem Drehen ekelhaft aus...............................................................................28Achtecke werden zu Kreise..............................................................................................................29Darstellungsprobleme.......................................................................................................................29Extrawünsche...................................................................................................................................30Zusammenfassung............................................................................................................................31

Wirkungsweise des Makros...............................................................................................................32Beispiel der Kompressionsleistung..................................................................................................41Mathematische Hintergründe der Funxion Polyglätten...................................................................44

Inhalt einer WMF-Datei....................................................................................................................52Hexdump einer AutoCAD-WMF.....................................................................................................52Hexdump einer AutoCAD-WMF mit PowerWMF..........................................................................56bildliche Darstellung des Hexdump.................................................................................................58bildliche Darstellung des Hexdump mit PowerWMF......................................................................62

Installationsanleitung.........................................................................................................................64

Der Code..............................................................................................................................................68Zubehör............................................................................................................................................68

Function Typ() As Integer..................................................68Function Starten() As String...............................................69Sub ausrechnen()...........................................................70Sub vausrechnen()..........................................................70Sub KKTformelumwandler()...................................................71Sub KKTfurmelumwandler()...................................................72Function Ribozym() As Integer..............................................72Function tRNA() As Integer.................................................73Function DNApolymerase() As Integer........................................74Function DNAse() As Integer................................................76Function RNApolymerase(ByVal Hemmung As Integer) As Integer................77Function Reversetransskriptase() As Integer................................84Function Ribosom() As Integer..............................................88Function Reversetranslatase(ByVal Hemmung As Integer) As Integer...........93Function Makrozählen(ByVal Makroeintrag As String) As Integer.............101Sub Zeicheneinkreisen()...................................................102

'WMFzerleger.................................................................................................................................102Function Polyglätten(ByVal Polylinie As String, ByVal Kompression As Double) As String.................................................................110

'Hauptmakro.....................................................................................................................................115

Page 4: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 4

Der Formelumwandler....................................................................................................................140Die Formelmakros..........................................................................................................................140Beispiele.........................................................................................................................................142Das kann der Formelumwandler nicht...........................................................................................143

Lizenzen.............................................................................................................................................144

Page 5: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 5

PowerWMF anwendenDie herkömmliche Art und Weise, wie man AutoCADinhalte in Word rein bekommt ist sehr vielfältig. Gemeinsam ist allen, dass das Resultat jedoch unprofessionell ist.

Dies sind die Lösungswege eines Anfängers Exportieren als PDF und dann irgendwie in Word.

Das irgendwie geschieht über Bildexport, Snippingtools, Screenshot oder Paint.Meist fehlt die Erfahrung, welches das richtige Dateiformat für die Bitmap ist.

Screenshot + Ränder in Word wegschneiden AutoCAD WMFexport: Texte in Polygone und keine Linienstärken

Der Anfänger hinterlässt Hässlichkeiten im Bild, wie AutoCAD-Reste, Windowsleistenstücke, JPG-Artefakte, riesen Datei und alles ist doch irgendwie unscharf.

Und hier die Lösungswege eines Fortgeschrittenen Exportieren als PDF und dann in Word.

Das Bild ist weiterhin eine Bitmap, aber im Gegensatz zum Anfänger wird der Qualitätsverlust minimal gehalten.

Screenshot und Ränder in einem Bildbearbeitungsprogramm wegschneiden.Methoden zur Bildverbesserung

AutoCAD WMFexport: Texte sind Texte aber keine LinienstärkenDer Fortgeschrittene mindert die Probleme die Bitmaps an sich haben, aber vermeidet Lächerlichkeiten, wie AutoCADreste und Windowsleisten.

1%

HEA 200Winkel L 100x50x5

Absturz- und SchlagsichereVerglasung

M16 5.6

44

Abflussrinne mit Gefällein Längsrichtung

S imo n P i e - P o werW M F ei n fü g en 2 . 3P latt en b eu len ; Kamp fk raft th eo rie

1%

HEA 200Winkel L 100x50x5

Absturz- und SchlagsichereVerglasung

M16 5.6

44

Abflussrinne mit Gefällein Längsrichtung

keine Ahnung, wie man das als Vektorgrafik in Word reinbekommt

Exportieren

Page 6: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 6

Die professionellen Lösungen für Dokumente mit Vektorgrafiken lauten: Einfügen der AutoCADinhalte mit einem Einfügeprogramm als schöne Vektorgrafik Exportieren als PDF + lange Nachbearbeitung, um es als Vektorgrafik in Word rein zu

bekommen. Exportieren als PDF und ein sauteures Einfügeprogramm, falls es das gibt... alternativer Skizzeneditor anstelle von AutoCAD ein alternatives Programm anstelle von Word z.B. Latex

Einige professionelle Lösungen haben den Nachteil, dass die Vektorgrafiken in Word krank sind. Die Krankheit kann Word und dessen PDFexport in Mitleidenschaft ziehen.

Jede professionelle Lösung hat irgendwo einen Haken.

Deshalb gibt es PowerWMF!

Dabei werden die Objekte in AutoCAD markiert und als WMF exportiert. In Word wird das Tastenkürzel zum Einfügen getippt. Das Makro komprimiert die Datei und wandelt die Farben in Strichstärken um. Durch die starke Datenkompression ist die Grafik in Word scharf und kann beliebig gezoomt werden.

Der Haken an PowerWMF ist, dass man für einen Erfolg viele Kleinigkeiten beachten muss. Lese das Kapitel „Problemlösung bei hässlicher Grafik“.

1%

HEA 200Winkel L 100x50x5

Absturz- und SchlagsichereVerglasung

M16 5.6

44

Abflussrinne mit Gefällein Längsrichtung

S i mo n P i e - P o werW M F ein fü g en 2 . 3P l att en b eu l en ; Kamp fk raftt h eo rie

1%

HEA 200Winkel L 100x50x5

Absturz- und SchlagsichereVerglasung

M16 5.6

44

Abflussrinne mit Gefällein Längsrichtung

Exportieren als WMF und dann PowerWMFeinfügen3.0 in Word

Page 7: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 7

Beispiel für DokumentationIn meinen 6 Jahren als Bauingenieur habe ich viele Dokumente erstellt und PDFs von anderen Firmen gelesen. Bei der großen Menge an Fremddokumenten habe ich mehrere Qualitätsstufen erkennen können.

unterstes NiveauDie unterste Stufe sind Bitmapscans. Dabei werden verschiedene Programmausdrucke zusammengescannt und die Seitenzahlen per Hand rein geschrieben. Dokumente auf unterstem Niveau können nicht auf Text durchsucht werden, die Handschriften sind saumäßig hin gekrakelt, Grafiken so verschwommen, sodass kleine Buchstaben nicht lesbar sind. Momocromscanne haben hohem Speicherbedarf, während Farbscanne noch wesentlich mehr benötigen und ein bisschen besser lesbar sind.

Dokument eines PraktikantenEtwa 1/3 der Baufirmen erstellen ihre Dokumentation auf Praktikantenniveau. Dessen Ingenieure wissen nicht wie man ein Bild in Word richtig einfügt. Das riesengroße PDF hat verschwommene Bilder und echtem Text. Tabellen sind meist Bitmaps und Formeln treten sporadisch auf.

durchschnittliche DokumentationEin weiteres Drittel erreicht durch schärfere Bilder eine geringere Dateigröße. Im Dokument kommen auch Vektorgrafiken aus Programmen vor. Auf gutem PDF Ausdruck wurde geachtet. Texte sind lesbar und durchsuchbar.

professionelle DokumentationBisher habe ich noch keine Firma gesehen, die eine vergleichbare Qualität zu PowerWMF erreicht. Professionelle Dokumentation hat einen höheren Zeitaufwand am Anfang. Auf der nächsten Seite sind 3 der 4 Dokumentationsqualitäten dokumentiert.Professionelle Dokumente gibt es an Unis und wurden von erfahrenen Freaks mit Latex erstellt. Mit PowerWMF wird der Qualitätsunterschied zwischen Word und Latex verkleinert.

Bei den Beispielen wird die Lösung dieser Aufgabe dokumentiert:Eine Armee besteht aus 10 Kreuzer und 20 Corvetten. Ein Kreuzer einen Angriff von 2,5ka, hält 5kl aus und kostet 10 Führungspunkte. Eine Corvette hat 1ka, 6kl und benötigt 7 Führungspunkte. Beide Gruppen kämpfen 0,8 und der Spieler hat 240 Führungspunkte. Gesucht ist die Kampfkraft und der Kampfverlauf dieser Armee. Kann die Kampfkraft optimiert werden?

Es spielt an sich keine Rolle, welches Thema dokumentiert wird. Statt eines Beispiels der Spieleindustrie, ist für Bauingenieure die Berechnung eines Stahlverbundträgers denkbar und für Maschinenbauer die Leistungsfähigkeit eines Motorteils.

Page 8: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

PowerWMFeinfügen3.0 Simon Pie Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 8

Dokumentation eines PraktikantenAufgabe: Eine Armee besteht aus 10 Kreuzer und 20 Corvetten. Ein Kreuzer einen Angriff von 2,5ka, hält 5kl aus und kostet 10 Führungspunkte. Eine Corvette hat 1ka, 6kl und benötigt 7 Führungspunkte. Beide Gruppen kämpfen 0,8 und der Spieler hat 240 Führungspunkte. Gesucht ist die Kampfkraft und der Kampfverlauf dieser Armee. Kann die Kampfkraft optimiert werden?

Hilfstabelle

Berechnung der KampfkraftLbr =6*(2*fb-1)= 6*(2*0,8-1)= 3,6 klLbr < La => lange MischformelK= fa*La*n*gAa+n*(La-Lrb)*0,5*(gAb+(gAb*(Lb-La))/Lbd)+Lbr*n*gAb+(Ab*(Lb-La)^2*b^2)/(Lbd*2)K= 5838,33Mal

Diagrammpunkte des Kampfverlaufes mit den Punkten P1; P2; P3P1: L1= b*Lb-b*La L1=20*6- 20*5= 20 kl A1= (b*Lb-b*La)*Ab/((2-2*fb)*Lb) A1= 8,33 kaP2: L2=62 kl A2= b*Ab+ ( a*(La-Lb*(2*fb-1))*Aa)/((2-2*fa)*La) A2= 37,5 kaP3: L3= b*Lb+a*La-n*(2*fa-1)*La L3= 80 kl A3= b*Ab+ a*Aa =20*1+10*2,5= 45 ka

scheußlich: Weil dem Ingenieur das Fachwissen fehlt, eine komplexe Exceltabelle in Word ein zu fügen, hat er diese als Screenshot eingefügt

was: bedeuten die Buchstaben?

unverständlich: Die Formel wurde hintereinander weggeschrieben, Zahlen wurden nicht eingesetzt und das Ergebnis vom Taschenrechner abgeschrieben

schlampig: Zahlen werden nicht in die Formeln eingesetzt. Formeln werden teilweise nicht hingeschrieben.

ekelhaft:JPG-Artefakte

Page 9: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

PowerWMFeinfügen3.0 Simon Pie Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 9

Berechnung der optimalen Anzahl

b= (240*3,6*1+240*(5-3,6)*0,5*1*(1+(6-5)/2,4)+0,8*5*2,5*(240-2*240*7/10))/(2*3,6*1*(7-10) +2*7*0,8*5*2,5*(1-7/10)+(5-3,6)*1*(1+(6-5)/2,4)*(7-10)-(10*1*(6-5)^2)/2,4)b= 13,81

a= W−Wb∙b

Wa =14,33

K= fa*La*n*gAa+n*(La-Lrb)*0,5*(gAb+(gAb*(Lb-La))/Lbd)+Lbr*n*gAb+(Ab*(Lb-La)^2*b^2)/(Lbd*2)K= 5858

Eine optimierte Kampfkraft von 5858 Megaangriffsleben ist mit 13,81 Corvetten und 14,33 Kreuzer zu erreichen.

widerlich: Formel als JPG ist schwer lesbar oder braucht viel Speicher. Bei dem Screenshot hätte man wenigstens Cleartype ausstellen sollen!

Zeit am falschen Ende gespart: AutoCADreste

Juhuuu: Ich habe ein Bild in Word eingefügt bekommen!

billig: Seitenzahl mit der Hand reingeschreben

unpassend: Die Schriftart und –größe ist unterschiedlich

unsinnig: eingescannte Handskizzen machen in Word Sinn, wenn es sich dabei Kunstwerke handelt. Also keine Diagramme, Mathematik oder technische Zeichnungen, sondern Gemälde und Fotos.

kompliziert: Der Rechenweg ist schlecht nachvollziehbar

ekelhaft:JPG-Artefakte

schäbig: potthässliches Firmenlogo

grässlich:leichter Graustich

Page 10: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

PowerWMFeinfügen3.0 Simon Pie Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 10

durchschnittliche DokumentationAufgabe: Eine Armee besteht aus 10 Kreuzer und 20 Corvetten. Ein Kreuzer einen Angriff von 2,5ka, hält 5kl aus und kostet 10 Führungspunkte. Eine Corvette hat 1ka, 6kl und benötigt 7 Führungspunkte. Beide Gruppen kämpfen 0,8 und der Spieler hat 240 Führungspunkte. Gesucht ist die Kampfkraft und der Kampfverlauf dieser Armee. Kann die Kampfkraft optimiert werden?

Eingabewerte und Nebenrechnungen  N W L f Lr Ld A gL gAa 10 10 5 0,8 3 2 2,5 50 25b 20 7 6 0,8 3,6 2,4 1 120 20Summe 30  240           170 45

Dabei sinda = Anzahl der Schiffe mit der geringeren Lebenb = Anzahl der Schiffe mit der höheren LebenLa= Leben eines der Schiffe mit der geringeren Leben Lb= Leben eines der Schiffe mit der höheren LebenAa; Ab= Angriff fa; fb= Kampfbeiwert Wa; Wb; W= Rohstoffverbrauchn= a+bgAa= a·Aa; gAb= b·Ab; gLa= a·La; gLb= b·LbLra= La·(2·fa-1); Lrb= Lb·(2·fb-1); Lda= La-Lra; Ldb= Lb-Ldb

Berechnung der KampfkraftLbr =6·(2·fb-1)= 6·(2·0,8-1)= 3,6 klLbr < La => lange Mischformel

K= ∑ (fa ∙ La∙n ∙ gAa

n ∙(La−Lrb)∙ 0,5 ∙(gAb+ gAb ∙(Lb−La)Ldb )

Lbr ∙ n ∙ gAb+Ab ∙(Lb−La)2

Lbd ∙2)

K= 0,8·5·30·25+ 30·(5- 3,6)·0,5·(20+(20·(6-5))/2,4)+3,6·30·20+( (1·(6-5)²·20²))/(2,4·2)K= 3000+ 595+2160+ 83,33K= 5838,33Mal

Diagrammpunkte des Kampfverlaufes mit den Punkten P1; P2 und P3Punkt 1 =(L1;A1)

L1= b·Lb-b·LaL1= 20·6-20·5= 20 klA1= (b·Lb-b·La)·Ab/((2-2·fb)·Lb)A1= (20·6-20·5)·1/((2-2·0,8)·6)= 8,33 ka

Punkt 2 =(L2;A2)L2= b·Lb+a·La-n·Lb·(2·fb-1)L2= 20·6+10·5-30·6·(2·0,8-1)= 62 klA2= b·Ab+( a·(La-Lb·(2·fb-1))·Aa)/((2-2·fa)·La)A2= 20·1+(10·(5-6·(2·0,8-1))·2,5)/((2-2·0,8)·5)= 37,5 ka

unpassend: Die Schriftart und –größe ist unterschiedlich

verständlich: Zahlen wurden in die Formel eingesetzt

hilfreich: Die Buchstaben werden erklärt

schön: Die Formel ist leicht lesbar

Tortur: ewiges klicken im Formeleditor führte dazu, dass die Zahlen in der nächten Zeile hintereinander weggeschrieben wurden

durchschnittlich: Um Zeit zu sparen wurde der Formeleditor wegglassen. Der Taschenrechner brauchte eine Menge Zeit zum Eintippen

Page 11: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

PowerWMFeinfügen3.0 Simon Pie Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 11

Punkt 3 =(L3;A3)L3= b·Lb+a·La-n·(2·fa-1)·LaL3= 20·6+10·5-30·(2·0,8-1)·5= 80 klA3= b·Ab+a·AaA3= 20·1+10·2,5= 45 ka

b*(Lb-La)

n*(La-Lrb)

n*(Lrb-Lra) n*Lra

A

L00

A1

A2A3

L1 L2 L3 gLa+gLb

P1

P2P3

Berechnung der optimalen Anzahl

b= (240·3,6·1+240·(5-3,6)·0,5·1·(1+(6-5)/2,4)+0,8·5·2,5·(240-2·240·7/10))/(2·3,6·1·(7-10) +2·7·0,8·5·2,5·(1-7/10)+(5-3,6)·1·(1+(6-5)/2,4)·(7-10)-(10·1·(6-5)²)/2,4)

b= 13,81 Corvettena= (W- Wb·b)/Wa= (240-7·13,81)/10= 14,33 Kreuzer

K= ∑ (fa ∙ La∙n ∙ gAa

n ∙(La−Lrb)∙ 0,5 ∙(gAb+ gAb ∙(Lb−La)Ldb )

Lbr ∙ n ∙ gAb+Ab ∙(Lb−La)2

Lbd ∙2)

K= 0,8·5·28,14·2,5·14,33+28,14·(5-3,6)·0,5·(1·13,81+(1·13,81·(6-5))/2,4)+3,6·28,14·1·13,81+(1·(6-5)²·13,81²)/(2,4·2)

K= 5858 Mal

störend: diese weißen Linien eines AutoCAD Bugs.

schön: scharfe Grafik mit echtem Text

furchtbar: Formel als Bitmap ist schwer lesbar oder braucht viel Speicher. Bei dem Screenshot hätte man wenigstens Cleartype ausstellen sollen!

unpassend: Linien sind in PDF viiiiiiel zu dünn

Tortur: der Zeitaufwand des Formeleditors führte dazu, dass er konsequent nicht benutzt wurde.

herkömmlich: Firmenlogo aus Pixeln mit hoher Auflösung, die in Word, PDF oder spätestens im Ausdruck verschwunden ist

Page 12: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

PowerWMFeinfügen3.0 Simon Pie Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 12

0 5 10 15 20 25 30 35 40550055505600565057005750580058505900

14

Eine optimierte Kampfkraft von 5858 Megaangriffsleben ist mit 13,81 Corvetten und 14,33 Kreuzer zu erreichen.

normal: ein gestochen scharfes Diagramm aus Excel. Aber: Extras können pixelhaft in Word oder PDF erscheinen

Page 13: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 13

professionelle DokumentationAufgabe: Eine Armee besteht aus 10 Kreuzer und 20 Corvetten. Ein Kreuzer einen Angriff von 2,5ka, hält 5kl aus und kostet 10 Führungspunkte. Eine Corvette hat 1ka, 6kl und benötigt 7 Führungspunkte. Beide Gruppen kämpfen 0,8 und der Spieler hat 240 Führungspunkte. Gesucht ist die Kampfkraft und der Kampfverlauf dieser Armee. Kann die Kampfkraft optimiert werden?

Eingabewerte und Nebenrechnungen  N W L f Lr Ld A gL gAa 10 10 5 0,8 3 2 2,5 50 25b 20 7 6 0,8 3,6 2,4 1 120 20Summe 30  240           170 45

Dabei sinda = Anzahl der Schiffe mit der geringeren Lebenb = Anzahl der Schiffe mit der höheren LebenLa= Leben eines der Schiffe mit der geringeren Leben Lb= Leben eines der Schiffe mit der höheren LebenAa; Ab= Angriff fa; fb= Kampfbeiwert Wa; Wb; W= Rohstoffverbrauchn= a+bgAa= a·Aa; gAb= b·Ab; gLa= a·La; gLb= b·LbLra= La·(2·fa-1); Lrb= Lb·(2·fb-1); Lda= La-Lra; Ldb= Lb-Ldb

Berechnung der KampfkraftLbr =6·(2·fb-1)= 6·(2·0,8-1)= 3,6 klLbr < La => lange MischformelK= = K= 3000+ 595+2160+ 83,33K= 5838,33Mal

Diagrammpunkte des Kampfverlaufes mit den Punkten P1; P2 und P3Punkt 1 =(L1;A1)

L1= b·Lb-b·LaL1= 20·6-20·5= 20 klA1= A1= = 8,33 ka

Punkt 2 =(L2;A2)L2= b·Lb+a·La-n·Lb·(2·fb-1)L2= 20·6+10·5-30·6·(2·0,8-1)= 62 klA2= A2= = 37,5 ka

Punkt 3 =(L3;A3)L3= b·Lb+a·La-n·(2·fa-1)·LaL3= 20·6+10·5-30·(2·0,8-1)·5= 80 klA3= b·Ab+a·AaA3= 20·1+10·2,5= 45 ka

passend: Die Schriftart und –größe ist nicht unterschiedlich

verständlich: Zahlen wurden in die Formel eingesetzt

hilfreich: Die Buchstaben werden erklärt

schön: Die Formel ist leicht lesbar

schön: der Dokumentationsstil wird konsequent durchgezogen

prachtvoll: gestochen scharfe Grafik für nur 1154 Byte; Selbst zu klein geratene Schrift bleibt lesbar

professionell: Firmenlogo als speichersparende Vektorgrafik ohne Pixel

Page 14: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 14

L

A

0 20 62 80 17008,33

37,545

P1=(L1;A1)

P2=(L2;A2)P3=(L3;A3)

b·(Lb-La) n·(Lrb-Lra)n·(La-Lrb) n·Lra20 42 18 90

Berechnung der optimalen Anzahlb = b= b= 13,81 Corvettena= = = 14,33 KreuzerK= =K= 5858 Mal

b

K(a;b) Optimum

0 14,3 20 34,35600

5760

58585838

5642

Eine optimierte Kampfkraft von 5858 Megaangriffsleben ist mit 13,81 Corvetten und 14,33 Kreuzer zu erreichen.

BeispielgrafikenHier wurden viele Grafiken aus dem Zusammenhang gerissen und nebeneinander angeordnet.Diese können pixelfrei mit 500% Zoom in Word, PDF und Druck betrachtet werden.Diese 50 Grafiken benötigen gezippt 250kB.

passend: Die Schriftart und –größe der Grafik ist wie im Dokument

schnell: Der Formel- umwandler rechnet Formeln aus

intelligent: Grafik mit allgemeinen und zum Dokument angepassten Größen

schnell: Die Formel wurde ohne Maus hintereinander weg eingetippt

Geschmackssache: Schrift im Bruch ist nicht kleiner

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eSt abil i t ät sskript Dr. -Ing. M. Rei ni nghaus

m = 1; n = 1

m = 2; n = 2 m = 3; n = 2

m = 2; n = 1

Knotenlinie

Knoten-

x,(m)

y,(n)

z,(w)

x,(m)

x,(m)

x,(m)

z,(w)

z,(w)

z,(w)

y,(n) y,(n)

linie

T2

T1

T3

T2

T1

T3

T2

T1

T3

1 2 3X1X2

X3

X4

X2

X3

X4

X2

X3X4

S im o n P ie - P o w erW M F ein fü g en 2 .3P latten b eu len ; K am p fk raftth eo rieS tab ilitätssk rip t D r.-In g . M . R ein in g h au s

Page 15: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 15

Seitenfüllende Grafiken mit 50% Größe (Strg + Mausrad)

T2

T1

T3

T2

T1

T3

T2

T1

T3

1 2 3X1X2

X3

X4

X2

X3

X4

X2

X3X4

P1 P2

P3 P4

P5 P6dreiheitlicher Kampfverlauf

gLa gLc gLegL

K(a)

K(c)

K(e)

gLe·gAc

gLe·gAagLc·gAa

L

A

gAa

gAc

gAe

gA

Si monPi e - PowerWMFeinfügen2. 3Pl at tenbeulen; Kampfkraf t t heor ieWMF-Balken

Zug

Druckfcd

0,71

37

45%

45%

10%

Si monPi e - PowerWMFei nfügen3. 0Pl at tenbeul en; Kampfkraft t heor i eTorsionsskr i pt Inst i tut St ahlbau -h/2

h/2 -b h/4

b h/4

-h/2h/2

b h/4-b h/4

h

-h

-b h/2

b h/2

h

-h

-b h/4

3 b h/4

b h/4

-b h/4

-b h/4

-b/2

b/2

. .

..

.

.

.

.

..

.

.

r

r

r

D =M D =M

D D

D D

-285

285

285-285

-570

570

-285

855

285

-285

-285

D =M

D

D

I = dA+.. . .dA

dA+.. . .dA+

I = dA+.. . .dA

I = dA+.. . .dA

dA+.. . .dA+

dA- K² A..+ .

t

t

t

1 1

2 2

3 3

1

2

3

-285

-285

285

285

-285

-285

285

285

150 150

150150

-570

-570

570

570

150 150

-285

-285

855

855

-285

-285

285

285

75 225

190190

-285

-285

300

0

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·dx

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

l

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

y1" =480·x³-816·x²+396·x-46y2" =80·x³-144·x²+78·x-12 y3" =0·x³+192·x²-192·x+32 y4" =320·x³-480·x²+192·x-16y5" =-480·x³+624·x²-204·x+14y6" =80·x³-96·x²+30·x-2

x1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

2

2

2

2

2

2

2

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

14

14

14

14

14

14

14

32

32

32

32

32

32

32

16

16

16

16

16

16

16

14

14

14

14

14

14

14

12

12

12

12

12

12

12

-2

-2

-2

-2

-2

-2

-2

y1"

-46 -12

-12

-12

-12

-12

-12

-12

-16

-16

-16

-16

-16

-16

-16

-16

-16

-16

-16

-16

-16

-16

-46

-46

-46

-46

-46

-46

-46

-46

-46

-46

-46

-46

-46

y1"

y1"

y1"

y1"

y1"

y1"

y2"

y2"

y2"

y2"

y2"

y2"

y2"

y3"

y3"

y3"

y3"

y3"

y3"

y3"

y4"

y4"

y4"

y4"

y4"

y4"

y4"

y5"

y5"

y5"

y5"

y5"

y5"

y5"

y6"

y6"

y6"

y6"

y6"

y6"

y6"

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 1 1 1 1 1

2 2 2 2 2 2 2

x x x x x x

x x x x x x

x x x x x x

x x x x x x

x x x x x x

x x x x x x

12 12 12 12 12 12 12

14 14 14 14 14 14 14

14 14 14 14 14 14 14

16 16 16 16 16 16 16

-2 -2 -2 -2 -2 -2 -2

32 32 32 32 32 32 32

y1"

-46

-12 -12 -12 -12 -12 -12 -12

-16 -16 -16 -16 -16 -16 -16

-16 -16 -16 -16 -16 -16 -16

-46 -46 -46 -46 -46 -46

-46 -46 -46 -46 -46 -46 -46

y1" y1" y1" y1" y1" y1"

y2" y2" y2" y2" y2" y2" y2"

y3" y3" y3" y3" y3" y3" y3"

y4" y4" y4" y4" y4" y4" y4"

y5" y5" y5" y5" y5" y5" y5"

y6" y6" y6" y6" y6" y6" y6"

Si m onPi e W M F- Ba l ke n CC- BY- SAW M F- Ba l ke n

1,00 0,5 6,5

8,00

3,00 0,5 4,5

7,00 1,00

6,00 1,5 0,5

3,00 2,00 1,00 2,00

4 4

3 3

2 2

3 3Lastzeile Eigengewicht

2,5 2,5Lastzeile Lastfall 1

2 2Lastzeile Lastfall 2 2 2

HEB 300

Zeile0

Zeile1

Zeile2

Zeile3

Zeile5

Zeile6

Zeile8

Zeile9

Zeile13

Zeile14

Zeile11Zeile12

Zeile10

Zeile7

Zeile4

1,00 0,5 1,5 0,5 2,5 1,5 0,5

3,00 2,00 1,00 1,00 1,00

1,00 3,00 3,00 1,00

1,00 0,5 1,5 0,5 0,5 1,00 1,00 1,00 0,5 0,5

Simo nPie - Po werWMFein füg en 3.0Plattenb eulen; Kamp fkraftth eo rieTo rsion sskript In stitut Stahlb au

De

De

De

De

De

De

De

DE

DE

De

DE

DE

DE

DeDeck

Deck

Deeh

ZIPFEL

Deeh

Weich

DECK

DEEH

DECK

DEEH

DEEH

DEEH

Weich

DEE

H

Dec

k

Dec

k

Dec

k

Deck

DECK

Dee

h

Zipf

el

DEEH

DECK

DECK

0

1

D

L

0 1 2 3 4 5

1T 2T 3T 4T 5T

1-4T

2-4T2-5T

2-6T

3-5T3-6T

3-7T

4-6T4-7T

4-8T

5-6T

1

23

4 56 7

Page 16: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 16

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eSt abil i t ät sskript Dr. -Ing. M. Rei ni nghaus

Wölbmoment

Verwölbungen

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eWMF-Balken

Element

Element

Element

Element

Element

q q

linkesLager

linkesLager

linkesLager

rechtesLager

kein mittleresLager

Knoten1 2

Si m onPi e W M F- Ba l ke n CC- BY- SAW M F- Ba l ke n

1,00 0,5 6,5

8,00

3,00 0,5 4,5

7,00 1,00

6,00 1,5 0,5

3,00 2,00 1,00 2,00

4 4

3 3

2 2

3 3Lastzeile Eigengewicht

2,5 2,5Lastzeile Lastfall 1

2 2Lastzeile Lastfall 2 2 2

HEB 300

Zeile0

Zeile1

Zeile2

Zeile3

Zeile5

Zeile6

Zeile8

Zeile9

Zeile13

Zeile14

Zeile11Zeile12

Zeile10

Zeile7

Zeile4

1,00 0,5 1,5 0,5 2,5 1,5 0,5

3,00 2,00 1,00 1,00 1,00

1,00 3,00 3,00 1,00

1,00 0,5 1,5 0,5 0,5 1,00 1,00 1,00 0,5 0,5

Simo nPie - Po werWMFein füg en 3.0Plattenb eulen; Kamp fkraftth eo rieTo rsion sskript In stitut Stahlb au

De

De

De

De

De

De

De

DE

DE

De

DE

DE

DE

DeDeck

Deck

Deeh

ZIPFEL

Deeh

Weich

DECK

DEEH

DECK

DEEH

DEEH

DEEH

Weich

DEE

H

Dec

k

Dec

k

Dec

k

Deck

DECK

Dee

h

Zipf

el

DEEH

DECK

DECK

erste Teilkampfkraft subtrahieren

weitere Teilkampfkräfte subtrahieren

bis Zekkadauria besiegt ist

P1 P2 P3 P4

tK1tK2tK3 tK4 ZekkadauriaDeckchins

- = -

- = -

- = -Rest L tL=10

tA=80

P(L1;A1)

P(L2;A2)

gL=300

gegL=210

K=36250 geK=34650 13750 22500 12150 22500

13750 22500 12150 22500 7500 28750 5900 28750

gA=150 gegA=

220

N=4

K=23

N=4

K=19

1/4

3/4 N=4

K=15,5

2/4

2/4

N=4

K=12,5

3/4

1/4N=4

K=10

N=3

K=13,5

N=3

K=10,5

1/3

2/3 N=3

K=8

1/3

2/3

N=2

K=6,5

N=3

K=6

N=2

K=4,51/2

1/2

N=2

K=3

N=1

K=2

N=1

K=1

L

A roter Pfad

0 1 2 3 4 5 6 7 801234

L

A blauer Pfad

0 1 2 3 4 5 6 7 801234

K= 21 K= 26

f=23/32

rot

64

64

0

0

0

0

255

255

128

0

0

0

grün

64

64

0

192

192

96

0

0

0

0

0

0

blau

64

64

0

0

0

0

0

0

0

255

255

128

LFpRPinsel(LF=0)

LFpRpPinsel(LF=0)

LFPfeilPinsel(LF=0)

LFpRPinsel(0)

LFpRpPinsel(0)

LFPfeilPinsel(0)

LFpRPinsel(1)

LFpRpPinsel(1)

LFPfeilPinsel(1)

LFpRPinsel(LF)

LFpRpPinsel(LF)

LFPfeilPinsel(LF)

224

128

64

192

128

0

255

255

255

192

128

0

224

128

64

255

255

192

192

128

0

192

128

0

224

128

64

192

128

0

192

128

0

255

255

255

LFpRFüller(LF=0)

LFpRpFüller(LF=0)

LFPfeilFüller(LF=0)

LFpRFüller(0)

LFpRpFüller(0)

LFPfeilFüller(0)

LFpRFüller(1)

LFpRpFüller(1)

LFPfeilFüller(1)

LFpRFüller(LF)

LFpRpFüller(LF)

LFPfeilFüller(LF)

Si monPi e - Power WMFeinfügen3. 0Pl at tenbeulen; Kampf kr aftt heori eTorsionsskri pt Inst it ut Stahlbau0,5 3m 0,5

W =7kN

G =2,4kN

242,5 15 242,5500

1,75

11

6m

2046

020

500k

k

Simo n Pie - Po werWMFein fü g en 3 .0Platten b eu len ; Kamp fk raftth eo rie

hL

x

y

b

x

y

Page 17: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 17

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eSt abi l i t ät sskr ipt Dr . - Ing. M. Rei ni nghaus

Drillknickfigur

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eSt abil i t ät sskript Dr. -Ing. M. Rei ni nghaus

Que

rrand

bb

bb

b b

bb

bb

b

Ges

amtb

reite

= T

eilfe

ldbr

eite

Que

rste

ifen

1312

1114

11 11

4342

4144

Längsrand

a a a a

GesamtfeldTeilfelderEinzelfelder

= Feld= Felder= Felder

a·ba ·ba ·b

a GesamtfeldlängeSeitenverhältnis a

LängsrandlängeQuerrandlänge

aba ==

Teilfeldi

Einzelfeldik

Längssteifen

1 2 3 4

ii ik

Si monPi e - PowerWMFei nfügen3. 0Pl at tenbeulen; Kampfkraft theori eTorsionsskri pt Inst i tut St ahlbau

S=M

zs

y

9901000

1010

A B

D C

1990

1010

2000

rot

64

64

0

0

0

0

255

255

128

0

0

0

grün

64

64

0

192

192

96

0

0

0

0

0

0

blau

64

64

0

0

0

0

0

0

0

255

255

128

LFpRPinsel(LF=0)

LFpRpPinsel(LF=0)

LFPfeilPinsel(LF=0)

LFpRPinsel(0)

LFpRpPinsel(0)

LFPfeilPinsel(0)

LFpRPinsel(1)

LFpRpPinsel(1)

LFPfeilPinsel(1)

LFpRPinsel(LF)

LFpRpPinsel(LF)

LFPfeilPinsel(LF)

224

128

64

192

128

0

255

255

255

192

128

0

224

128

64

255

255

192

192

128

0

192

128

0

224

128

64

192

128

0

192

128

0

255

255

255

LFpRFüller(LF=0)

LFpRpFüller(LF=0)

LFPfeilFüller(LF=0)

LFpRFüller(0)

LFpRpFüller(0)

LFPfeilFüller(0)

LFpRFüller(1)

LFpRpFüller(1)

LFPfeilFüller(1)

LFpRFüller(LF)

LFpRpFüller(LF)

LFPfeilFüller(LF)

Si monPi e - Power WMFeinfügen3. 0Pl at tenbeulen; Kampf kr aftt heori eTorsionsskri pt Inst it ut Stahlbau0,5 3m 0,5

W =7kN

G =2,4kN

242,5 15 242,5500

1,75

11

6m

2046

020

500k

k

Si monPi e - PowerWMFeinfügen3.0Pl at tenbeulen; Kampfkraftt heorieTorsionsskri pt Inst i t ut Stahl bau0,5 3m 0,5

W =7kN

G =2,4kN

242,5 15 242,5500

1,75

11

6m

2046

020

500k

k

L

A

0 275,2 8000

100

L

A

0 10000

80

L

A

0 8000

34

100

blauer Stamm roter Stamm Restkampfkraft

93,8326,8

76

P0

P1 P2

P3 P4P5 P6

P0

P1 P2

P3 P4P5 P6

+ + + + +tK1tK2 tK3 tK4 tK5 tK6 tK1 tK2 tK3 tK4 tK5 tK6

S imo n P ie - P o werW M F ein fü g en 3 . 0P latt en b eu len ; Kamp fk raftt h eo rie

Le

22

H

D

Z

Si monPi e - PowerWMFei nfügen3. 0Pl at tenbeulen; Kampfkraft theori e

bb

bb

L L LL

1 2 3

12

3

Page 18: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 18

1,051

0,950,9

0,850,8

0,750,7

0,650,6

0,550,5

0,450,4

0,350,3

0,250,2

0,150,1

0,050

D

L

U

Überschaden

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

A Held

L

A N=2

LA N=10

L

A N=25

L

f = 1 f = 0,75

f = 0,55 f = 0,52

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eWMF-Balken

Ellipse

Rechteck

Polylinie

Polygon

Text

Bogen

Pie

Chord

rundesRechteck

Füller

Pinsel

Font

Typ Inhalt

1048

1051

805

804

1313

2071

2074

2096

1564

762

764

763

A%" "/§

fgh Blubb4r5rtWS

qwertzu43

Aoj

s

Aoj

s

A

SimonPi e - PowerWMFeinfügen3. 0Plat tenbeulen; Kampfkr aft theori e

a

K(a)

0 4 8 12 16 20 24 28 32 36 407000

8500

10541

7680

Mischoptimierungfa= 0,8 La=6 Aa=1fb= 0,85 Lb=10 Ab=10Wa=0,5 Wb=2 W=20

L

A nur Blocker

0 30 1000

100

b=10;a=0K= 8500

L

A

0 273667,2 1140

9094

b= 9; a= 4K= 9294,6

L

A

0 2432 70,4 1280

8088

b= 8; a= 8K= 9894,4

L

A

0 2128 73,6 1420

7082

b= 7; a= 12K= 10299,4 L

A Optimum

016,522 78,4 1630

5573

b= 5,5; a= 18K= 10541,65

L

A Halbe-Halbe

01520 80 1700

5070

b= 5; a= 20K= 10525

L

A

0 912 86,4 19803058 b= 3; a= 28

K= 9971,4

L

A

0 68 89,6 21202052

K= 9402,4 b= 2; a= 32

L

A

03 4 92,8 22601046

K= 8638,6 b= 1; a= 36

L

A nur kAnonenfutter

0 96 2400

40K= 7680 b=0; a=40

S imo n P ie - P o werWM F ein fü g en 3 .0P latten b eu len ; Kamp fk raftth eo rieKrafteck

ha

Page 19: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 19

50% Größe

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eWMF-Balken

Ellipse

Rechteck

Polylinie

Polygon

Text

Bogen

Pie

Chord

rundesRechteck

Füller

Pinsel

Font

Typ Inhalt

1048

1051

805

804

1313

2071

2074

2096

1564

762

764

763

A%" "/§

fgh Blubb4r5rtWS

qwertzu43

Aoj

s

Aoj

s

A

SimonPi e - PowerWMFeinfügen3. 0Plat tenbeulen; Kampfkr aft theori e

Si m onPi e W M F- Bal ken CC- BY- SAW M F- Ba l ke n

2 2 2 2 2 2

IPE 100 Text

SimonPie - PowerWMFeinfügen3. 0Plat tenbeulen; Kampfkraft t heori eTorsionsskript Inst i t ut St ahlbau

x

M (x)M /2

-M /2

Anteil M

Anteil M

M

M /2 M /2

u u

x

M (x)M /2

-M /2

Anteil M

Anteil Mx

M (x)

Verwölbungbehindert

Verwölbungbehindert

entgegengesetzte Verwölbung=> behinderte Verwölbung

T

T

T

T

T T

1 2

T

T

T

T

TP

TS

TP

TS

L1 L3 L5 L7 L9 L11

L1 L2 L4 L5 L7 L8 L10 L11

L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11

6 Maßketten307Doppelbyte4 Bimaßketten314Doppelbyte1 Polymaßkette327Doppelbyte

allgemeines Schlachtfeld

zweiheitlicher Kampf

gemischter Kampf

einheitlicher Kampf

3.Reihe 2.Reihe 1.Reihe

2.Reihe 1.Reihe

GegnerFrontGruppe e

Gruppe c(gemischt)

Gruppe a

GegnerFrontGruppe e

Gruppe a

GegnerFrontGruppe

Gruppe

Gruppe

GegnerFront

0 0 0

0 0 0

0 0 0

0 0 0

20 20

20 20

25 25 25

25

25 25 25

25

40 40

40 40

50 50 50

50

50 50 50

50

300

385315

393

350

533417393

300

512

352393

350

533417385

350

512468385

450

512472

533

350385

543

393350

533483393

350

512502393

350

533462385

200

512

224385

400

512445

533

K(a) Bogen => Schild

K(a) Bogen => Schild

K(a) Bogen => Schurke K(a) Bogen => Samurai

K(a) Schild => Schurke K(a) Schild => Samurai

K(a) Bogen => Schurke K(a) Bogen => Samurai

K(a) Schild => Schurke K(a) Schild => Samurai

K(a) Schurke => Samurai

K(a) Schurke => Samurai

Mischkampf Mischkampf Mischkampf

Mischkampf Mischkampf Mischkampf

zweiheitlich zweiheitlich zweiheitlich

zweiheitlich zweiheitlich zweiheitlich

N

L

1

2X2·X2=1/4

1

1,1 2,2

S2 S2

0,1 1,2

K=3Ku=3,3

N

L

1

2X2·X1=1/4

2

1,9 3

1 S2

0,9 2

K=3Ku=4,1

S1

N

L

1

2X2·X1/2=1/8

3

1,1 3

S2 1

0,1 2

K=3Ku=4,9

S1N

L

1

2X2·X1/26

=1/8

1 3

1 S2

K=3,9Ku=5

S1

2,1

N

L

1

2X1²/2=1/8

5

1 3,8

1 1

1,9

K=3,9Ku=6,6

S1 S1

2,9

N

L

1

2X1²/2=1/8

4

1,9 3,8

1 1

0,9 1,9

K=3Ku=5,7

S1 S1

Page 20: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 20

Si monPi e - PowerWMFei nfügen3. 0Pl at tenbeulen; Kampfkraft theori eTorsionsskri pt Insti tut St ahlbau

dr

t

max

b

r

S imo n P i e - P o werW M F ei n fü g en 2 .2P latt en b eu len ; Kamp fk raft th eo ri eGemalt mi t Au to cad , k o mp rimi ert mit P o werW M F, so rti ert u n d co l iriert mi t W M F zerl eg er

Fall 1 Fall 2 Fall 3

kurze Mischformel lange Mischformel dritte Mischformel

Lrb>La Lrb<La & Lrb>Lra Lrb<La & Lrb<Lra

Lb

LrbLdb

Gruppe B

Ab

Lb

LrbLdb

Gruppe B

Ab

Lb

LrbLdb

Gruppe B

Ab

La

LraLda

Gruppe A Aa

La

LraLda

Gruppe A Aa

La

LraLda

Gruppe A Aa

SimonPie - PowerWM Feinfügen3.0Pla ttenbeulen; Kampfkrafttheorie

F F

F F

H H

HH

Joch Joch

JochJoch

a

a

a ab

b

Joch

II

Joch

II

Joch

II

Joch

II

H

H

H H

Page 21: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 21

L

A

gLa+gLb

gAb

L

A

gLa+gLb

gAa

ggLad= Lad·n ggLar= Lar·nggLa= La·n

ggLbd= L1+L2+L3 ggLbr= Lrb·nggLb= gLa+gLb

L1 L2 L3

A1A2P1

P3P2

A

B

Si monPi e - PowerWMFeinfügen2. 3Pl at tenbeulen; Kampfkraft theori eWMF-BalkenP40W36

S50 RUXVS500

S18H20

S150

Si monPi e - PowerWMFei nfügen3. 0Pl at tenbeulen; Kampfkraft theori eTorsionsskri pt Insti tut St ahlbau

dr

t

max

b

r

Schuss 1

Schuss 2

1+D

1

L

L+D-1

1-D1-D 1 1+D

X31 X32

X1

X2

L

2

S imo n P ie - Po werWM Fein fü g en 2 .3P latten b eu len ; Kamp fk raftth eo rie

ba o

o

o

kein knickstab-

knickstabähnlichesVerhalten

ähnliches Verhalten

x

x

x

Free Software

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori eWMF-Balken Breite

x1 x2y1

y3

y4

y2

D x3 x4 D

Breite

x1 x2x3 x4

D

D=DickeR=RadiusRi=Innenradius

RR

i

tfR

Höh

e

SimonPie - PowerWMFeinfügen3.0Plattenbeulen; Kampfkrafttheorie

E

NN

N N

E

N = E·mN= E²+N²

Knotenschnitt 1

Knotenschnitt 2

VN

VN

N

NVV

N

N = C = NV + V

m

HEB

HEB

HEB

kk

A

A

k

A

A

m Ak A

Si monPi e - Power WMFei nfügen3. 0Pl at t enbeul en; Kampf kr af t t heori e

F

L

d

k

L

d

SimonPie - PowerWM Feinfügen3.0Pla ttenbeulen; Kampfkrafttheorie

F F

F F

H H

HH

Joch Joch

JochJoch

a

a

a ab

b

Joch

II

Joch

II

Joch

II

Joch

II

H

H

H H

Page 22: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 22

L

A

gLa+gLb

gAb

L

A

gLa+gLb

gAa

ggLad= Lad·n ggLar= Lar·nggLa= La·n

ggLbd= L1+L2+L3 ggLbr= Lrb·nggLb= gLa+gLb

L1 L2 L3

A1A2P1

P3P2

A

B

S imo n P ie - P o werW M F ein fü g en 2 . 3P latt en b eu len ; Kamp fk raft th eo ri eS tab il it ät ssk rip t Dr. -In g . M . Rein in g h au s

-1,4[-]

-1 -0,6 -0,2 0 0,2 0,6 1 1,4

0,2

0,8

1

1,2

1,4

1,6

Theorie2.Ordnung

Theorie3.Ordnung

=0,02

mit Imperfektion

ohne Imperfektion

Theorie2.Ordnungohne Imperfektion

Theorie3.Ordnungmit Imperfektion

Ausmitte

S imo n P ie - Po werWM Fein fü g en 3 .0P latten b eu len ; Kamp fk raftth eo rie

Kno

tens

chni

tteH zu

s.H

N

zus.H zu

s.HH

zus.H

N

zus.H

NK

rafte

cke

zus.H

Joch

I Joch

II

Träg

er

Joch

III

Joch

IJo

ch I

Joch

IITräg

er

Joch

IIITr

äger

Joch

I

SimonPie - PowerWMFeinfügen3.0Plattenbeulen; Kampfkrafttheorie

E

NN

N N

E

N = E·mN= E²+N²

Knotenschnitt 1

Knotenschnitt 2

VN

VN

N

NVV

N

N = C = NV + V

m

HEB

HEB

HEB

kk

A

A

k

A

A

m Ak A

Page 23: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 23

Problemlösungen bei hässlicher GrafikDieses Kapitel zeigt, wie man PowerWMF richtig benutzt, um schöne Grafiken zu erhalten, anstatt 5 mal hintereinander frustriert zu sein. Folgende Grafik soll in Word eingefügt werden:

So sieht eine Grafik direkt aus dem AutoCAD aus. Der schwarze Rahmen wurde mit Word hinzugefügt, damit man auch den zugehörigen weißen Bereich sieht. Schlecht ist hier schon mal, dass der Ausschnitt nicht maximal groß gezoomt wurde, gut hingegen ist, dass die Grafik nach oben links geschoben wurde. Außerdem ist die Anzeige der Linienstärken deaktiviert, sodass es keine Probleme mit den Linien geben wird.

Die Texte sind zensiertS im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

Ein Text, der in AutoCAD abdeckend ist, hat die Farbe des Hintergrundes. Hinter jedem Text sind also 2 hintergrundfarbige Dreiecke (Polygone). PowerWMF ist so eingestellt, dass es schwarze Flächen in weiß umwandelt, die meisten anderen Farben bleiben so wie sie sind. Deshalb muss der Hintergrund in AutoCAD auf schwarz umgestellt werden.

Page 24: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 24

Dazu klickt man auf Anzeige und dann auf Farben.

Page 25: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 25

Die dunkelgraue Farbe des Modellbereiches muss in reines Schwarz (0,0,0) geändert werden. Die hellgelbe Farbe des Layoutbereiches muss in reines Weis (255, 255, 255) oder schwarz geändert werden. Ist die Anzeige richtig eingestellt, wird der Texthintergrund in Word weiß. PowerWMF wandelt eine dunkelgraue Farbe (33,40,48) selbstständig in weiß im.

In der Grafik liegen lauter kleine Kreise rum und die Punkte der Axen fehlenS im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

AutoCAD legt mit jeder Maßkette 3 Pixel in die WMF. Bei jeder Strichpunktlinie hinterlässt AutoCAD ebenfalls für jeden Punkt einen Pixel. Die Pixel der Strichpunktlinien sind so klein, sodass man sie kaum sehen kann. PowerWMF wandelt diese Pixel in kleine Kreise um, um das Aussehen der Axen wiederherzustellen. Leider werden auch die Pixel der Maßketten in Kreise verwandelt, sodass man in Word sieht, welche Punkte vermaßt wurden. Das Problem wurde folgendermaßen gelöst:rote Pixel = Löschen (gelb bei Modifikation i)andere Pixel = schwarze KreisleinSollen die Kreise der Axen in Word erscheinen, dann müssen die Axen eine andere Farbe als rot haben. Sollen die Kreise der Maßketten verschwinden, dann muss die Farbe des Maßobjektes auf rot (oder vonlayer bei roten Layer) liegen. Die Farbe des Maßtextes und der Maßlinien ist weiterhin frei wählbar.

Sollen eine andere Farbe als Rot für das Löschen entscheiden, so sind die 3 RGB-Werte in diesem Programmteil zu ändern:'Pixel in Kreislein verwandelnIf ModI = 1 Then Farbe2 = Chr(255) & Chr(255) & Chr(0) Else Farbe2 = Chr(255) & Chr(0) & Chr(0)End If

Die Texte sehen hässlich ausSo sieht die Grafik mit richtig eingestellter Anzeige und richtigen Farben aus:

Page 26: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 26

S im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

Die Ursache ist, dass keine Truetype-Schriftart verwendet wurde, wie z.B. Simplex. Die Texte sind Polylinien und die Datei ist mit 3164 Byte auch ziemlich groß.Für eine gute Grafik wird Truetype benötigt z.B. Arial Narrow.

Die Grafik sieht immer noch hässlich aus Es wurde die Schriftart Arial Narrow verwendet:

S im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

Die Texte sehen entweder hässlich aus oder sind ganz verschwunden. Die Datei ist mit 6838 Byte riesengroß. Die Ursache ist, dass AutoCAD die Texte zu Polygone zersplittert hat. Rein schwarze Polygone werden vom Makro in weiße Polygone umgewandelt und reine Farben wie rot, grün oder magenta in schwarz.Damit AutoCAD den Text als Text exportiert, müssen für jeden Text diese Bedingungen eingehalten sein!

Breitenfaktor ist 1 Die DWG wurde bisher noch nie 3D betrachtet Der Text ist nicht zu nah am Rand linksoben Die Z-Koordinate des Textes ist exakt 0

AutoCAD stellt Zahlen oft mit einer „Genauigkeit“ dar. Statt 1,418E-15 sieht man in den Eigenschaften bei der Z-Koordinate eine 0. 1,418E-15 ist aber nicht 0 und AutoCAD zerreißt den Text in Stücke. Wähle alle Texte (über Schnellauswahl) aus und ändere die 0 in eine 0.

Page 27: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 27

Es fehlen ObjekteS im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

176 214 132 156

Es fehlen Objekte182

161

160

AutoCAD exportiert weiße Objekte manchmal als weiße Objekte und nicht als schwarze Objekte. PowerWMF ändert die Farbe von weißen Objekten nicht. Sollte das Problem auftreten, dann müssen die weißen Objekte eine andere Farbe erhalten.

Die Grafik wird nicht in ein korrektes PDFormat umgewandeltS im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

1   7   6 2   1   4 1   3   2 1   5   6

D   e   r       T   e   x   t       w   i   r   d       f   a   l   s   c   h       g   e   d   r   u   c   k   t

1   8   2

1   6   1

1   6   0

In Word sieht diese Grafik vollkommen in Ordnung aus - dieses Bild ist nachgestellt. Dieses Problem liegt größtenteils nicht an PowerWMF, sondern daran, dass ein schlechter PDF-Drucker verwendet wird. Der PDF-Ersteller von Word kann seine eigenen Metafiles nicht richtig lesen. Dabei werden runde Linienenden eckig gedruckt und mit einer Wahrscheinlichkeit von 5% werden die Texte heimtückisch lang gezogen. Der AdobePDF-Drucker erstellt zwar das Dokument korrekt, aber Word sendet ab 2010 zerrechnete Bitmaps an den Drucker. Mit Word 2007 für Windows XP funxionierte das PDFerstellen problemlos. Ab Word 2010 habe ich die Qual der Wahl zwischen anständige Bitmaps mit dem PDF-Ersteller oder anständige Vektorgrafiken mit den AdobePDFdrucker. Wer also Vektorgrafiken in seinem Dokument verwendet, sollte einen vektorfähigen Drucker verwenden!

Page 28: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 28

Die Grafik hat falsche LinienstärkenS im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

176 214 132 156

falsche Linienstärken182

161

160

Jedes Büro plottet mit seiner eigenen CTB. Daher müssen im Makro die Strichstärken entsprechend angepasst werden. PowerWMF nutzt die Friedrich.ctbFolgende Strichstärken sind vordefiniert.

Farbe geänderte Farbe Strichstärkeweiß weiß 2 mittelgelb schwarz 1 dünnmagenta schwarz 1 +1*I dünn (mittel)rot schwarz 1 dünncyan schwarz 2 mittelgrün schwarz 1,5 dünnblau schwarz 3 dickschwarz schwarz 2 +2*I mittel (Fett)dunkel (18;18;18) weiß 3 dicksonstige sonstige 2 mittel

Der Wert I ist bei Modifikation I =1, sonst 0. Man kann also 2 CTBs definieren. Nutzt man die alternative CTB, so werden die Differenzen hinzuaddiert. Die alternative CTB benutzt man, indem man vor dem Start des Makros ein i eintippt.Bei Modifikation R werden alle nulldicken Füller mitteldick, aber die Farben werden nicht geändert.

Dieser Teil des Makros beinhaltet die Strichstärken und die Zahlen werden hier angepasst:'StrichstärkenCTBIf ModR = 0 ThenFor a = 3 To Georekorde If Geoeigenschaften(a, 0) <> 261 And Geoeigenschaften(a, 1) <> 5 And Geoeigenschaften(a, 2) = 0 Then AktFarbe = Chr(Geoeigenschaften(a, 3)) & Chr(Geoeigenschaften(a, 4)) & Chr(Geoeigenschaften(a, 5)) Select Case AktFarbe Case Chr(255) & Chr(255) & Chr(255) 'weiß Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 0 * ModI) 'keine Farbänderung Case Chr(255) & Chr(255) & Chr(0) 'gelb Geoeigenschaften(a, 2) = (1 + Verdicken) * (1 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(255) & Chr(0) & Chr(255) 'magenta Geoeigenschaften(a, 2) = (1 + Verdicken) * (1 + 1 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(255) & Chr(0) & Chr(0) 'rot Geoeigenschaften(a, 2) = (1 + Verdicken) * (1 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(0) & Chr(255) & Chr(255) 'cyan Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0

Page 29: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 29

Case Chr(0) & Chr(255) & Chr(0) 'grün Geoeigenschaften(a, 2) = (1 + Verdicken) * (1.5 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(0) & Chr(0) & Chr(255) 'blau Geoeigenschaften(a, 2) = (1 + Verdicken) * (3 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(0) & Chr(0) & Chr(0) 'schwarz Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 2 * ModI) 'keine Farbänderung Case Chr(18) & Chr(18) & Chr(18) 'Layerabdecken Geoeigenschaften(a, 2) = (1 + Verdicken) * (3 + 0 * ModI) Geoeigenschaften(a, 3) = 255 Geoeigenschaften(a, 4) = 255 Geoeigenschaften(a, 5) = 255 Case Else Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 0 * ModI) 'keine Farbänderung End Select End IfNext

Die Formel für die Strichstärke lautet:Füllerdicke= (1+Verdicken) * (a + b * ModI)

Dabei sind:a= relative Strichstärke (1= dünn; 2= mittel; 3= dick; 5= fett)b= Differenz der Strichstärke für die alternative CTBModI= 1 für alternative CTB, sonst 0Füllerdicke= Dicke der Linie in der WMF

Verdicken schätzt wie dick die Linien sein müssen, damit die Linien in der WMF weder zu dünn noch zu dick sind. Die Schätzung ist sehr gut, wenn Text in der WMF ist, sonst kann sie um das doppelte daneben liegen.

Als Nutzer passt man die Variablen a und b an.

Die Grafik sieht nach dem Drehen ekelhaft aus

WMF kann man in Word weder drehen noch einaxig skalieren. Beim Drehen wird die Grafik in eine Bitmap verwandelt!!! Die Anzahl der Pixel ist von den Werten in der WMF abhängig. Gehen die Werte bis 2000, dann sind es große Pixel und bei 20000 sind es kleine Pixel. Beim Skalieren in eine Richtung bleibt die Grafik weiterhin vektorisiert, aber der Text wird vergrößert und nicht skaliert. Kleine Pixel können eine PDF extrem aufblähen.

Sim

on

Pie - P

ow

erWM

Fein

füg

en2

.2P

lattenb

eulen

; Kam

pfk

rafttheo

rieW

MF

zerleger; w

ww

.Wo

T-W

MF.d

e

176214

132156

Es fehlen Texte

182 161 160

Page 30: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 30

Lösung: In AutoCAD drehen. In AutoCAD 2013 können neuerdings auch Ansichtsfenster in 90° Schritten gedreht werden, ohne dass der Text in Polygone zerfällt.

Achtecke werden zu KreiseAutoCAD speichert Kreise und andere runde Objekte als Polygone. Aus einem Kreis wird ein Achteck oder Zwanzigeck. Nach dem Regenerieren hat der Kreis besonders viele Ecken. Einem Achteck sieht man nicht an, ob es vorher mal ein Kreis war. Da Kreise wesentlich öfter auftreten als Achtecke, wandelt das Makro alle Achtecke in Kreise um.Sollten doch mal Achtecke nicht umgewandelt werden, dann sind in der Funxion Polyglätten die Anzahl der Punkte zu erhöhen:

If Punkte > 7 Then

Statt 7 Punkte trägt man 11 ein.

Darstellungsprobleme

Dieser Text wächst oder schrumpft beim Zoomen

Darstellung als Polygone

Link im PDF: www.WoT-WMF.de

Rechtecke liegen nicht auf einer LinieKeine Sorge, das ist nur ein Darstellungsproblem von Word. Der untere und rechte Rand von Reckecken wird 1 Pixel kürzer dargestellt. Wird das Rechteck mit einer Polylinie fortgesetzt, dann sieht es so aus, als ob es da einen Sprung oder eine fette Linie gibt. Beim PDF-Druck erscheint dieser Darstellungsfehler nicht mehr.Die Grafik ist beim Ranzoomen PixelhaftDies ist ein Darstellungsproblem von Word 2013. Drin ist aber immer noch Vektor und beim Drucken sieht es schön aus. Aber: Eine gedrehte Grafik wird wirklich zur Bitmap.

Texte verändern ihre LängeWeitere Darstellungsmängel treten bei langen Texten auf. Beim Zoomen werden diese kürzer oder länger, wie man es von Excel kennt. Man sieht also nicht, wie lang der Text später im portablen Dokumentformat aussieht. Im PDF können also 2 Buchstaben abgeschnitten, obwohl man in Word alles lesen konnte. Hat man in AutoCAD ein Text, der weit in den rechten Rand ragt, dann sollte man vor dem Start ein p eintippen und j vermeiden.

Diagonalen ohne Glättung

Page 31: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 31

Diagonale schwarze Linien bestehen nur aus schwarzen Pixeln. Graue Pixel werden nicht dazwischen interpoliert. Im Adobereader kann die Darstellung von Geraden eingestellt werden. Sollten in Word doch mal graue Pixel auftreten, dann wurde die Grafik irgendwann mal in eine Bitmap umgewandelt.

Texte decken willkürlich abIst der Wert Textabdecken auf 0 oder nicht definiert, dann decken die Texte in Word nicht ab, aber in Excel decken sie ab (kopiere diese Grafik nach Excel). Bei Irfanview, Paint und anderen Betrachtern herrscht hier auch Uneinigkeit. Bei AutoCAD-WMF ist Textabdecken = 1 und Texte decken nicht ab. Textabdecken = 2 deckt Texte ab.

Dokument mit Links zuballernEinige PDF-Drucker verwandeln jeden Text in einen Link, der wie einer aussieht. In der dritten Zeile des WMF-Stempels kann auch ein Linktext eingetragen werden. Der Link ist oben rechts genauso weiß wie der normale Text, aber man kann ihn in der PDF anklicken. Wer meint, er müsse jede Grafik in seiner Statik mit seiner Firmenwebseite verlinken…

S im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieWM F zerleg er; w w w .W o T -WM F.d e

176 214 132 156

Alles in Ordnung

182

161

160

Die Grafik sieht schön aus und wiegt nur 1324 Byte.

ExtrawünscheEs können bis zu 2 Buchstaben vor dem Start des Makros eingetippt werden. Diese haben folgenden Effekt:r wendet keine CTB an. Nulldicke Füller werden einheitlich dick, aber ändern ihre Farbe nicht.i verwendet eine andere Stifttabelle.j komprimiert die WMF verlustbehaftet. Abdeckungen können fehlerhaft sein.p schneidet die Zeichnung nicht zu.d oder h, um die Strichstärken zu verdoppeln oder halbieren.

Bei Unzufriedenheit mit den Linienstärken kann die Grafik mit d oder h erneut eingefügt werden, um die Linienstärken um 2/3 zu verändern. P vergrößert den Ausschnitt um 10%.

Ist der Cursor rechts von dem Buchstaben, so wird der automatisch während der Ausführung des Makros gestartet. Soll das Makro mit 2 Buchstaben gestartet werden, so müssen diese vorher (mit der Maus) markiert sein.

Also: Man gibt dpein und markiert diese Buchstaben mit der Maus.

Page 32: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 32

(Oder mit der Tastatur markieren:Nach einem Text: Shift halten und 2x Pfeil nach links.Oder bei Zeilenanfang (dieses Beispiel): 2x Pfeil nach links. Shift halten und 2x Pfeil nach rechts. Shift halten und Pfeil nach links.)

Zusammenfassung Heißt die Grafik a.wmf und liegt im Ordner des Worddokumentes, dann wird sie automatisch

gefunden, sonst muss eine Datei ausgewählt werden. Objekte möglichst groß zoomen Anzeige für Linienstärken deaktivieren Der Hintergrund in AutoCAD muss Schwarz, 33-40-48 oder weiß sein CTB einmalig anpassen Maßkettenpunkte müssen rot sein und Achsenpunkte müssen nicht rot sein Truetype-Schriften verwenden Für Texte beachten:

Breitenfaktor ist 1Die DWG wurde bisher noch nie 3D betrachtetDer Text ist oben links nicht zu nah am RandDie Z-Koordinate des Textes ist exakt 0 (also nicht 1,737E-14)

weiße Problemobjekte umfärben WMF in Word nicht drehen

Page 33: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 33

Wirkungsweise des MakrosDieses Kapitel enthält tiefe Informationen über PowerWMF und dessen Datenkompressions-algorithmus.Der Datenkompressionsalgorithmus setzt sich aus einer geometrischen und einer strukturellen Datenkompression zusammen. Die strukturelle Datenkompression umfasst Datei einlesen, sortieren und Datei neu zusammen bauen. Die geometrische Datenkompression besteht aus 2 Anteile: der eine bearbeitet Polygone selbst und der andere die Interaktion von 2 Polygonen.

strukturelle DatenkompressionDie strukturelle Datenkompression ordnet die Beschreibung der Geometrieobjekte neu an und besteht aus folgende Teilaufgaben

WMF auflösen WMF-Malobjekttabelle neu erstellen verlustbehaftete Datenkompression (optional) Texte sortieren Textabdecken ans Ende stellen WMF neu zusammensetzen

Die strukturelle Datenkompression ist sehr kraftvoll, denn sie reduziert den Speicherbedarf um 50 bis 80%. Die Entropie hingegen sind leider nur kaum. Hier greift die geometrische Datenkompression, die die verbleibende Dateigröße nochmal um 10% bis 50% senkt.

Beispiel: eine 40kB Grafik ist gezippt 10kB großOrginal geometrische Datenkompression

Orginal 40kB.wmf (10kB.zip) 35kB.wmf (8kB.zip)strukturelle Datenkompression 20kB.wmf (9kB.zip) 15kB.wmf (7kB.zip)

geometrische DatenkompressionDie geometrische Datenkompression besteht aus 2 Gruppen. Die eine Gruppe befasst sich mit der Interaktion zwischen 2 Polylinien und die andere Gruppe bearbeitet Polylinien selbst.

Die Interaktionsgruppe besteht aus: doppelte Linien löschen Schraffuren verbinden berührende Schraffuren verbinden überlappende Linien einen berührende Linien verbinden unsichtbare umrandete Farbpolygone und farbige Hohlpolygone verschmelzen

Die Polygongruppe besteht auso Rechtecke erkenneno Ellipsen erkenneno runde Rechtecke erkenneno Ellipsenbögen erkenneno gradlinige Punkte Löscheno dreieckige Vierecke

Die Polygongruppe wird von der Funxion Polyglätten erledigt.

Page 34: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 34

Vorbereitung: WMF-Datei erstellenDer Modellbereich muss schwarz eingestellt sein und nicht dunkelgrau oder hellgelb. Damit die WMF auch Text hat, müssen für den Text diese Bedingungen erfüllt sein:“Text mit Truetypeschriftart; Breitenfaktor ist 1; Die DWG wurde bisher noch nie 3D betrachtet; Der Text ist nicht zu nah am Rand; Die Z-Koordinate des Textes ist 0“. Ist die erste Bedingung nicht erfüllt, so sind in der WMF Linien, die den Text beschreiben. Ist eine der anderen Bedingungen nicht erfüllt, so enthält die WMF eckige Polygonbruchstücke, die die Datei sehr aufblähen. Außerdem ist es wichtig, dass die Linienstärken nicht angezeigt werden. Wird eine WMF erstellt, bei denen die Linienstärken im Modell angezeigt werden, enthält die WMF sehr schmale Polygone mit irgendwelcher Dicke, die nicht gewünscht ist.Markiere die zu exportierenden Objekte und exportiere sie als WMF.

Datei findenDas Makro findet die Datei im Ordner des Worddokumentes, wenn diese a.wmf heißt.Ansonsten öffnet sich der Explorer zum Datei suchen.Modifikationsmöglichkeiten:In Word entscheidet das linke Zeichen darüber, ob die WMF abweichend bearbeitet werden soll. Alternativ können auch 2 Zeichen markiert werden, um 2 Modifikationen zu erreichen. Es gibt folgende Modifikationen.

Nichts ist Standard und wandelt alle Hauptfarben in Schwarz um. r wendet keine CTB an. p schneidet die Zeichnung nicht zu. z schreibt die Berechnungszeit auf. i verwendet eine andere Stifttabelle j komprimiert die WMF verlustbehaftet d und h, um die Strichstärken zu verdoppeln oder halbieren v transmutiert unsichtbar umrandete Polygone in Pinsel

Ab PowerWMF2.3 können bei bereits umgewandelten WMF die Modifikationen d, h und p nachgeholt werden, anstatt dass man die WMF erneut mit AutoCAD erstellen muss. Modifikation d und h ändern die Strichstärke um 2/3. P vergrößert den Ausschnitt um 10%.

WMF auflösen und in Tabelle schreibenGemäß der Dateispezifikation wird der gesamte Inhalt der Datei in eine Tabelle eingelesen. Die Datei wird überflüssig und es wird nur noch an der Tabelle gearbeitet.Es gibt 2 Tabellen. Die eine ist für Texte und die andere für andere (geometrische) Objekte. Die Texttabelle besteht aus den Variablen Textrekord()$, Textfont()$ und Texteigenschaften(;10)%. Die anderen Objekte werden in Georekord()$ mit den Geoeigenschaften(;14)% aufgelistet.

In der Tabelle Geoeigenschaften wird folgendes aufgelistet:0. Typ1. Füllerstil2. Dicke3. Füllerrot4. Füllergrün5. Füllerblau6. Pinselstil

Page 35: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 35

7. Pinselrot8. Pinselgrün9. Pinselblau

Hilfsvariablen für den Bedarf. Der Inhalt wandelt10. erster PunktX, kleinster PunktX, Füllernummer11. erster PunktY, kleinster PunktY, Pinselnummer12. letzter PunktX, größter PunktX13. letzter PunktY, größter PunktY14. hier war ein Text

In der Tabelle Texteigenschaften wird folgendes aufgelistet:0. Typ1. Rot2. Grün3. Blau4. Textausrichtung5. Textabdecken6. Abdeckrot7. Abdeckgrün8. Abdeckblau9. Zusätzlicher Abstand zwischen den Buchstaben

Hilfsvariablen für den Bedarf. Der Inhalt wandelt10. erster PunktX, kleinster PunktX, Füllernummer

PowerWMF legt Schwerpunkt auf geometrische Objekte. Bitmapobjekte werden nicht gesondert behandelt und nur als Beiwerk mitgeschleppt. Damit gehen möglicherweise Informationen über Bitmaps verloren.

Zuschnitt bestimmenPowerWMF wertet alle Objekte aus und sucht darin nach den größten und kleinsten Koordinaten

Liniendicke ermittelnMit den maximalen Koordinaten wird die Zeichnung zugeschnitten und der Zoom ermittelt (Modifikation p unterdrückt diese Option). Der Zoom richtet sich nach der häufigsten Schriftgröße in der Grafik und welche Schriftart am Cursor in Word ist. Hat die Grafik keinen Text, dann wird gemeckert und die WMFschriftgröße nach dieser Formel berechnet:WMFschriftgröße = 1 + FensterX * WordSchriftgröße / ((Log(Dateilenge) - 5) * 60)Darin geht die maximale X-Koordinate ein und die Dateigröße. Bei kleinen Dateien ist der Text verhältnismäßig zum Fenster sehr groß.Mit der Schriftgröße wird der Zoom berechnet. Dadurch ist der Text in der Grafik genauso groß wie in Word.Anhand des Zooms wird die relative Liniendicke „Verdicken“ berechnet.

Objekte nach obenlinks schiebenWurde die Zeichnung nicht nach oben links geschoben, dann war dort 5 Jahre lang eine breite weiße Fläche. PowerWMF3 hingegen macht das, was der Nutzer früher machte. Alle Objekte

Page 36: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 36

werden nach oben links geschoben, sodass alle Objekte in der Nähe des Koordinatenursprungs sind. Es entsteht ein perfekter Zuschnitt rund um die Grafik.

Linienfarben umwandelnSchwarze Linien ohne Makro aus AutoCAD haben die Linienstärke 0 und werden nur von Word mit einer Strichstärke gedruckt. Von PDF aus sind sie unendlich dünn. Zeigt man sich bei AutoCAD die Linienstärken an, so wird jede Linie in speicherlastige Doppeldreiecke umgewandelt. Deshalb sollen Linienstärken auf dem Bildschirm ausbleiben. Das Makro wandelt die Farben wie in einer CTB in native Strichstärken um. Der Speicherbedarf steigt für jede umgewandelte Linienstärke um 0 Byte. Die Füller im WMF haben sowohl eine Farbe, als auch eine Stärke.

Die Farben haben folgende relativen Strichstärken und Farben umgewandelt:Farbe geänderte Farbe Strichstärkeweiß weiß 2gelb schwarz 1magenta schwarz 1 +1·Irot schwarz 1 (3)cyan schwarz 2grün schwarz 1,5blau schwarz 3schwarz schwarz 2 +2·Idunkel (18;18;18) weiß 3sonstige sonstige 2

I=1 für Modifikation IModifikation R unterdrückt diese Option

Füllfarben umwandelnFarbige Texte und Flächenfüllungen werden geschwärzt. Schwarze Flächen werden weiß, weil der Hintergrund in AutoCAD schwarz ist und das Papier jedoch weiß ist. Ohne diese Umwandlung hat man in der WMF schwarze Texte auf schwarzem Textabdecken. Das Makro wandelt beim wiederholten Einfügen die Farben nicht erneut um, sondern erkennt an dem Schlüsselwort „SimonPie“, dass die Datei bereits umgewandelt wurde. Die Datei wird unverändert bzw. mit Modifikation d, h oder p eingefügt.

Pixel umwandelnJede Maßkette hinterlässt 3 Pixel in der WMF. Sind diese rot (gelb bei Modifikation I), so werden sie entfernt. Jede Strichpunktlinie hinterlässt auch Pixel. Diese werden in Kreislein verwandelt. Bei jedem Pixel, der in einen Kreis umgewandelt wurde, ändert sich die Dateigröße um 0 Byte und die Entropie steigt. Bei jedem gelöschtem Pixel werden 14 Byte eingespart und die Entropie reduziert.

Müllhaufen wegkehrenJeder Text wurde von einem gigantischen 250 Byte schweren Müllhaufen zugeschüttet. Dieser besteht aus Füller kreieren, wählen, wegwerfen, alten Füller kreieren, wählen, Pinsel kreieren, wählen, wegwerfen, alten Pinsel kreieren, wählen, Texthintergrundoption = abdeckend, Texthintergrundoption = farblos, Textfarbe = schwarz, Textfarbe = Nutztext, Font definieren,

Page 37: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 37

benutzen, wegwerfen… Dieser Müllberg wird in mehreren Teilschritten weggekehrt. Diese sind:

MText sprengen Füller und Pinsel aussortieren Font recyceln Textfarbe wiederverwerten Texthintergrundoption wiederverwerten nutzlose Objekte um den Text löschen

Während die Müllabfuhr in PowerWMF2.3 sehr aufwendig programmiert war, ist bei PowerWMF3.0 nur noch das MText sprengen übrig geblieben. Der Müll verschwindet durch die strukturelle Datenkompression von selbst.Mtexte werden in Texte umgewandelt, wenn diese nicht den Rand berühren. Beim MText benötigt jedes Zeichen zusätzlich ein Doppelbyte. Dieses Doppelbyte sorgt dafür, dass der MText bei jeder Zoomstufe die gleiche Länge hat. Eine Überschrift, kann daher in Word noch reinpassen, während sie im Druck abgeschnitten wird. Bei kurzen Texten sind die Doppelbytes nicht notwendig.Die Datei und Entropie nehmen ab.

umschließendes RechteckUm Schraffuren zu verbinden, ist es gut, wenn in die Eigenschaften das umschließende Rechteck gespeichert ist. Auf dieses wird zugegriffen und überprüft, ob die beiden Polygone überhaupt interagieren können. Z.B. ein Dreieckchen unten und ein Viereck oben haben keine gemeinsamen Punkte. Das umschließende Rechteck spart Rechenzeit, da PowerWMF bei zerbrochenen Texten mehrere Minuten brauchen würde.

Schraffuren verbindenAutoCAD zerschießt alle Schraffuren zu Dreiecke. Diese wurden in PowerWMF2.3 nur zu Vierecke verbunden, um das Problem zu halbieren. Jedes Dreieck belegt 20 Byte und ein Viereck benötigt 24 Byte. Damit ergibt sich eine Ersparnis von 16 Byte, die die Entropie kaum reduziert. Textabdecken von Maßketten hinterlässt 2 Doppeldreiecke. Bilden 2 Dreiecke ein Rechteck, so tauscht das Polyglätten diese gegen ein Rechteck aus. Ein Rechteck benötigt nur 14 Byte und die Einsparung liegt bei 26 Byte. Die Entropie sinkt geringfügig. Der neue Algorithmus von PowerWMF3 macht bei Vierecke weiter. Im besten Fall kann eine zersplitterte Schraffur wieder zusammengeflickt werden und mit seiner Umrandung verschmelzen.

berührende Polygone zu überschlagene Polygone verbindenWährend bei Schraffuren verbinden beide Polygone 2 Punkte gemeinsam haben, haben berührende Polygone nur einen Punkt gemeinsam. Es werden die Nachbarpunkte mit einem Kreuz verbunden. Liegt das Kreuz auf dem gemeinsamen Punkt, dann wird dieser gelöscht und beide Polygone zu einem überschlagenen Polygon geeint. Z.B. wenn sich 2 Pfeilspitzendreiecke berühren wird daraus ein überschlagenes Viereck. Die Entropie sinkt spürbar.

Endpunkte speichernWie beim umschließenden Rechteck dient dies dazu, den Rechner zu beschleunigen. Würde

Page 38: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 38

das Einfügen 3 Sekunden dauern, dann ist dies schon eine unerträgliche Geduldsprobe, die zu gefährlichen Panikklicks führt.

Linien mit der Farbe 80;102;101 in Pfeile verwandelnPolylinien mit der Farbe 77;97;223 in schriftlose Polymaßketten verwandelnunsichtbar umrandete Polygone in Pinsel transmutieren

Damit ich meine Pfeile und Maßketten des WMFzerlegers auch in PowerWMF nutzen kann, müssen diese eine ganz spezielle Farbe haben. Die Pfeile und Maßketten des WMFzerlegers sind extrem speichersparend und die Pfeilgröße passt zur Textgröße. Die Modifikation v ist recht kompliziert. Da werden unsichtbar umrandete Polygone in Pinsel verwandelt. Der Pinsel malt dann alle folgenden Polygone aus. AutoCAD hat den Nachteil, dass es Schraffuren in unsichtbar umrandte Dreiecke zersplittert. Ein Kreis, der rot gefüllt sein soll, wird in der WMF nie ankommen. Deshalb habe ich diese Option eingebaut, damit auch nativ gefüllte Polygone direkt von AutoCAD in Word (ohne den WMFzerleger) möglich sind. Um ein Polygon nativ zu füllen, zeichnet man in AutoCAD eine dreieckige Schraffur und dann die Objete, die damit gefüllt werden soll. In der Zeichenreihenfolge muss die Schraffur, die zum Pinsel wird, unter den Polygonen liegen. Texte stören dazwischen und können den Pinsel vernichten.

doppelte Linien entfernenEs werden alle doppelten Polylinien und Polygone gesucht und gelöscht. Für jede gelöschte Linie werden 16 Byte Luft abgelassen. Doppelte Linien werden nur gelöscht, wenn der Füller der unteren Linie nicht dicker ist. Da dieser Teil so furchtbar langsam ist, werden die Linien in 2 Gruppen eingeteilt: mitteldicke Linien und andere Linien. Weiterhin wird zwischen Linien mit 2 Punkte und mehr Punkte unterschieden. Die Endpunkte werden auch zur Beschleunigung genutzt. Die Variable Geduld ist auf 200 gesetzt, das heißt, dass die beiden Polylinien maximal 200 Objekte auseinander liegen. Als Entropie wird hier der Speicherbedarf der gezippten WMF bezeichnet.Als Luft ablassen wird ein Ergebnis bezeichnet, das dem Deflate-Algorithmus gleich kommt und nur die Dateigröße reduziert, ohne dass sie im gezippten Zustand nennenswert kleiner wird. Word speichert WMF gezippt. Entropiereduxion ist daher besser als nur Luft ablassen.

überlappende Linien verbindenÜberlappende Polylinien, die mit dem gleichen Füller gezeichnet sind und 2 Punkte haben, werden durch eine ersetzt. Da der Algorithmus so langsam ist, wird erstmals ermittelt, welche Linien in Frage kommen. Dann werden alle horizontalen und vertikalen Linien überprüft. Jede gelöschte Linie erleichtert die Datei um 16 Byte. Handelte es sich um eine doppelte Linie, so wird nur Luft abgelassen. Hatten die überlappenden Linien jedoch unterschiedliche Endpunkte, so sinkt auch die Entropie.

Linien zu Polylinien verbindenIn einer WMF gibt es nur Polylinien. Eine Linie besteht aus 2 Punkten. Jeder Punkt in der Polylinie benötigt 4 Byte. Haben 2 Polylinien einen gemeinsamen Endpunkt und den gleichen Füller, so werden sie geeint. Jede Vereinigung lässt 12 Byte Luft ab. Dieser Algorithmus muss nach den überlappenden Linien folgen, weil der Algorithmus der überlappenden Linien nur 2Punkt Polylinien bearbeitet.

Page 39: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 39

viereckige Dreiecke behebenAutoCAD erzeugt Polygone, bei denen der Anfangs und Endpunkt gleich sind. Das Problem liegt nicht nur an AutoCAD, sondern auch am Nutzer, der diese Polygone falsch gezeichnet hat. Zum Schließen des Polygons klickt man nicht auf den Endpunkt, sondern man muss ein Befehl zum Schließen verwenden! Ein Dreieck dadurch also 4 Ecken. Dieser Endpunkt ist überflüssig und wird gelöscht und 4 Byte eingespart. Wenn eine Polylinie gleiche Endpunkte hat, dann wird diese in ein durchsichtiges Polygon verwandelt und ein Endpunkt gelöscht.

unsichtbar umrandete Farbpolygone mit durchsichtige Polygone verschmelzenEin gefülltes Rechteck wird von AutoCAD schwer beschädigt. Das Rechteck zerfällt in ein durchsichtiges Polygon, das nur seine Umrandung hat, und in 2 Dreiecke, die nur die Füllung haben. Schraffuren verbinden macht aus den Dreiecken wieder ein Polygon. Sind die beiden Polygone identisch, dann werden sie wieder zu einem verschmolzen, das eine Füllung und eine Umrandung hat. Die Datei wird um ein Polygon kleiner.

Kreise wiederherstellenAutoCAD zerschießt Kreise (und Ellipsen) zu Polygone. Das Makro prüft seit seiner ersten Version alle Polygone, ob diese eigentlich Kreise sind und rekonstruiert diese. Der Speicherbedarf und die Entropie sinken stark. Dieser Vorgang ist verlustbehaftet, da auch alle tatsächlichen Achtecke zu Kreise werden.

Überflüssige Punkte auf Polylinien entfernenUnter bestimmten Bedingungen kommt es vor, dass die Punkte einer Polylinie auf einer Geraden liegen. Für die Darstellung einer Geraden sind nur ein Anfangspunkt und ein Endpunkt erforderlich. Alle Punkte dazwischen können gelöscht werden. Ist verlustbehaftete Modifikation aktiviert, dann ist für das Löschen ein doppelter Abstand erlaubt. Das Punkte löschen ist für schräge Polylinien grundsätzlich eine verlustbehaftete Sache. Durch die Vernichtung von Daten werden Dateigröße und vor allen die Entropie gesenkt.

Polyglätten für andere ObjekteAb der Version 2.2 wird unter der Funxion Polyglätten das Punkte Löschen mit dem Kreise Wiederherstellen gesammelt. Damit ist das Umwandeln von Polylinien in andere Objekte vom Hauptprogramm ausgelagert. Polyglätten erkennt neben Ellipsen auch abgerundete Rechtecke, Bögen und Chords. Polyglätten wird in einem eigenen Kapitel genauer beschrieben. Polyglätten komprimiert die Datei sehr kraftvoll und senkt die Entropie stark.

Textabdecken mitnehmenLagen in der Datei Text und ein weißes Abdecken nebeneinander, dann werden die Abdeckungen gesammelt und ans Ende vor den Texten gestellt. Da die weißen Abdeckungen demselben Füller haben, wird dieser nur einmal gewählt und damit viel Luft abgelassen.

Preader aktualisieren und Setwindow setzenHier wird der Zoom und das Zuschneiden durchgeführt. Außerdem wird die Signatur eingefügt und meine 3 großen Werke: PowerWMFeinfügen3.0; Plattenbeulen; Kampfkrafttheorie

Page 40: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 40

gewürdigt. Das Programm darf unter der General public Lizenz frei benutzt, kopiert, verändert oder erweitert werden.

In der AutoCAD-WMF erscheint deshalb oben links dieser winzig weiße Text in 3 Zeilen:SimonPie - PowerWMFeinfügen3.0Plattenbeulen; Kampfkrafttheorietrage zwischen die Anführungsstriche deinen Namen einDie dritte Zeile ist dem Schöpfer der Grafik gewidmet und der Text darf in dem Quellcode geändert werden - die anderen beiden Zeilen bitte nicht ändern. Die Texte dürfen gelöscht oder verändert werden, wenn die WMF mit einem anderen Programm nachbearbeitet wird oder für einen höheren Zweck wie z.B. Firmenlogos verwendet wird.

WMF-Malobjekttabelle neu erstellenAutoCAD nimmt einen Füller, malt damit und wirft ihn weg. Das gleiche passiert mit Pinseln und Fonts. In der WMF können diese auch beiseitegelegt werden. Deshalb werden alle Füller, Pinsel und Fonts in der Datei eingesammelt und am Anfang der Datei in einer Federtasche, Tuschkasten und Fontmappe geordnet. Jeder Füller benötigt 16 Byte, jeder Pinsel 14 Byte und jeder Font 56 Byte. Löschen benötigt auch nochmal 8 Byte. Durch das Ordnen wird gewaltig Luft abgelassen.

verlustbehaftete DatenkompressionIst die Modifikation j gewählt, werden alle Objekte nach ihren Füllern sortiert. Somit wird jeder Füller nur einmal in der Hand genommen. Es fallen sehr viele Objektwahlen weg. Jede Objektwahl benötigt 8 Byte. Es wird spürbar viel Luft abgelassen, jedoch auf Kosten der Zeichenreihenfolge. Das was hinten war, kann jetzt vorne sein. Verlustbehaftete Datenkompression ist verlustfrei, wenn alle Objekte schwarz sind und erreicht eine Extrakompression von 10%.Verlustbehaftete Datenkompression erkennt außerdem mehr Ellipsen und löscht mehr Punkte auf einer Geraden.

Texte sortierenDie Texte werden nach ihrem Font sortiert, sodass jeder Font nur einmal angewählt werden muss. Der Algorithmus entspricht der verlustbehafteten Datenkompression, aber da Texte sich nicht gegenseitig verdecken, entsteht keine äußerliche Änderung. Dies spart Dateigröße und ein bisschen Entropie.

Texte ans Ende stellenZwischendurch wurden die Lücken in den Listen wegsortiert. Da ein Text mit seiner Farbe und seinem abdeckenden Rechteck nie selbst verdeckt wird, werden diese an das Ende der Datei gestellt. Das Rechteck wird mit einem unsichtbaren Füller gezeichnet. Dadurch, dass dieses mit an das Ende kommt, werden 2 Füllerwechsel von 2*8 Byte und etwas Entropie eingespart. Gibt es sehr viele Texte in der Datei, bei denen das Abdecken fehlt, so kann manuell mit dem Hexeditor das native Textabdecken am Anfang der Datei eingeschaltet werden. Natives Textabdecken benötigt einmal zusätzlich 0 Byte, während jedes Rechteck von AutoCAD 14 Byte benötigt.

Page 41: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 41

Datei neu aufbauenDie WMF wird neu zusammengebaut und der Header korrekt berechnet. Die Datei wird überschrieben und in Word eingefügt.

Versionsunterschiede WoT-WMF: verwandelt Farben in Strichstärken und erkennt Kreise, verbindet Schraffuren,

löscht doppelte Linien und bearbeitet Pixel. Ein primitiver Suchen und Ersetzen Algorithmus. PowerWMF2.0: strukturelle Datenkompression PowerWMF2.1: Grafik an Polylinien zuschneiden; Modifikationsmöglichkeiten; bessere

Liniendicken PowerWMF2.2: Polylinien glätten und Rechtecke erkennen; verlustbehaftete Kompression PowerWMF2.3: Polyglätten mit Ellipsenbögenerkennung; Zuschneiden an Mtexten;

Liniendicke an Schriftgröße festlegen; pdh nachholen PowerWMF3.0 unterscheidet grundlegend zu PowerWMF2.

Während WoT-WMF ein primitiver Suchen und Ersetzenalgorithmus ist, versteht PowerWMF3 den Dateiinhalt. PowerWMF2 ist so ein Zwischending. Durch die vielen Features ist PowerWMF2 an die Grenzen des Machbaren gelangt. Der Code wurde zu einem evolutionär gewaxenen Chaos. Je mehr drin war, desto komplizierter wurde es. Hässlichkeiten traten auf z.B. dass sich in der Variable Pinsel ein Linienstück befindet. Oder an Stelle 0x01fc wurde die Palette erwartet. Da ich viele WMF-Dateien auch per Hand geschrieben habe, konnte ich das Programm WMF-Balken schreiben. Im Gegensatz zum WMF-Balken und WMFzerleger sah der Code von PowerWMF2 total mittelalter aus. Deshalb habe ich PowerWMF3 ohne Polyglätten noch mal völlig neu programmiert. Der Code hat eine klare Struktur, über die ich vor dem Programmieren viel grübelte, was wirklich wichtig ist. Es wird wie im WMFzerleger konsequent an einer Tabelle gearbeitet. In der Tabelle sind die wichtigsten Eigenschaften der Objekte sofort verfügbar. Dadurch wurde möglich, was mit Suchen und Ersetzen einfach nicht ging:

Zuschneiden an allen Objekten keine ungenutzten Füller, Pinsel und Texte in der Datei der Farbbug für unterschiedliche Textgrößen und Farben Grafik rundum zuschneiden besser Schraffuren verbinden unsichtbar und durchsichtig einen Linien in Pfeile und Maßketten verwandeln effizientes Codeschreiben durch mehr Ordnung effizientes Testen, da Objekte nach Belieben umgefärbt werden können effizientes Erweitern für ein zukünftigen Programmfortschritt geringere Abhängigkeit von AutoCAD => höhere Stabilität bei anderen WMFerzeugern

Furchtbar entwürdigend ist, dass ich PowerWMF3 in nur 35 Stunden geschrieben habe. Von einem so großartigen Programm erwartet man einfach mehr als ein Monat Arbeit. Ich vermute, dass die immens hohe Programmiergeschwindigkeit aus meinen großen WMFerfahrung stammt. Zum Anfang waren viel Lesen, Studieren, Probieren und Keineahnungfehler sehr hinderlich.

Einige fragen sich jetzt:Braucht PowerWMF eigentlich AutoCAD?

Page 42: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 42

Theoretisch kann die WMF-Datei auch mit jedem anderen Programm gezeugt werden und mit PowerWMF in Word eingefügt werden. PowerWMF habe ich allerdings für WMF aus AutoCAD entworfen. Es gibt WMF-Inhalte, die AutoCAD nie benutzt, und PowerWMF behandelt diese standardmäßig. Für WMF aus anderen Programmen habe ich PowerWMF kaum getestet. Bei Inkscape und Flash lief PowerWMF problemlos. Inkscape verschluckte eine Form und bei Flash mussten die Texte horizontal sein. Excel und Corel crashten. Bei Excel wirbelt PowerWMF die Bitmap-Befehle durcheinander. Bei Corel ist der Ursprung nicht bei [0;0].Von daher: keine Garantie, dass PowerWMF bei anderen Programmen funxioniert.

Beispiel der KompressionsleistungBeispielhaft wird an einer Datei gezeigt, welche Kompressionsleistung welcher Programmteil bringt. Da dies während der Entwicklung von PowerWMFeinfügen2 aufgezeichnet wurde, ist die Reihenfolge ungeordnet.

Schritt

Datei-größe

En-tropie

Dichte Verhältnis Differenzen  

Orginal3759

0 10121 0,269 1 1Dateigröße Entropie Dichte

WMF Zerlegen2005

6 9392 0,468 0,534 0,928 17534 729 0,042

Schraffuren verbinden1922

4 9229 0,48 0,511 0,912 832 163 0,196

CTB anwenden1902

0 9172 0,482 0,506 0,906 204 57 0,279

Pixel bearbeiten1794

0 8939 0,498 0,477 0,883 1080 233 0,216

weißeTextvierecke1757

2 8895 0,506 0,467 0,879 368 44 0,12

Mtexte sprengen1696

4 8666 0,511 0,451 0,856 608 229 0,377

doppelte Linien löschen1622

4 8556 0,527 0,432 0,845 740 110 0,149

Linien verbinden1598

0 8534 0,534 0,425 0,843 244 22 0,09

überlappende Linien1585

2 8484 0,535 0,422 0,838 128 50 0,391

viereckige Dreiecke1568

8 8414 0,536 0,417 0,831 164 70 0,427

Rechtecke erkennen1530

0 8206 0,536 0,407 0,811 388 208 0,536

Ellipsen erkennen1478

6 7711 0,522 0,393 0,762 514 495 0,963

runde Rechtecke erkennen1468

8 7620 0,519 0,391 0,753 98 91 0,929

Kreisbögen erkennen1452

0 7455 0,513 0,386 0,737 168 165 0,982

Ellipsenbögen erkennen1431

2 7255 0,507 0,381 0,717 208*) 200 0,962

lineare Punkte löschen1424

0 7187 0,505 0,379 0,71 72 68 0,944unsichtbare Polygone 1396 7132 0,511 0,371 0,705 280 55 0,196

Page 43: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 43

0

berührende Schraffuren1375

2 7048 0,513 0,366 0,696 208 84 0,404

Texte sortieren1365

6 7025 0,514 0,363 0,694 96 23 0,24

verlustbehaftet sortieren1277

6 6931 0,543 0,34 0,685 880 94 0,10724814 3190 0,129

*) Die Testdatei enthielt keine Ellipsenbögen und runde Rechtecke. Daher habe ich so viele Bögen hinzugefügt, wie ich für den Durchschnitt erwarten würde. In meinem Beruf gab es wirklich sehr wenig Bögen, aber bei der Überarbeitung zweier Skripte kamen 180 Bögen vor, von denen 81 Bögen in einer Datei geeint waren. Wie stark welcher Teil komprimiert hängt vom Kontext ab, der darüber entscheidet, welche Inhalte in den Dateien besonders oft vorkommen. Z.B. die Dokumentation der Funxion Polyglätten hat weiiit überdurchschnittlich viele Bögen, runde Rechtecke und Ellipsen in den Grafiken, sodass hier Polyglätten den größten Teil der Kompression ausmacht.

FormelnDichte = Verhältnis = ;

Page 44: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 44

In dieser Tabelle wird an einem anderen Beispiel gezeigt, wie groß die Datei im Vergleich zu anderen Dateiformaten ist.

Vergleich der AutoCADinhalte in Word2007 eingefügtDateiformat Aussehen Dateigrößeals JPG furchtbar hässlich: JPG-Artefakte an scharfen Kanten.

Verschwommen und Pixelhaft. JPG wurde für Fotos entworfen und nicht für wenig farbige Bilder.

riesig (200 000kB)

als BMP(z.B. Screenshot)

grob Pixelhaftmehr Pixel bedeuten mehr DateigrößeRänder sollten nicht in Word zugeschnitten werden.

mittel (40 000kB)wird in Word als PNG gespeichert.

als PNG Pixelhaft - beim Ranzoomen sieht man nur noch Pixel mittel (30 000kB)als PNG44-Bit Farbtiefe

Pixelhaft16 Farben (erzeugen erfordert Fachwissen)

klein (15 000kB)

als Monochrom PNG

Pixelhaftschwarzweiß (erzeugen erfordert Fachwissen)

klein (10 000kB)

als Tiff mit CCITT Komprimierung

Pixelhaftschwarzweiß (erzeugen erfordert Fachwissen)

klein (8000kB)klein (7000kB) gezippt

als AutoCAD WMFexport

hässlich: Farben, wo keine sein sollen. keine Strichstärken - hässlicher Druck aus PDF. Eckige Ellipsen, Strichpunktlinien ohne Punkte. Lästige Punkte vom Maßketten.schön: Linien sind Pixelfrei, Text ist wirklich Text

mittel (20 000kB)winzig (5000kB) gezippt in WordDatei ist randvoll mit Müll

als AutoCAD WMFexport+Strichstärken

hässlich: Die Strichstärken sind lauter schmale Dreiecke und haben nicht die Dicke, die sie laut CTB haben sollen

groß (80 000kB)mittel (30 000kB) gezipptDatei ist randvoll mit Dreiecken

als AutoCAD WMFexport mit Makro

schön: Linien sind Pixelfrei, Text ist wirklich Text, Kreise sind rund, Rechtecke sind rechteckig, Linien sind schwarz und haben eine Dicke, Man sieht beim Zoomen keine Pixel

klein (7000kB)winzig (4000kB) gezippt

Page 45: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 45

Mathematische Hintergründe der Funxion PolyglättenPolyglätten macht einen großen Teil der geometrischen Datenkompression aus. In Polyglätten wird eine Polylinie (Typ 805) oder ein Polygon (Typ 804) eingegeben und es kommt vielleicht ein anderer Typ bei raus. Dabei wird das Objekt zuerst überprüft, ob es einer Ellipse ähnelt. Dann wird auf ein rundes Rechteck überprüft, dann auf einem Kreisbogen und zum Schluss auf einem elliptischen Bogen. Wenn das Objekt keinem dieser geometrischen Objekte ähnelt, dann werden auf dem Objekt Punkte gelöscht.

Si m onPi e - Powe r W M Fei nf ügen2. 2Pl at t e nbeu l e n; Kam pf kr a f t t heor i eBi l d 1Polylinie

805

Bogen

2071

Polygon

804

Chord

2096

Polygon

804

Ellipse

1048

Polygon

804

rundes Rechteck

1564

Polylinie

805

Polylinie mit weniger Punkte

Polylinie

805

unveränderte Polylinie

Polylinie

805

805

Eine Polylinie mit sehr vielen Punkten benötigt hohen Speicherbedarf mit sehr großer Entropie. Wird diese durch ein rundes Objekt ersetzt, dann werden Speicherbedarf und Entropie drastisch reduziert. Diese Tabelle zeigt, wie viel wo eingespart wird.Polylinie Wiederhergestelltes ObjektPolygon mit gleichen Endpunkten ein Punkt kommt weg (-4Byte)Viereck (24 Byte) Rechteck (14 Byte)Achteck (40Byte) (In AutoCAD weit raus zoomen und Ansicht regenerieren)

Ellipse (14Byte)

Zwölfeck (56Byte) Ellipse (14Byte)Vor dem Exportieren regeneriert (viel 136Byte) Ellipse (14Byte)unregeneriertes Zwölfeck (56 Byte) rundes Rechteck (18Byte)eckiger Kreisbogen (40Byte) elliptischer Bogen (22Byte)eckiger Kreisbogen (36Byte) eckiger Kreisbogen (36Byte) (Objekt muss

mindestens 8 Punkte haben)Sechseck (32Byte) Sechseck (32Byte)regenerierter Kreisbogen (viel) elliptischer Bogen (22Byte)elliptischer Bogen als Polylinie (sehr viel) Die Anzahl der Punkte ist weitestgehend vom Regenerieren unabhängig

elliptischer Bogen (22Byte)

elliptisches Polygon (sehr viel) Ellipse (14Byte)Man steht also nicht mehr vor dem Dilemma, ob man vor dem Exportieren noch regenerieren soll. Regenerieren bedeutet mehr Genauigkeit mit mehr Speicherbedarf. Polyglätten sorgt für maximale Genauigkeit mit minimalem Speicherbedarf.

Die Punkte minX, maxX, minY und maxY definieren die minimalen und maximalen Koordinaten der Polylinie.Den Extremwerten ist die zugehörige Gegenkoordinate des Punktes zugeordnet (minXzu, maxXzu, minYzu und maxYzu). MinXzu ist also die Y-Koordinate des Punktes des kleinsten X-Wertes.

Page 46: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 46

S im o n P ie - P o w erWM F ein fü g en 2 .2P latten b eu len ; K am p fk raftth eo rieB ild 2

min

X

max

X

(minYzu;minY)

(maxX;maxXzu)

(maxYzu;maxY)

(minX;minXzu)

X

Y

minY

maxY

Weiterhin werden die Punkte Pa(Pax;Pay) und Pe(Pex;Pey) definiert. Pa und Pe sind benachbarte Punkte. Z.B. der dritte und der vierte Punkt. Oder der erste und der letzte Punkt. Es sind also so viele Paare denkbar, wie die Polylinie Punkte hat. Das Paar mit dem größten Abstand heißt Pa und Pe. Meistens ist Pa der Anfangspunkt und Pe der Endpunkt.Der erste Punkte hat die Koordinaten (X(1);Y(1)) und der letzte (X(Punkte);Y(Punkte)).

Si m onPi e - Power WMFei nf ügen2. 3Pl at t enbeul en; Kam pf kr af t t heor i eBi l d 3

max max

PA=P1

PE=PPunkte P1=(X(1);Y(1))

PPunkte=(X(Punkte);Y(Punkte))

PA=(Pax;Pay)

PE=(Pex;Pey)maxY

minY

minX maxX

Um runde Objekte zu erkennen muss die Polylinie mehr als 7 Punkte haben. Ist dies der Fall, dann werden 2 If-Bedingungen nacheinander durchgelaufen. Die erste Bedingung beinhaltet die Ellipsen und runden Rechtecke. Für runde Rechtecke und Ellipsen muss dieses erstmals erfüllt sein:

maxX ≠ minX: Ellipsen müssen eine Länge haben. maxY ≠ minY: Ellipsen müssen eine Breite haben. Kein Punkt der Ellipse ist in der Ecke

des umschließenden Rechtecks Typ = 804: Polylinien kommen für Ellipsen

und runde Rechtecke nicht in FrageS im o n P ie - P o w erW M F ein fü g en 2 .3P latten b eu len ; K am p fk raftth eo rie

minY

maxY

minX maxX

(maxX;maxXzu)(minYzu;minY)

(minX;minXzu)(maxYzu;maxY)

Ecke

S im o n P ie - P o w erWM F ein fü g en 2 .3P latten b eu len ; K am p fk raftth eo rie

805

805

804

804

805

805

1564

1048

PAPE

PAPE

PAPE

PAPE

Page 47: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 47

Um Ellipsen von Sterne zu unterscheiden muss der maximale Abstand der Punkte untereinander kleiner sein als das 0,35 Fache der Diagonale des umschließenden Rechtecks. Die 0,35 ist erfahrungsgemäß so gewählt. Wählt man z.B. 0,25, dann werden einige Ellipsen nicht erkannt. Bei 0,45 werden Objekte als Ellipsen erkannt, die möglicherweise gar keine Ellipsen sein sollen.

Si m onPi e - Powe r W M Fei nf ügen2. 3Pl at t e nbeul e n; Kam pf kr a f t t heor i e

minY

maxY

minX maxX

PEPA

PAPE

Ellipse Ellipsekeine

max Abstand

max Abstand

Abstand12

Abstand12

Ob es sich bei dem Objekt um eine Ellipse handelt, wird durch die Ellipsenprüfung festgelegt. Bei der Ellipsenprüfung wird für jeden Punkt geprüft, ob der auf der Ellipse liegt, die durch das umschließende Rechteck definiert ist.Ist elliptisch = 0, dann liegt der Punkte genau auf der Ellipse. Elliptisch=1 bedeutet, dass der Punkt ein Ellipsenradius zu weit entfernt liegt. Da in der WMF Zahlen durch ganze Zahlen beschrieben werden, ist es nahezu unmöglich (3²+4²=5² oder 5²+12²=13²), dass alle Punkte exakt auf der Ellipse liegen. Deshalb muss ein Objekt bereits als Ellipse gelten, wenn die Punkte durchschnittlich bis zu 0,05 Ellipsenradien entfernt sind.

elliptisch = elliptisch=0 elliptisch=0,0198 elliptisch=0,0509 elliptisch=0,0572

elliptisch=0,0544 elliptisch=0,1386 elliptisch=0,2156 elliptisch=0,3998

elliptisch²=0 elliptisch²=0,0242 elliptisch²=0,0551 elliptisch²=0,0683

elliptisch²=0,0649 elliptisch²=0,157 elliptisch²=0,2493 elliptisch²=0,4674

X und Y sind die Koordinaten des Einheitskreises. Jeder Punkt des Polygons wird auf eine Einheitskreiskoordinate transformiert.Leider werden mit diesem Kriterium alle Abstände gleich stark gewichtet. Eine Sprechblase ist eine Ellipse, bei der ein Punkt aus der Reihe tanzt. Hat die Sprechblase genügend Punkte, so wird der Fehler kompensiert und die Sprechblase wird fälschlicherweise als Ellipse erkannt. Deshalb werden in der Ellipsenprüfung Ausreißer mit riesigem Abstand quadratisch gewichtet, sodass Objekte mit Ausreißern als solche erhalten bleiben.

elliptisch =

Ist die Ellipsenprüfung bestanden, dann gibt Polyglätten eine Ellipse zurück und endet, ansonsten wird weiter auf runde Rechtecke geprüft.

Page 48: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 48

Es werden diese Maße des runden Rechteckes ermitteltSi m onPi e - Power WMFei nf ügen2. 3Pl at t enbeul en; Kam pf kr af t t heor i e

(x1minY;minY)(minX;Y1minX)

(maxX;Y1maxX)

(minX;Y2minX) (maxX;Y2maxX)

(x2minY;minY)

(x1maxY;maxY) (x2maxY;maxY)X1 X2dx12

dx dx

inneres Rechteck

Y2

Y1

dy12

dydy

Bei dem runden Rechteck werden die geraden Strecken rausgeschnitten. Ein Teil der Punkte des Polygons wird um die Kantenlängen dx12 und dy12 reduziert. Übrig bleiben nur noch die Ausrundungsradien des Rechteckes. Formen diese Radien eine Ellipse, dann ist das Objekt ein rundes Rechteck.

S imo n P ie - P o werWMF ein fü g en 2 .3P latten b eu len ; Kamp fk raftth eo rie

dx dx12 dx

dx dx

dydy

dydy

12dy

Ist die Ellipsenprüfung bestanden, dann gibt Polyglätten ein rundes Rechteck zurück und endet, ansonsten wird weiter auf Kreisbögen geprüft.

Für Kreisbögen und Ellipsenbögen müssen andere Bedingungen erfüllt sein maxX ≠ minX: Ellipsen müssen eine Länge haben. maxY ≠ minY: Ellipsen müssen eine Breite haben. Bei einem Bogen müssen Anfangs- und Endpunkt den größten Abstand unter den Punkten

haben, sonst ist die Polylinie kein Bogen. Ist dies bei einem Chord nicht der Fall, dann sind Pax, Pex, Pay, Pey nicht der erste und der

letzte Punkt des PolygonsKreisbögen sind zwar elliptische Bögen, aber es gibt dennoch 2 Algorithmen. Der Algorithmus für Kreisbögen erkennt Kreisbögen anhand von 3 Punkte. Der Algorithmus für Ellipsenbögen braucht für die Erkennung mindestens einen extremalen X-Wert und einen extremalen Y-Wert. Flache elliptische Bögen werden also nicht erkannt. Da flache elliptische Bögen meist sehr gut durch einen Kreisbogen angenähert werden können, greift hier der Kreisbogenalgorithmus.

Page 49: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 49

Si monPi e - PowerWMFei nfügen2. 3Pl at tenbeulen; Kampfkraft theori e

erkennungKreisbogen-

Bogenelliptischer

erkennungEllipsen-

erkennungKreisbogen-

bogenKreis-

erkennungEllipsen-

AlgorithmenKombi beider

keinChord

nurBögen

Allerdings muss das Objekt immer noch mehr als 7 Punkte haben. Hat man eine sehr wichtige Grafik mit sehr vielen flachen Bögen, dann empfiehlt es sich die Anzahl vorübergehend herunter zu setzen. Allerdings werden dann auch Rechtecke als Ellipsen erkannt, da jeder Punkt des Rechteckes auf einer Ellipse liegt.

Um Bögen von Sterne zu unterscheiden muss der zweit maximale Abstand der Punkte untereinander kleiner sein als das 0,35 Fache der Diagonale des umschließenden Rechtecks. Der maximale Abstand der Punkte untereinander ist bei Bögen bereits zur Bestimmung von Pa und Pe vorgesehen.

S imo n P ie - P o w erWMF ein fü g en 2 .3P latten b eu len ; K amp fk raftth eo rie

max Abstand12

Abstand12

max Abstand

min

X

max

X

minY

maxYPA

PE

Um einen Kreisbogen durch 3 Punkte zu bestimmen, wird irgendein Punkt Pp der Polylinie benötigt. Sind Pa und Pe der Anfang und das Ende der Polylinie, dann wird Pp etwa in der Mitte der Polylinie raus gegriffen.

Das Bestimmen der Kreisgleichung durch 3 Punkte hat mehrere Probleme: Die 3 Punkte liegen auf einer Geraden Der Radius ist zu riesig. Es wird ein gigantischer Kreisbogen „erkannt“, weil alle Punkte der

Polylinie sehr dicht an dem Riesenradius liegen (elliptisch < 0,05). Das umschließende Rechteck des Kreises, auf dem der Kreisbogen liegt, liegt außerhalb des

Integers. Division durch 0

Gegen Riesenradien hilft den Abstand des Punktes Pp zur Geraden Pa-Pe zu prüfen.

Page 50: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 50

Si monPi e - Power WMFei nf ügen2. 3Pl at t enbeul en; Kampfkr aft t heori e

PA

PE

PP

PA

PE

PPbestanden

prüfenRiesenradiusA

bstand

Poly

gon

Ellip

sen-

prüf

ung

Ist der Abstand zu klein, dann ist der Radius zu groß. Flache Bögen haben von Natur aus einen großen Radius. Wann ist ein Radius groß und wann riesig? Die Frage wird so beantwortet. Jedes Objekt hat eine Strichstärke. Wird das Objekt von seiner Liniendicke verdeckt, dann ist der Radius riesig. Die Liniendicke ist proportional zum Wert Kompression, der der Funxion übergeben wurde.

Anschließend kommt die Formel zur Berechnung des Kreismittelpunktes zum Einsatz.Pmy = Pmx = Radius =

Falls Pa und Pe die gleiche X-Koordinate haben, kommt es zu einer 0 im Nenner. Da es 3 Formeln gibt, wie der Mittelpunkt eines Kreises berechnet wird, wird in diesem Fall einfach eine andere Formel genommen.

Nachdem Radius und Mittelpunkt berechnet wurden, wird überprüft, ob alle Punkte auf einem Kreisbogen liegen

Es ist entscheidend, in welcher Reihenfolge die Punkte Pa und Pe eingesetzt werden. Vertauscht man diese, dann wird die andere Seite des Bogens gezeichnet. Die korrekte Seite wird ermittelt, indem der Drehsinn der Polylinie bestimmt wird. Für den Drehsinn werden die ersten beiden Punkte P1 und P2 der Polylinie auf den Einheitskreis transponiert und die Funxion PositiverWinkel gibt den Drehsinn zurück. Da Winkelfunxionen so unzuverlässig viele Wennabfragen benötigen, werden auf diese verzichtet, und stattdessen nur die Wennabfragen benutzt. Die Quadranten sind im rechten Bild definiert.

Ein Winkel dreht positiv, wenn er in mathematisch positiver Richtung dreht. Ist die Drehrichtung anders herum, dann werden die Punkte Pa und Pe vertauscht eingesetzt. Polylinien aus AutoCAD drehen zwar immer in eine Richtung, aber darauf sollte man sich nicht verlassen.

S im o n P ie - P o w erW M F ein fü g en 2 .3P latten b eu len ; K am p fk raftth eo rie

posit

iver

Win

kel

S im o n P ie - P o w erWM F ein fü g en 2 .3P latten b eu len ; K am p fk raftth eo rie

-1; 1

8 ; 0

positiver

23

4

5

67

Drehsinn P1

P2

Y

X

Page 51: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 51

Ist die Ellipsenprüfung bestanden, dann gibt Polyglätten ein Bogen oder Chord zurück und endet, ansonsten wird weiter auf Ellipsenbögen geprüft. Ist das Objekt eine Polylinie, dann wird ein Bogen zurückgegeben. Bei einem Polygon wird ein Chord zurückgegeben.

Bei der Erkennung eines Ellipsenbogens müssen 2 von 4 Extremwerte (minX, maxX, minY und maxY) bekannt sein. Bekanntsein wird in die Variablen X1, X2, Y1 und Y2 zwischengespeichert. X1 bedeutet, dass minX bekannt ist.

X bekannt= minX oder maxX bekanntY bekannt =minY oder maxY bekannterfolgreiche Ellipsenerkenung = X bekannt und Y bekannt= (minX oder maxX) und (minY oder maxY)

Si monPi e - PowerWMFei nf ügen2. 3Pl at t enbeul en; Kampfkraft t heori e

Ellipsenbogen minX maxX minY maxY

?

?

?

?

?

?

?

?

? ?

? ?

?

?

?

X Y X Y Erkennung

?? ?

? ?

?

? ? ?

?

?

?

?

?

?

?

Haben die Punkte Pa und Pe einen Extremwert, so gilt dieser Extremwert als unbekannt.z.B: Pey= minY. Es können also bis zu 4 Extremwerte unbekannt werden. Sind von einer Koordinate beide Extremwerte unbekannt, so derjenige als wieder bekannt gesetzt, der den größeren Radius bringt.

Si monPi e - PowerWMFei nf ügen2. 3Pl at t enbeul en; Kampfkraft t heori et r age zwi schen di e Anführ ungsst ri che dei nen Namen ei n

Rad

iusY

kein Rad

iusY

Rad

ius ke

inR

adiu

s

PM=(Pmx;Pmy)

PM=(Pmx;Pmy)

(minX;minXzu)(maxYzu;maxY)

(minX;minXzu)(minYzu;minY)(minYzu;minY)

(maxX;maxXzu)

(maxYzu;maxY)

(maxX;maxXzu)

minXzu > maxXzu Y1=1;Y2=0 minXzu < maxXzu Y1=0;Y2=1

richtigerPunkt

falscherPunkt

falscherPunkt

richtigerPunkt

Anhand der Extremwerte wird der Ellipsenmittelpunkt (Pmx; Pmy) ermittelt. Sind entweder beide Extremwerte bekannt oder beide Extremwerte nicht bekannt, werden die zugehörigen Koordinaten gemittelt. Ist nur einer bekannt, dann wird die zugehörige Koordinate dem Radius zugewiesen. Der Radius wird auf die gleiche Weise ermitteltBeispiel: minX und maxX sind bekannt.

Pmy= (minXzu+maxXzu)/2

Page 52: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 52

RadiusX= (maxX-minX)/2Beispiel: minY ist unbekannt

Pmx= minYzuRadiusY= Wenn minX bekannt, dann maxY- minXzu, sonst maxY-maxXzu

Damit ist der elliptische Bogen beschrieben werden. Bei 3 oder mehr unbekannten Extremwerten wird trotzdem weiter gemacht, in der Hoffnung, dass die Ellipsenprüfung bestanden wird. Bei Halb- und Viertelbögen klappt die Prüfung.

Ist die Ellipsenprüfung bestanden, dann gibt Polyglätten ein Bogen oder Chord zurück und endet, ansonsten wird weiter nach überflüssigen Punkten geprüft. Ist das Objekt eine Polylinie, dann wird ein Bogen zurückgegeben. Bei einem Polygon wird ein Chord zurückgegeben.

Beim Punktelöschen werden immer 3 Punkte untersucht.Wenn der Zwischenpunkt einen zu geringen Abstand von der Geraden hat, dann wird er gelöscht. Es gibt für das Löschen 3 Ausnahmen. Der Zwischenpunkt wird nicht gelöscht,

wenn er eine x- oder y-Koordinaten mit dem Anfangs- xoder Endpunkt gemeinsam hat, um rechtwinkliges Aussehen zu wahren.

wenn er sich außerhalb der beiden Endpunkte befindet, obwohl sein lotrechter Abstand klein ist.

wenn sein vorheriger Punkt gelöscht wurde. Erst im nächsten Durchlauf kann dieser Punkt wieder gelöscht werden, allerdings ist sein Abstand größer geworden. Diese Maßnahme verhindert, dass Rundungen mit seeehr vielen Punkten begradigt werden.

Si m onPi e - Power WMFei nf ügen2. 3Pl at t enbeul en; Kam pf kr af t t heor i e

P1P2

P3Abstand

nichtLöschen

nichtLöschen

gelöschtjetzt nicht Löschen

Polyglätten gibt ein Objekt zurück, das eventuell weniger Punkte hat als vorher. Hat das Objekt nur noch 2 Punkte, dann ist es eine Polylinie.

Page 53: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 53

Inhalt einer WMF-DateiIm Kapitel „Beispiel für Dokumentation“ wurde das äußere Erscheinungsbild mit Grafiken gezeigt und es wurden hässliche Dokumente mit schönen Dokumenten verglichen. In diesen 4 Abschnitten wird hingegen das innere einer WMF-Datei gezeigt. Denn die PowerWMF erzeugen Dateien sind nicht nur äußerlich schön, sondern auch innerlich gesund.Hier wird der Hexdump oder der bildliche Inhalt vor und nach der Anwendung des Makros gezeigt.

Hexdump einer AutoCAD-WMFd7cdc69a000000000000840c7605c00000000000235e010009000003082f00000a000502000000000400000003010800050000000b0200000000050000000c027605840c05020000f7000003000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000003402000003000000350004000000340200000300000035000500000004010d0000000500000002010100000008000000fa0200000000000080808000040000002d010100070000001f0480808000a20102010c00000025030400df0387019f0187019f01a2010201a20110000000250306000201a20102015401fc005401d5005b01d5001001df0310011600000025030900f5031001eb061001eb065b01c4065401bd065401bd06a2012106a20121068701f503870108000000fa0200000000000080808000040000002d01020004000000f0010100080000002503020023011a0123018c0108000000250302009d061a019d068c01080000002503020023011a01df031a010800000025030200f5031a019d061a01080000002503020023011e01df031e010800000025030200f5031e019d061e01080000002503020023018c019f018c01080000002503020023018701df0387010800000025030200f50387019d06870108000000fa0200000000000000ffff00040000002d01010004000000f0010200070000001f0400ffff0016015101070000001f0400ffff005e015101070000001f0400ffff00a6015101070000001f0400ffff00ee015101070000001f0400ffff0036025101070000001f0400ffff007e025101070000001f0400ffff00c6025101070000001f0400ffff000d035101070000001f0400ffff0055035101070000001f0400ffff009d035101070000001f0400ffff00e5035101070000001f0400ffff002d04510108000000250302005101de005101040108000000250302005101280151014c010800000025030200510170015101940108000000250302005101b8015101dc010800000025030200510100025101240208000000250302005101480251016c020800000025030200510190025101b40208000000250302005101d7025101fb02080000002503020051011f035101430308000000250302005101670351018b0308000000250302005101af035101d30308000000250302005101f70351011b04080000002503020051013f045101650408000000fa0200000000000080808000040000002d01020004000000f001010008000000250302007b01dd017b01b50108000000250302002601b5012601df0108000000250302003901a7013901af0108000000250302006701a7016701af0108000000250302002e01af012e01b50108000000250302007101af012e01af0108000000250302007101b5017101af0108000000250302002e01a7012e01a20108000000250302007101a7012e01a70108000000250302007101a2017101a70108000000250302007b01b5012601b50108000000fa0200000000000080808000040000002d01010004000000f0010200080000002503020021068c01f5038c010800000025030200df038c019f018c0108000000fa0200000000000080808000040000002d01020004000000f001010008000000250302004506dd014506b50108000000250302009906b5019906df0108000000250302008606a7018606af0108000000250302005906a7015906af0108000000250302009106af019106b50108000000250302004e06af019106af0108000000250302004e06b5014e06af0108000000250302009106a7019106a20108000000250302004e06a7019106a70108000000250302004e06a2014e06a70108000000250302004506b5019906b50108000000fa0200000000000000ffff00040000002d01010004000000f0010200070000001f0400ffff001e016f06070000001f0400ffff0066016f06070000001f0400ffff00ae016f06070000001f0400ffff00f6016f06070000001f0400ffff003e026f06070000001f0400ffff0086026f06070000001f0400ffff00ce026f06070000001f0400ffff0015036f06070000001f0400ffff005d036f06070000001f0400ffff00a5036f06070000001f0400ffff00ed036f0608000000250302006f06de006f060c0108000000250302006f0630016f06540108000000250302006f0678016f069c0108000000250302006f06c0016f06e40108000000250302006f0608026f062c0208000000250302006f0650026f06740208000000250302006f0698026f06bc0208000000250302006f06df026f06030308000000250302006f0627036f064b0308000000250302006f066f036f06930308000000250302006f06b7036f06db0308000000250302006f06ff036f062d0408000000fa0200000000000080808000040000002d01020004000000f0010100070000001f0480808000a2012106080000002503020021068c019d068c0108000000fa0200000000000000000000040000002d01010004000000f00102001c000000fb0292ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01030007000000fc02000000ffff000000040000002d0104000a000000320aaf001d0102000000313032003200050000000201010000000500000009020100000005000000010201000000040000002d01010004000000f001030007000000fc020000ffffff000000040000002d01030004000000f0010400050000002e01010000001c000000fb021000070000000000bc02000000000102022253797374656d004da91f664d00000a0026008a01000000000400000060c8b016040000002d01040004000000f00102000800000025030200340272033402e50308000000250302006c02e5036c02650408000000250302006c02e5033f00e50308000000250302006c0265043f006504080000002503020000024002000211030800000025030200340272033f0072030800000025030200c1053b02c105d9020800000025030200850537038505ad0308000000250302004d05ad034d052d0408000000250302004d05ad030d07ad0308000000250302004d052d040d072d040800000025030200850537030d07380308000000250302003f0040023f00650408000000250302000f022d030f02720308000000250302000d072d040d073b020800000025030200b405f702b40537030800000025030200000240020002db0108000000250302000002db010801de010e00000025030500fc00de01fd00e3010201e5010601e3010801de010800000025030200fc00de01fc0057010800000025030200fc005701d4005e010800000025030200d4005e01d400e3010800000025030200d400e3010d00e60108000000250302000d00e6010d00400208000000250302000d004002000240021200000025030700b806de01b906e201bb06e401be06e501c106e401c406e201c406df010800000025030200c406df01c4065a010800000025030200c4065a01eb0660010800000025030200eb066001eb06df010800000025030200eb06df01ac07e2010800000025030200ac07e201ac073b020800000025030200ac073b02c1053b020800000025030200c1053b02c105db010800000025030200c105db01b806de010800000025030200000211030f022d030800000025030200b405f702c105d90208000000fa0200000000000000ffff00040000002d01020004000000f00101001c000000fb0292ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010100050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01050007000000fc02000000ffff000000040000002d0106000a000000320aaf003b0602000000323032003200050000000201010000000500000009020100000005000000010201000000040000002d01020004000000f0010500040000002d01030004000000f0010600050000002e0101000000040000002d01040004000000f001010007000000fc020100000000000000040000002d0101003e00000024031d00f6008300f8006f00ff005c0009014b0018013c00290131003c012b005101280065012b007801310089013c0098014b00a2015c00a9016f00ab018300a9019800a201ab009801bc008901ca007801d5006501dc005101de003c01dc002901d5001801ca000901bc00ff00ab00f8009800f60083006e00000024033500140683001506780017066e001a0663001f065900240650002b06470033063f003b063800450633004f062e0059062b00640629006f0628007a06290085062b008f062e0099063300a3063800ab063f00b3064700ba065000c0065900c4066300c7066e00c9067800ca068300c9068e00c7069900c406a400c006ae00ba06b700b306c000ab06c700a306ce009906d4008f06d8008506dc007a06de006f06de006406de005906dc004f06d8004506d4003b06ce003306c7002b06c0002406b7001f06ae001a06a4001706990015068e0014068300040000002d01030008000000fa0200000000000000000000040000002d01050004000000f0010200040000002d0101000e0000002403050064023c030d033c030d0352036402520364023c030e00000024030500640252030d0352030d0369036402690364025203040000002d010300070000001f04000000001803b9021c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000ffff000000040000002d01070010000000320ae6025803060000003131322c3930120012001200090011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f00102001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000ffff000000040000002d0107000f000000320abe025803050000004f4b2046750019001600090013001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f00102000800000025030200ca021803ca021a030a00000025030300b8021d03b7021b03b5021a030a00000025030300bc021a03ba021b03b9021d030800000025030200ca021a03bc021a030800000025030200a8021803a8021a030800000025030200a8021803ca0218030800000025030200a8021a03b5021a030800000025030200ca023703ca023a030a00000025030300b5023703b7023603b80234030a00000025030300b9023403ba023603bc0237030800000025030200ca023703bc0237030a00000025030300a8023703a8023a03ca023a030800000025030200a8023703b50237030800000025030200b8021d03b80234030800000025030200b9021d03b90234030800000025030200c7021a03c70237030800000025030200aa021a03aa02370308000000fa02000000000000ff000000040000002d01020004000000f0010500080000002503020081033c032a033c031200000025030700550325036403250355033c0347032503550325035503ee02ca03ee0208000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200b102ff02b10202030800000025030200c002ff02c00202030800000025030200ad02fd02ad02ff020800000025030200c402fd02c402ff020800000025030200b1020203c00202030800000025030200ad02ff02c402ff020e00000025030500b5021103b6021403b9021503bb021403bd0211030800000025030200b3020f03be020f030800000025030200a8021703a00213030800000025030200b4021103ae0217030800000025030200bd021103c30217030800000025030200a802e202ca02e2020800000025030200ca021803a802180308000000fa0200000000000000ff0000040000002d01020004000000f00105000800000025030200bc02fd02bc02e9020800000025030200b502e902b502fd020800000025030200ae02e902c302e90208000000fa0200000000000000ffff00040000002d01050004000000f00102001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000f

Page 54: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 54

fff000000040000002d01070010000000320a91001903060000004d313a3130301b0012000900120011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f00102000800000025030200c302fd02c302e2020800000025030200ae02e202ae02fd020800000025030200a802e202a802fd020800000025030200ca02fd02ca02e2020800000025030200b3020203b3020f030800000025030200be020203be020f030800000025030200bc021103bc020f030800000025030200b5021103b5020f030800000025030200a802fd02ca02fd020800000025030200a8021703ca0217030800000025030200a8021703a80218030800000025030200ca021703ca0218030800000025030200b4021103bd02110308000000fa0200000000000000000000040000002d01020004000000f00105001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010500050000002e0118000000050000000201010000000500000004010d000000050000000902000000000500000001020000000008000000fa0200000000000000000000040000002d01060007000000fc020000000000000000040000002d01070021000000320a58001903110000004ce46e67737363686e69747420332d333a002500240024002400200020002000240025000e001200120012002400150024001200050000000201010000000500000009020100000005000000010201000000040000002d01020004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f00105000800000025030200190369000705690008000000fa0200000000000000ffff00040000002d01050004000000f0010200070000001f0400ffff000803b902070000001f0400ffff00c102b902070000001f0400ffff007902b902070000001f0400ffff003102b902070000001f0400ffff00e901b902070000001f0400ffff00a101b902070000001f0400ffff005901b902070000001f0400ffff001201b902070000001f0400ffff000c01fe04070000001f0400ffff005401fe04070000001f0400ffff009c01fe04070000001f0400ffff00e301fe04070000001f0400ffff002b02fe04070000001f0400ffff007302fe04070000001f0400ffff00bb02fe04070000001f0400ffff000303fe041c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000ffff000000040000002d01070009000000320ac600a6020100000061002400050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f00102000800000025030200b9023c03b9021a030800000025030200b902f702b902d3020800000025030200b902af02b9028b020800000025030200b9026702b90243020800000025030200b9021f02b902fb010800000025030200b902d701b902b3010800000025030200b9028f01b9026b010800000025030200b9024701b90224010800000025030200b9020001b902de000800000025030200fe04de00fe04fa000800000025030200fe041e01fe0442010800000025030200fe046601fe048a010800000025030200fe04ae01fe04d1010800000025030200fe04f501fe0419020800000025030200fe043d02fe0461020800000025030200fe048502fe04a9020800000025030200fe04cd02fe04f1020800000025030200fe041503fe0430031c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000ffff000000040000002d01070009000000320ac600ec040100000062032400050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f0010200040000002d0101003600000024031900eb02ab00ea029e00e5029200dd028700d2027f00c6027a00b9027800ab027a009f027f00950287008c02920087029e008602ab008702b9008c02c5009502cf009f02d700ab02dd00b902de00c602dd00d202d700dd02cf00e502c500ea02b900eb02ab0056000000240329003105ab003005a3002e059c002b05940027058d00220587001c05820015057e000e057b0006057900fe047800f6047900ee047b00e7047e00e0048200da048700d5048d00d1049400ce049c00cc04a300cb04ab00cc04b300ce04bb00d104c200d504c900da04cf00e004d500e704d900ee04dc00f604de00fe04de000605de000e05dc001505d9001c05d5002205cf002705c9002b05c2002e05bb003005b3003105ab00040000002d01030008000000fa0200000000000000000000040000002d01020004000000f0010500040000002d0101000e00000024030500a90430035305300353054703a9044703a90430030e00000024030500a90447035305470353055e03a9045e03a9044703040000002d010300070000001f04000000000c03fe0408000000250302000f050c030f050e030c00000025030400fd041103fd041003fc040f03fa040e030c0000002503040002050e0300050f03ff041003ff04110308000000250302000f050e0302050e030800000025030200ed040c03ed040e030800000025030200ed040c030f050c030800000025030200ed040e03fa040e0308000000250302000f052c030f052e030c00000025030400fa042c03fc042c03fd042b03fd0429030c00000025030400ff042903ff042b0300052c0302052c0308000000250302000f052c0302052c030a00000025030300ed042c03ed042e030f052e030800000025030200ed042c03fa042c030800000025030200fd041103fd0429030800000025030200ff041103ff04290308000000250302000d050e030d052c030800000025030200ef040e03ef042c0308000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200f604f402f604f70208000000250302000605f4020605f7020800000025030200f304f102f304f40208000000250302000905f1020905f4020800000025030200f604f7020605f7020800000025030200f304f4020905f4021200000025030700fa040603fb040803fc040903fe040a030005090301050803020506030800000025030200f8040403040504030800000025030200ed040c03e50408030800000025030200f9040603f4040c0308000000250302000205060308050c030800000025030200ed04d7020f05d70208000000250302000f050c03ed040c0308000000fa0200000000000000ff0000040000002d01020004000000f001050008000000250302000105f1020105de020800000025030200fb04de02fb04f1020800000025030200f404de020805de0208000000fa0200000000000000ffff00040000002d01050004000000f0010200070000001f0400ffff000c03ed04070000001f0400ffff000c030f051c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000ffff000000040000002d01070010000000320ada020304060000003131332c3030120012001200090011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f00102001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010200050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01060007000000fc02000000ffff000000040000002d0107000f000000320ab2020604050000004f4b2046750019001600090013001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010600040000002d01030004000000f0010700050000002e0101000000040000002d01040004000000f001020008000000250302000805f1020805d7020800000025030200f404d702f404f1020800000025030200ed04d702ed04f10208000000250302000f05f1020f05d7020800000025030200f804f702f804040308000000250302000405f70204050403080000002503020001050603010504030800000025030200fb040603fb0404030800000025030200ed04f1020f05f1020800000025030200ed040c030f050c030800000025030200f90406030205060308000000fa02000000000000ff000000040000002d01020004000000f001050008000000250302003b04300393043003120000002503070067041a0358041a036704300375041a0367041a036704e302f603e30208000000fa0200000000000000000000040000002d01050004000000f00102000800000025030200ca028f01a8028f010800000025030200ca029201ca028f010800000025030200a8029201a8028f010800000025030200ca02b801a802b8010800000025030200ca02b801ca02b5010800000025030200a802b801a802b5010800000025030200bc02b501ca02b5010800000025030200a802b501b502b5010a00000025030300b502b501b702b401b802b2010800000025030200b5029201a80292010800000025030200ca029201bc0292010800000025030200b902b201b90295010a00000025030300bc029201ba029201b90295010a00000025030300b902b201ba02b401bc02b5010800000025030200b802b201b80295010a00000025030300b8029501b7029201b50292010800000025030200c702b501c70292010800000025030200aa02b501aa02920108000000250302000f058f01ed048f0108000000250302000f0592010f058f010800000025030200ed049201ed048f0108000000250302000f05b801ed04b80108000000250302000f05b8010f05b5010800000025030200ed04b801ed04b50108000000250302000205b5010f05b5010800000025030200ed04b501fa04b5010c00000025030400fa04b501fc04b501fd04b401fd04b2010800000025030200fa049201ed04920108000000250302000f059201020592010800000025030200ff04b201ff0495010c000000250304000205920100059201ff049301ff0495010c00000025030400ff04b201ff04b4010005b5010205b5010800000025030200fd04b201fd0495010c00000025030400fd049501fd049301fc049201fa04920108000000250302000d05b5010d0592010800000025030200ef04b501ef04920108000000fa0200000000000000ff0000040000002d01020004000000f0010500040000002d0101001600000024030900d402d802d302d602d002d502ce02d602cd02d802ce02db02d002dc02d302db02d402d8021600000024030900a402d802a302d602a102d5029e02d6029d02d8029e02db02a102dc02a302db02a402d802040000002d0103000800000025030200ae025b02c3025b0208000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200a8025502ca02550208000000fa0200000000000000ff0000040000002d01020004000000f0010500070000001f0400ff0000da02c3020800000025030200c302ca02ae02da020800000025030200ae02b602c302c6020800000025030200c302a202ae02b2020800000025030200ae028e02c3029e020800000025030200c3027a02ae028a020800000025030200ae026602c30277020800000025030200b8025b02ae0263020800000025030200ae02ca02b102cc020800000025030200b502cf02b702d1020800000025030200ba02d302bc02d5020800000025030200c002d802c302da020800000025030200c302b602c002b8020800000025030200bc02bb02ba02bd020800000025030200b702bf02b502c1020800000025030200b102c402ae02c6020800000025030200ae02a202b102a5020800000025030200b502a702b702a9020800000025030200ba02ac02bc02ad020800000025030200c002b002c302b2020800000025030200c3028e02c00291020800000025030200bc029302ba0295020800000025030200b7029802b50299020800000025030200b1029c02ae029e020800000025030200ae027a02b1027d020800000025030200b5028002b70281020800000025030200ba028402bc0285020800000025030200c0028802c3028a020800000025030200c3026602c00269020800000025030200bc026c02ba026d020800000025030200b7027002b50271020800000025030200b1027402ae0277020800000025030200b9025b02ba025c020800000025030200bd025e02be025f020800000025030200c1026102c302630208000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200c302e202c30255020800000025030200ae02e202ae02550208000000fa0200000000000000ff0000040000002d01020004000000f00105000800000025030200ae02dd02c302dd0208000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200a802e202ca02e2020800000025030200a802e202a80255020800000025030200ca02e202ca02550208000000fa0200000000000000ff0000040000002d01020004000000f00105000800000025030200c302f701c002fa010800000025030200bc02fc01ba02fe010800000025030200b7020102b50202020800000025030200b1020502ae0207020800000025030200c3020702ae02f70108000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200c3020e02c302da010800000025030200ae02da01ae020e020800000025030200ca020e02ca02da010800000025030200a802da01a8020e0208000000fa0200000000000000ff0000040000002d01020004000000f0010500040000002d0101001600000024030900d4020402d3020202d0020102ce020202cd020402ce020602d0020702d3020602d40204021600000024030900a4020402a3020202a10201029e0202029d0204029e020602a1020702a3020602a40204021200000024030700ba020b02b9020a02b8020a02b7020b02b8020c02b9020c02ba020b02040000002d0103000800000025030200c3020702ae02070208000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200a8020e02ca020e0208000000fa0200000000000000ff0000040000002d01020004000000f00105000800000025030200ae02e301b102e6010800000025030200b502e901b702ea010800000025030200ba02ed01bc02ee010800000025030200c002f101c302f4010800000025030200ae02f401c302e30108000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200be02f701be02e3010800000025030200b302f701b302e3010800000025030200b302f701be02f7010800000025030200ae02e301c302e3010800000025030200ca02c801be02c8010800000025030200ca02c501be02c5010800000025030200b202c401bf02c40108000000fa0200000000000000ff0000040000002d01020004000000f00105000800000025030200b202ba01b302bd010800000025030200b502bf01b702c0010800000025030200ba02c001bc02bf010800000025030200be02bd01bf02ba0108000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200bf02c401bf02ba010800000025030200b202c401b202ba010800000025030200be02c401be02da010800000025030200b302c401b302da010800000025030200a802c501a802c8010800000025030200ca02c501ca02c8010800000025030200b302c801a802c80108000000fa0200000000000000ff0000040000002d01020004000000f0010500040000002d0101001200000024030700c702bf01c602be01c502be01c502bf01c502c001c602c001c702bf011200000024030700ad02bf01ac02be01ab02be01ab02bf01ab02c001ac02c001ad02bf01040000002d0103000800000025030200c202bf01c002ba010800000025030200b002bf01b102ba010800000025030200c202bf01c402c2010800000025030200b002bf01ad02c2010800000025030200c702c201c402c2010800000025030200ca02bf01c702c2010800000025030200a802bf01aa02c2010800000025030200a802bf01a802ba010800000025030200ca02ba01ca02bf0108000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200ca02b801ca02ba010800000025030200a802b801a802ba0108000000fa0200000000000000ff0000040000002d01020004000000f00105000800000025030200aa02c201ad02c20108000000fa0200000000000000ffff00040000002d01050004000000f00102000800000025030200a802da01ca02da010800000025030200b302c501a802c5010800000025030200a802ba01ca02ba010800000025030200a802b801ca02b80107000000fc020000000000000000040000002d01020008000000fa0205000100000000000000040000002d0106000a00000024030300a902e001a902f101cc02e0010a00000024030300a902f101cc02e001cc02f10108000000fa02000000000000ff000000040000002d01070004000000f0010500070000001f04333333000e02a802070000001f0433333300b801a802070000001f0433333300b801b9020a00000025030300aa02e101b202e101ac02ef013200000025031700bb02e301bb02e201b902e101b802e101b602e201b502e401b502e701b502ea01b502ed01b602ee01b802ef01b902ef01ba02ee01bb02ed01bc02eb01bc02ea01bb02e801ba02e701b902e601b802e601b602e701b502e801b502ea012600000025031100c602e101c102e101c002e701c102e601c202e601c402e601c502e601c702e801c702ea01c702eb01c702ed01c502ee01c402ef01c202ef01c102ee01c002ee01c002ec0108000000fa0200000000000000ff0000040000002d01050004000000f001070008000000250302000805ec010505ee0108000000250302000205f1010005f3010800000025030200fc04f501fa04f7010800000025030200f704fa01f404fc0108000000250302000805fc01f404ec0108000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200080503020805cf010800000025030200f404cf01f404030208000000250302000f0503020f05cf010800000025030200ed04cf01ed04030208000000fa0200000000000000ff0000040000002d01050004

Page 55: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 55

000000f0010700040000002d0101001e00000024030d001905f9011905f7011705f6011605f5011405f6011305f7011205f9011305fa011405fc011605fc011705fc011905fa011905f9011e00000024030d00ea04f901e904f701e804f601e604f501e504f601e304f701e304f901e304fa01e504fc01e604fc01e804fc01e904fa01ea04f9011200000024030700ff040002ff04ff01fe04fe01fd04ff01fd040002fe040102ff040002040000002d01020008000000250302000805fc01f404fc0108000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200ed0403020f05030208000000fa0200000000000000ff0000040000002d01050004000000f00107000800000025030200f404d801f704da010800000025030200fa04dd01fc04df0108000000250302000005e1010205e30108000000250302000505e6010805e8010800000025030200f404e8010805d80108000000fa0200000000000000ffff00040000002d01070004000000f001050008000000250302000405f7010405d8010800000025030200f804f701f804d8010800000025030200f804f7010405f7010800000025030200f404d8010805d80108000000250302000f05c8010405c80108000000250302000f05c5010405c5010800000025030200f804c4010405c40108000000fa0200000000000000ff0000040000002d01050004000000f00107000a00000025030300f804ba01f804bc01f904bd010800000025030200fb04bf01fc04c00108000000250302000005c0010105bf010a000000250303000305bd010405bc010405ba0108000000fa0200000000000000ffff00040000002d01070004000000f001050008000000250302000405c4010405ba010800000025030200f804c401f804ba0108000000250302000405c4010405cf010800000025030200f804c401f804cf010800000025030200ed04c501ed04c80108000000250302000f05c5010f05c8010800000025030200f804c801ed04c80108000000fa0200000000000000ff0000040000002d01050004000000f0010700040000002d01010016000000240309000c05bf010c05be010b05be010a05be010a05bf010a05c0010b05c0010c05c0010c05bf011600000024030900f204bf01f204be01f104be01f004be01f004bf01f004c001f104c001f204c001f204bf01040000002d01020008000000250302000705bf010605ba010800000025030200f504bf01f604ba0108000000250302000705bf010a05c2010800000025030200f504bf01f204c20108000000250302000c05c2010a05c20108000000250302000f05bf010c05c2010800000025030200ed04bf01f004c2010800000025030200ed04bf01ed04ba0108000000250302000f05ba010f05bf0108000000fa0200000000000000ffff00040000002d01070004000000f001050008000000250302000f05b8010f05ba010800000025030200ed04b801ed04ba0108000000fa0200000000000000ff0000040000002d01050004000000f00107000800000025030200f004c201f204c20108000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200ed04cf010f05cf010800000025030200f804c501ed04c5010800000025030200ed04ba010f05ba010800000025030200ed04b8010f05b801040000002d0106000a00000024030300ee04d401ee04e5011105d4010a00000024030300ee04e5011105d4011105e50108000000fa02000000000000ff000000040000002d01050004000000f0010700070000001f04333333000302ed04070000001f0433333300b801ed04070000001f0433333300b801fe042e00000025031500f604d801f504d601f404d601f304d601f104d601f004d801ef04dc01ef04df01f004e201f104e301f304e401f504e301f604e201f604e001f604df01f604dd01f504dc01f304db01f104dc01f004dd01ef04df0132000000250317000105d8010005d601ff04d601fd04d601fc04d601fb04d801fa04dc01fa04df01fb04e201fc04e301fd04e401fe04e4010005e3010105e2010105e0010105df010105dd010005dc01fe04db01fd04db01fc04dc01fb04dd01fa04df0124000000250310000b05d6010605d6010605dc010605db010805da010905da010b05db010c05dc010d05de010d05e0010c05e2010b05e3010905e4010805e4010605e3010505e10108000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200a8020e02ca020e0208000000fa0200000000000000ff0000040000002d01050004000000f0010700070000001f0400ff00001302b902070000001f0400ff00001f02c3020800000025030200ae024702b9024f020800000025030200c3021b02c1021a020800000025030200be021802bd0217020800000025030200ba021502b90213020800000025030200c3024702c10248020800000025030200be024b02bd024c020800000025030200ba024e02b8024f020800000025030200ae021b02b90213020800000025030200c3023302ae0243020800000025030200ae021f02c3022f020800000025030200ae022f02b1022d020800000025030200b5022a02b70229020800000025030200ba022602bc0224020800000025030200c0022102c3021f020800000025030200c3024302c00241020800000025030200bc023e02ba023c020800000025030200b7023a02b50238020800000025030200b1023502ae02330208000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200c3020e02c30255020800000025030200ae020e02ae02550208000000fa0200000000000000ff0000040000002d01050004000000f00107000800000025030200ae021402c30214020800000025030200c3024f02ae024f0208000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200a8025502ca0255020800000025030200a8020e02a80255020800000025030200ca020e02ca02550208000000fa0200000000000000ff0000040000002d01050004000000f0010700040000002d0101001e00000024030d001905cd021905cb021705ca021605ca021405ca021305cb021205cd021305cf021405d0021605d0021705d0021905cf021905cd021e00000024030d00ea04cd02e904cb02e804ca02e604ca02e504ca02e304cb02e304cd02e304cf02e504d002e604d002e804d002e904cf02ea04cd02040000002d0102000800000025030200f4044f0208054f0208000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200ed044a020f054a0208000000fa0200000000000000ff0000040000002d01050004000000f0010700070000001f0400ff0000cf02080508000000250302000805bf02f404cf020800000025030200f404ab020805bb02080000002503020008059702f404a7020800000025030200f404830208059302080000002503020008056f02f4047f020800000025030200f4045b0208056b020800000025030200fe044f02f40457020800000025030200f404bf02f704c1020800000025030200fa04c402fc04c50208000000250302000005c8020205c90208000000250302000505cc020805cf0208000000250302000805ab020505ad0208000000250302000205b0020005b1020800000025030200fc04b402fa04b6020800000025030200f704b802f404bb020800000025030200f4049702f70499020800000025030200fa049c02fc049d0208000000250302000005a0020205a20208000000250302000505a4020805a7020800000025030200080583020505850208000000250302000205880200058a020800000025030200fc048c02fa048e020800000025030200f7049102f40493020800000025030200f4046f02f70471020800000025030200fa047402fc04760208000000250302000005780202057a02080000002503020005057d0208057f02080000002503020008055b0205055d02080000002503020002056002000562020800000025030200fc046502fa0466020800000025030200f7046902f4046b020800000025030200fe044f0200055102080000002503020002055302040554020800000025030200060556020805570208000000fa0200000000000000ffff00040000002d01070004000000f001050008000000250302000805d70208054a020800000025030200f404d702f4044a0208000000fa0200000000000000ff0000040000002d01050004000000f00107000800000025030200f404d1020805d10208000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200ed04d7020f05d7020800000025030200ed04d702ed044a0208000000250302000f05d7020f054a020800000025030200ed0403020f05030208000000fa0200000000000000ff0000040000002d01050004000000f0010700070000001f0400ff00000802fe04070000001f0400ff0000140208050800000025030200f4043c02fe04440208000000250302000805100206050f02080000002503020004050d0202050b02080000002503020000050902fe040802080000002503020008053c0206053d02080000002503020004053f0202054002080000002503020000054202fe0444020800000025030200f4041002fe040802080000002503020008052802f40438020800000025030200f4041402080524020800000025030200f4042402f70421020800000025030200fa041f02fc041d02080000002503020000051a02020519020800000025030200050516020805140208000000250302000805380205053502080000002503020002053302000531020800000025030200fc042e02fa042d020800000025030200f7042a02f404280208000000fa0200000000000000ffff00040000002d01070004000000f001050008000000250302000805030208054a020800000025030200f4040302f4044a0208000000fa0200000000000000ff0000040000002d01050004000000f00107000800000025030200f404090208050902080000002503020008054402f404440208000000fa0200000000000000ffff00040000002d01070004000000f00105000800000025030200ed044a020f054a020800000025030200ed040302ed044a0208000000250302000f0503020f054a0208000000fa020000000000000000ff00040000002d01050004000000f00107001c000000fb02d9ff00008403840390010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090012000000320ab60204030700000032327820503430041200120010000900160011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02d9ff00008403840390010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090012000000320aab02d4040700000032327820503430041200120010000900160011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f001070008000000250302009b02f9019b020b0208000000250302009b0222029b02380208000000250302009b024f029b02660208000000250302009b027c029b02930208000000250302009b02a9029b02c00208000000250302009b02d7029b02e8020800000025030200d602fa01d6020b020800000025030200d6022202d60239020800000025030200d6024f02d60266020800000025030200d6027d02d60293020800000025030200d602aa02d602c1020800000025030200d602d702d602e8020800000025030200e104ee01e10400020800000025030200e1041602e1042d020800000025030200e1044402e1045a020800000025030200e1047102e10488020800000025030200e1049e02e104b5020800000025030200e104cb02e104dd0208000000250302001b05ef011b05000208000000250302001b0517021b052d0208000000250302001b0544021b055b0208000000250302001b0571021b05880208000000250302001b059f021b05b50208000000250302001b05cc021b05dd0208000000fa0200000000000000000000040000002d01070004000000f0010500040000002d0101000e00000024030500ee01db01ca01dc01ca01d901ee01d801ee01db01040000002d0102000800000025030200d601d901e101d9010800000025030200d601c701e101c6010800000025030200d601c701d601d9010800000025030200e101c601e101d9010800000025030200ce01c901b102a4010800000025030200cf01d201b302ad010800000025030200b102a401b302ad010800000025030200ce01c901cf01d201040000002d0101000e00000024030500d205db01f605dc01f605d901d205d801d205db01040000002d0102000800000025030200e905d901de05d9010800000025030200e905c701df05c6010800000025030200e905c701e905d9010800000025030200df05c601de05d9010800000025030200f205c9010305a3010800000025030200f005d2010205ab0108000000250302000305a3010205ab010800000025030200f205c901f005d20108000000fa02000000000000ff000000040000002d01050004000000f00107001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d0109000a000000320a24034f0202000000312912000a00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d0109000a000000320a9203580302000000362912000a00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d0109000a000000320a7903300402000000362912000a00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d0109000a000000320a1103620502000000312912000a00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090012000000320ad00116030700000048454220333630041800150016000800120011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090012000000320ac20120040700000048454220333630041800150016000800120011001100050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f0010700070000001f04ff000000bf01ba02070000001f04ff0000003c033203070000001f04ff0000002e038805070000001f04ff000000b601f405070000001f04ff00000092013e05070000001f04ff0000009201f7021c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090009000000320ae80035030100000042292b00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d010900090000003

Page 56: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 56

20a8a0284010100000043292e00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090009000000320af502a4010100000041292b00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090009000000320af002f9050100000041292b00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090009000000320a9a02fc050100000043292e00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f00107001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700c7b01658b1f17761b1f1772040f377a91f664d040000002d010700050000002e0118000000050000000201010000000500000004010d00000005000000090200ffff000500000001020000000008000000fa0200000000000000ffff00040000002d01080007000000fc02000000ffff000000040000002d01090009000000320af5005d050100000042292b00050000000201010000000500000009020100000005000000010201000000040000002d01050004000000f0010800040000002d01020004000000f0010900050000002e0101000000040000002d01040004000000f001070008000000250302008d021903770219030800000025030200b00229038d0219030800000025030200380387034e0387030800000025030200fb025c0338038703080000002503020071046e035a046e030800000025030200b504520371046e030800000025030200440506035a050603080000002503020004052303440506030800000025030200f802c1010e03c1010800000025030200c302a301f802c1010800000025030200d704b301c004b3010800000025030200f704a101d704b3011000000025030600ba02bf01ba02b501b902ab01b702a201b4029801b1029101120000002503070097026a01930266018c02600183025a017b025501720250016f024f01100000002503060041024601370246012d02480123024a011a024d0113024f011200000025030700eb016a01e8016d01e1017501db017d01d6018601d2018f01d10191011000000025030600c801bf01c801c901c901d301cb01dd01ce01e701d101ee011200000025030700eb011502ef011902f6011f02ff01250207022a0210022f02130230021000000025030600410239024b023802550237025f023502680232026f0230021200000025030700970215029a021202a1020a02a7020202ac02f901b002f001b102ee01100000002503060032033c0332033203300328032e031e032b03140329030d0312000000250307000e03e6020b03e2020303dc02fb02d602f202d102e902cd02e702cc021000000025030600b902c202af02c302a502c4029b02c6029102c9028a02cc0212000000250307006302e6025f02ea025902f1025302f9024e02020349020b0349020d0310000000250306003f023c03400246034102500343025a034602630349026a03120000002503070063029203660295036e029c037602a1037f02a7038802ab038a02ac031000000025030600b902b503c302b503cd02b403d602b103e002af03e702ac0312000000250307000e03920312038e03180386031e037e032303760328036d0329036a030e0000002503050088052e038805220386051503820509037f05000310000000250306006505d8026005d4025605cc024c05c5024005bf023d05be020e000000250305000f05b5020205b502f604b702e904bb02e104be021000000025030600b904d802b504dd02ad04e702a604f102a004fd029f0400030e0000002503050096042e0396043b03980447039c0454039f045d031000000025030600b9048403be048803c8049003d2049703de049d03e1049e030e000000250305000f05a8031c05a7032805a5033405a2033d059e0310000000250306006505840369057f037105760378056b037e0560037f055d030e00000025030500f405b601f305a901f1059c01ee059001ea0587011000000025030600d0056001cc055b01c2055301b7054c01ac054701a90546010e000000250305007a053c016e053d0161053f01550542014c0546011000000025030600250560012005640118056e01110579010c0584010a0587010e000000250305000105b6010205c2010405cf010705db010a05e401100000002503060025050b0229051002330518023e051f02490525024c0526020e000000250305007a052f0287052e0294052c02a0052902a90526021000000025030600d0050b02d5050702dd05fd01e405f201e905e701ea05e4010c000000250304003e0592013e0588013b057f013a057a010c000000250304002d056701250560011d055b0119055a010c0000002503040002055501f8045601ef045801eb045a010c00000025030400d7046701d1046e01cc047601ca047a010c00000025030400c5049201c6049b01c804a401ca04a9010c00000025030400d704bc01de04c301e604c801eb04c9010c000000250304000205ce010b05cd011405cb011905c9010c000000250304002d05bc013305b5013805ad013a05a9011400000025030800f7029201f7028f01f6028b01f6028701f5028301f4028001f3027c01f2027b011400000025030800e5026701e4026601e1026401de026101db025f01d7025d01d4025b01d1025a011400000025030800ba025601b6025601b3025601af025701ab025801a7025901a4025a01a3025a0114000000250308008f0267018e0269018b026c0189026f0187027201850275018302790182027b0114000000250308007d0292017e0296017e029a017f029e017f02a1018002a5018202a9018202aa0114000000250308008f02bd019102bf019302c1019602c4019a02c6019d02c801a002c901a302ca011400000025030800ba02cf01be02cf01c202cf01c602ce01c902cd01cd02cc01d002cb01d102ca011400000025030800e502bd01e602bc01e902b901eb02b601ed02b301ef02b001f102ac01f202aa0108000000250302002303f3002f03f3000800000025030200e30265012303f30008000000250302002f03f3005d03f3000800000025030200bf018a02b4018a020800000025030200f2011c02bf018a02080000002503020088018a02bc018a020800000025030200de010003d201000308000000250302003f023c03de0100030800000025030200a5010003db0100030800000025030200e305fb02ef05fb02080000002503020087051b03e305fb020800000025030200ef05fb022506fb020800000025030200e9059b02f4059b02080000002503020091052d02e9059b020800000025030200f4059b0229069b0208000000250302004c05ff005705ff000800000025030200170559014c05ff0008000000250302005705ff008605ff000800000025030200df031001df031b010800000025030200df032601df0332010800000025030200df033d01df0348010800000025030200df035401df035f010800000025030200df036a01df0375010800000025030200df038101df038c010800000025030200f5031001f5031b010800000025030200f5032601f50332010800000025030200f5033d01f50348010800000025030200f5035401f5035f010800000025030200f5036a01f50375010800000025030200f5038101f5038c01030000000000

Dateiinhalt

10 20

112,90OK Fu

M1:100Längsschnitt 3-3:

a b

113,00OK Fu22

x P40

22x P40

1)

6)6)

1)

HEB 360 HEB 360

B

CA A

C

B

Page 57: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 57

Hexdump einer AutoCAD-WMF mit PowerWMFdd7cdc69a000000000000af076804c0000000000016540100090000032a1400004b0205020000000008000000fa020000040000008080800008000000fa020000040000000000000008000000fa020000020000000000000008000000fa020500010000000000000008000000fa020000060000000000000007000000fc02000000000000000007000000fc020000ffffff00000007000000fc0201000000000000001c000000fb020a000000000000009001000000000000000054696d6573204e657720526f6d616e00000000000000000000000000000000001c000000fb0292ff00000000000090010000000007020022417269616c204e6172726f7700000000000000000000000000000000000000001c000000fb021000070000000000bc02000000000102022253797374656d00000000000000000000000000000000000000000000000000001c000000fb02d9ff00000000000090010000000007020022417269616c204e6172726f7700000000000000000000000000000000000000001c000000fb02b1ff00000000000090010000000007020022417269616c204e6172726f7700000000000000000000000000000000000000001c000000fb02d9ff00008403840390010000000007020022417269616c204e6172726f77000000000000000000000000000000000000000005000000020101000000050000002e01180000000500000004010d0000000400000003010800050000000b0200000000050000000c026804af07050000000902fffffd00040000002d0108001500000021051e0053696d6f6e506965202d20574d46646174656e6b6f6d7072657373696f6e0a000a001600000021052000506c617474656e6265756c656e3b204b616d70666b726166747468656f72696514000a0018000000210524005a5253205a6965676572747c526f737761677c5365696c65722d496e67656e69657572651e000a00040000002d010000070000001804a4010401a0010001080000002503020023011e01df031e010800000025030200f5031e019d061e011800000025030a0023018701df0387019f0187019f01a2010201a20102015401fc005401d5005b01d5001001df0310011600000025030900f5031001eb061001eb065b01bd065401bd06a2012106a20121068701f50387019d068701040000002d0101000700000018041801530114014f01070000001804600153015c014f01070000001804a8015301a4014f01070000001804f0015301ec014f010700000018043802530134024f01070000001804800253017c024f01070000001804c8025301c4024f010700000018040f0353010b034f010700000018045703530153034f010700000018049f0353019b034f01070000001804e7035301e3034f010700000018042f0453012b044f0108000000250302005101de005101040108000000250302005101280151014c010800000025030200510170015101940108000000250302005101b8015101dc010800000025030200510100025101240208000000250302005101480251016c020800000025030200510190025101b40208000000250302005101d7025101fb02080000002503020051011f035101430308000000250302005101670351018b0308000000250302005101af035101d30308000000250302005101f70351011b04080000002503020051013f0451016504040000002d01000008000000250302003901a7013901af0108000000250302006701a7016701af010c000000250304007101b5017101af012e01af012e01b5010c000000250304007101a2017101a7012e01a7012e01a2010c000000250304007b01dd017b01b5012601b5012601df010c00000025030400df038c0123018c0123011a01df031a0108000000250302008606a7018606af0108000000250302005906a7015906af010c000000250304004e06b5014e06af019106af019106b5010c000000250304004e06a2014e06a7019106a7019106a2010c000000250304004506dd014506b5019906b5019906df01040000002d010100070000001804200171061c016d060700000018046801710664016d06070000001804b0017106ac016d06070000001804f8017106f4016d06070000001804400271063c026d060700000018048802710684026d06070000001804d0027106cc026d060700000018041703710613036d060700000018045f0371065b036d06070000001804a7037106a3036d06070000001804ef037106eb036d0608000000250302006f06de006f060c0108000000250302006f0630016f06540108000000250302006f0678016f069c0108000000250302006f06c0016f06e40108000000250302006f0608026f062c0208000000250302006f0650026f06740208000000250302006f0698026f06bc0208000000250302006f06df026f06030308000000250302006f0627036f064b0308000000250302006f066f036f06930308000000250302006f06b7036f06db0308000000250302006f06ff036f062d04040000002d010000070000001804a4012306a0011f060c00000025030400f5031a019d061a019d068c01f5038c01040000002d0101000a000000250303003f007203340272033402e5030a000000250303000d073803850537038505ad030e000000250305003f0040023f0065046c0265046c02e5033f00e5030e000000250305000d07ad034d05ad034d052d040d072d040d073b022000000025030e00000240020002db010801de010601e3010201e501fd00e301fc00de01fc005701d4005e01d400e3010d00e6010d00400200024002000211031c00000025030c00c105db01b806de01bb06e401c106e401c406e201c4065a01eb066001eb06df01ac07e201ac073b02c1053b02c105db010a00000025030300000211030f022d030f0272030c00000025030400c1053b02c105d902b405f702b4053703040000002d010700070000001804de00ab012800f600070000001804de00ca0628001406070000001b043c03640252030d03070000001b045203640269030d03040000002d0106000700000018041a03bb021603b7020c00000025030400b9023403bc023703ca023703ca023a030e00000025030500ca023a03a8023a03a8023703b5023703b80234031600000025030900b8023403b8021d03b5021a03a8021a03a8021803ca021803ca021a03bc021a03b9021d030800000025030200b9021a03b9023c030800000025030200c7021a03c70237030800000025030200aa021a03aa023703040000002d010200080000002503020081033c032a033c031200000025030700550325036403250355033c0347032503550325035503ee02ca03ee02040000002d0101000c00000025030400b102ff02b1020203c0020203c002ff020c00000025030400ad02fd02ad02ff02c402ff02c402fd020800000025030200a8021703a0021303040000002d0102000800000025030200bc02fd02bc02e9020800000025030200b502e902b502fd020800000025030200ae02e902c302e902040000002d0101000800000025030200c302fd02c302e2020800000025030200ae02e202ae02fd020a00000025030300b3020203b3020f03be020f030800000025030200be020203be020f030800000025030200bc021103bc020f030e00000025030500b5020f03b5021103b9021503bd021103c30217030e00000025030500ca02e202ca02fd02a802fd02a802e202ca02e2020c00000025030400a8021803a8021703ca021703ca0218030a00000025030300bd021103b4021103ae021703080000002503020019036900070569000700000018040a03bb020603b702070000001804c302bb02bf02b7020700000018047b02bb027702b7020700000018043302bb022f02b702070000001804eb01bb02e701b702070000001804a301bb029f01b7020700000018045b01bb025701b7020700000018041401bb021001b7020700000018040e0100050a01fc04070000001804560100055201fc040700000018049e0100059a01fc04070000001804e5010005e101fc040700000018042d0200052902fc04070000001804750200057102fc04070000001804bd020005b902fc04070000001804050300050103fc040800000025030200b902f702b902d3020800000025030200b902af02b9028b020800000025030200b9026702b90243020800000025030200b9021f02b902fb010800000025030200b902d701b902b3010800000025030200b9028f01b9026b010800000025030200b9024701b90224010800000025030200b9020001b902de000800000025030200fe04de00fe04fa000800000025030200fe041e01fe0442010800000025030200fe046601fe048a010800000025030200fe04ae01fe04d1010800000025030200fe04f501fe0419020800000025030200fe043d02fe0461020800000025030200fe048502fe04a9020800000025030200fe04cd02fe04f1020800000025030200fe041503fe043003040000002d010700070000001804de00eb0278008602070000001804de0031057800cb04070000001b043003a90447035305070000001b044703a9045e035305040000002d0106000700000018040e0300050a03fc0410000000250306000f052e03ed042e03ed042c03fc042c03fd042b03fd0429031800000025030a00fd042903fd041003fa040e03ed040e03ed040c030f050c030f050e0302050e03ff041003ff0411030c00000025030400ff041103ff042b030f052c030f052e0308000000250302000d050e030d052c030800000025030200ef040e03ef042c030c00000025030400f604f402f604f7020605f7020605f4020c00000025030400f304f102f304f4020905f4020905f1020800000025030200ed040c03e50408030c00000025030400fa040603fe040a030205060308050c03040000002d01020008000000250302000105f1020105de020800000025030200fb04de02fb04f1020800000025030200f404de020805de02040000002d0101000700000018040e03ef040a03eb040700000018040e0311050a030d0508000000250302000805f1020805d7020800000025030200f404d702f404f1020a00000025030300f804f702f80404030405040308000000250302000405f70204050403080000002503020001050603010504030800000025030200fb040603fb0404030e000000250305000f05d7020f05f102ed04f102ed04d7020f05d7020a0000002503030002050603f9040603f4040c03040000002d01020008000000250302003b04300393043003120000002503070067041a0358041a036704300375041a0367041a036704e302f603e302040000002d0101002000000025030e00a8029201a8028f01ca028f01ca029201ba029201b9029501b902b201bc02b501ca02b501ca02b801a802b801a802b501b502b501b802b2010c00000025030400b802b201b8029501b5029201a80292010800000025030200c702b501c70292010800000025030200aa02b501aa0292012000000025030e00ed049201ed048f010f058f010f05920100059201ff049301ff04b4010f05b5010f05b801ed04b801ed04b501fc04b501fd04b401fd04b2010a00000025030300fd04b201fd049301ed04920108000000250302000d05b5010d0592010800000025030200ef04b501ef049201040000002d010200040000002d010700070000001804dc02d402d502cd02070000001804dc02a402d5029d020800000025030200ae025b02c3025b02040000002d010600070000001804dc02c502d802c1020800000025030200c302ca02ae02da020800000025030200ae02b602c302c6020800000025030200c302a202ae02b2020800000025030200ae028e02c3029e020800000025030200c3027a02ae028a020800000025030200ae026602c30277020800000025030200b8025b02ae0263020800000025030200ae02ca02b102cc020800000025030200b502cf02b702d1020800000025030200ba02d302bc02d5020800000025030200c002d802c302da020800000025030200c302b602c002b8020800000025030200bc02bb02ba02bd020800000025030200b702bf02b502c1020800000025030200b102c402ae02c6020800000025030200ae02a202b102a5020800000025030200b502a702b702a9020800000025030200ba02ac02bc02ad020800000025030200c002b002c302b2020800000025030200c3028e02c00291020800000025030200bc029302ba0295020800000025030200b7029802b50299020800000025030200b1029c02ae029e020800000025030200ae027a02b1027d020800000025030200b5028002b70281020800000025030200ba028402bc0285020800000025030200c0028802c3028a020800000025030200c3026602c00269020800000025030200bc026c02ba026d020800000025030200b7027002b50271020800000025030200b1027402ae0277020800000025030200b9025b02ba025c020800000025030200bd025e02be025f020800000025030200c1026102c30263020800000025030200ae02dd02c302dd02040000002d0101000a00000025030300a802e202a8025502ca025502040000002d0102000800000025030200c302f701c002fa010800000025030200bc02fc01ba02fe010800000025030200b7020102b5020202040000002d0107000700000018040702d4020102cd020700000018040702a40201029d020a00000024030300ba020b02b7020b02b9020c020c00000025030400b1020502ae020702c3020702ae02f7010800000025030200ae02e301b102e6010800000025030200b502e901b702ea010800000025030200ba02ed01bc02ee010800000025030200c002f101c302f4010800000025030200ae02f401c302e301040000002d0101000c00000025030400b302e301b302f701be02f701be02e3010800000025030200ae02e301c302e301040000002d0102000800000025030200b202ba01b302bd010800000025030200b502bf01b702c0010800000025030200ba02c001bc02bf010800000025030200be02bd01bf02ba01040000002d0101000a00000025030300b202c401bf02c401bf02ba010800000025030200b202c401b202ba010800000025030200be02c401be02da010800000025030200b302c401b302da010c00000025030400be02c501ca02c501ca02c801be02c801040000002d0102000c00000024030400c702bf01c502be01c502c001c602c0010c00000024030400ad02bf01ab02be01ab02c001ac02c0010c00000025030400ca02ba01ca02bf01c402c201c002ba010e00000025030500a802ba01a802bf01aa02c201ad02c201b102ba01040000002d0101000e00000025030500ca02da01a802da01a8020e02ca020e02ca02da010c00000025030400b302c501a802c501a802c801b302c8010c00000025030400a802b801a802ba01ca02ba01ca02b801040000002d010300040000002d010600070000001b04e001a902f101cc02040000002d0102000700000018041002aa020c02a602070000001804ba01aa02b601a602070000001804ba01bb02b601b7020a00000025030300aa02e101b202e101ac02ef011a00000025030b00bb02e301bb02e201b602e201b502e401b502ed01bb02ed01bc02eb01bc02ea01b802e601b502e801b502ea011400000025030800c602e101c102e101c002e701c502e601c702e801c702ed01c002ee01c002ec0108000000250302000805ec010505ee0108000000250302000205f1010005f3010800000025030200fc04f501fa04f701040000002d01070010000000240306001905f9011905f7011305f7011305fa011705fc011905fa011000000024030600ea04f901e504f601e304f701e304fa01e804fc01e904fa010e00000024030500ff040002ff04ff01fd04ff01fd040002fe0401020c00000025030400f704fa01f404fc010805fc01f404ec010800000025030200f404d801f704da010800000025030200fa04dd01fc04df0108000000250302000005e1010205e30108000000250302000505e6010805e8010800000025030200f404e8010805d801040000002d0101000c00000025030400f804d801f804f7010405f7010405d8010800000025030200f404d8010805d8010800000025030200f804c4010405c401040000002d0102000a00000025030300f804ba01f804bc01f904bd010800000025030200fb04bf01fc04c00108000000250302000005c0010105bf010a000000250303000305bd010405bc010405ba01040000002d01010008000000250302000405cf010405ba010800000025030200f804cf01f804ba010c000000250304000405c5010f05c5010f05c8010405c801040000002d0102000e000000240305000c05bf010c05be010a05be010a05c0010c05c0010e00000024030500f204bf01f204be01f004be01f004c001f204c0010c000000250304000f05ba010f05bf010a05c2010605ba010c00000025030400ed04ba01ed04bf01f204c201f604ba01040000002d0101000e000000250305000f05cf01ed04cf01ed0403020f0503020f05cf010c00000025030400f804c501ed04c501ed04c801f804c8010c00000025030400ed04b801ed04ba010f05ba010f05b801040000002d010300040000002d010600070000001b04d401ee04e5011105040000002d0102000700000018040502ef040102eb04070000001804ba01ef04b601eb04070000001804ba010005b601fc041600000025030900f604d801f104d601ef04dc01ef04df01f304e401f604e201f604dd01f004dd01ef04df0116000000250309000105d801fc04d601fa04dc01fa04df01fe04e4010105e2010105dd01fb04dd01fa04df0116000000250309000b05d6010605d6010605dc010605db010b05db010d05de010d05e0010805e4010505e1010700000018041502bb021102b7020700000018042102c5021d02c1020800000025030200ae024702b9024f020800000025030200c3021b02c1021a020800000025030200be021802bd0217020800000025030200c3024702c10248020800000025030200be024b02bd024c020800000025030200ba024e02b8024f020a00000025030300ae021b02b9021302ba0215020800000025030200c3023302ae0243020800000025030200ae021f02c3022f020800000025030200ae022f02b1022d020800000025030200b5022a02b70229020800000025030200ba022602bc0224020800000025030200c0022102c3021f020800000025030200c3024302c00241020800000025030200bc023e02ba023c020800000025030200b7023a02b50238020800000025030200b1023502ae023302040000002d0101000800000025030200c302e202c302da010800000025030200ae02da01ae02e202040000002d0102000800000025030200ae021402c30214020800000025030200c3024f02ae024f02040000002d0101000800000025030200a8020e02a80255020800000025030200ca020e02ca02e202040000002d010200040000002d010700070000001804d0021905ca021205070000001804d002ea04ca02e3040800000025030200f4044f0208054f02040000002d010600070000001804d1020a05cd02060508000000250302000805bf02f404cf020800000025030200f404ab020805bb02080000002503020008059702f404a7020800000025030200f404830208059302080000002503020008056f02f4047f020800000025030200f4045b0208056b020800000025030200f404bf02f704c1020800000025030200fa04c402fc04c50208000000250302000005c8020205c90208000000250302000505cc020805cf0208000000250302000

Page 58: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 58

805ab020505ad0208000000250302000205b0020005b1020800000025030200fc04b402fa04b6020800000025030200f704b802f404bb020800000025030200f4049702f70499020800000025030200fa049c02fc049d0208000000250302000005a0020205a20208000000250302000505a4020805a7020800000025030200080583020505850208000000250302000205880200058a020800000025030200fc048c02fa048e020800000025030200f7049102f40493020800000025030200f4046f02f70471020800000025030200fa047402fc04760208000000250302000005780202057a02080000002503020005057d0208057f02080000002503020008055b0205055d02080000002503020002056002000562020800000025030200fc046502fa0466020800000025030200f7046902f4046b020a0000002503030000055102fe044f02f404570208000000250302000205530204055402080000002503020006055602080557020800000025030200f404d1020805d1020700000018040a0200050602fc0407000000180416020a051202060508000000250302000805100206050f02080000002503020004050d0202050b02080000002503020008053c0206053d02080000002503020004053f02020540020a0000002503030000054202fe044402f4043c020a00000025030300f4041002fe04080200050902080000002503020008052802f40438020800000025030200f4041402080524020800000025030200f4042402f70421020800000025030200fa041f02fc041d02080000002503020000051a02020519020800000025030200050516020805140208000000250302000805380205053502080000002503020002053302000531020800000025030200fc042e02fa042d020800000025030200f7042a02f4042802040000002d01010008000000250302000805d7020805cf010800000025030200f404cf01f404d702040000002d0102000800000025030200f404090208050902080000002503020008054402f4044402040000002d0101000e00000025030500ed040302ed04d7020f05d7020f054a02ed044a0208000000250302000f0503020f054a02040000002d01040008000000250302009b02f9019b020b0208000000250302009b0222029b02380208000000250302009b024f029b02660208000000250302009b027c029b02930208000000250302009b02a9029b02c00208000000250302009b02d7029b02e8020800000025030200d602fa01d6020b020800000025030200d6022202d60239020800000025030200d6024f02d60266020800000025030200d6027d02d60293020800000025030200d602aa02d602c1020800000025030200d602d702d602e8020800000025030200e104ee01e10400020800000025030200e1041602e1042d020800000025030200e1044402e1045a020800000025030200e1047102e10488020800000025030200e1049e02e104b5020800000025030200e104cb02e104dd0208000000250302001b05ef011b05000208000000250302001b0517021b052d0208000000250302001b0544021b055b0208000000250302001b0571021b05880208000000250302001b059f021b05b50208000000250302001b05cc021b05dd02040000002d010100040000002d0107000c00000024030400ee01db01ca01dc01ca01d901ee01d8010e00000025030500e101d901e101c601d601c701d601d901e101d9010e00000025030500b102a401b302ad01cf01d201ce01c901b102a4010c00000024030400d205db01f605dc01f605d901d205d8010e00000025030500de05d901df05c601e905c701e905d901de05d9010e000000250305000305a3010205ab01f005d201f205c9010305a301040000002d0102000a00000025030300b00229038d021903770219030a00000025030300fb025c03380387034e0387030a00000025030300b504520371046e035a046e030a0000002503030004052303440506035a0506030a00000025030300c302a301f802c1010e03c1010a00000025030300f704a101d704b301c004b3010a00000025030300ba02bf01ba02b501b1029101080000002503020097026a016f024f010a00000025030300410246013702460113024f010a00000025030300eb016a01d6018601d10191010a00000025030300c801bf01c801c901d101ee010800000025030200eb011502130230020800000025030200410239026f0230020a0000002503030097021502ac02f901b102ee010a0000002503030032033c033203320329030d030a000000250303000e03e602f202d102e702cc020800000025030200b902c2028a02cc020a000000250303006302e60249020b0349020d030a00000025030300630292037f02a7038a02ac030a00000025030300b902b503c302b503e702ac0308000000250302000e03920329036a030a0000002503030088052e03880522037f0500030a000000250303006505d8024c05c5023d05be020a000000250303000f05b5020205b502e104be020a00000025030300b904d802a604f1029f0400030a0000002503030096042e0396043b039f045d030a00000025030300b9048403d2049703e1049e030a000000250303000f05a8033405a2033d059e030800000025030200650584037f055d030a00000025030300f405b601ee059001ea0587010a00000025030300d0056001b7054c01a90546010a000000250303007a053c01550542014c0546010a0000002503030025056001110579010a05870108000000250302000105b6010a05e4010a0000002503030025050b023e051f024c05260208000000250302007a052f02a90526020a00000025030300d0050b02e405f201ea05e4010a000000250303003e0592013e0588013a057a0108000000250302002d05670119055a01080000002503020002055501eb045a010800000025030200d7046701ca047a010800000025030200c5049201ca04a9010a00000025030300d704bc01e604c801eb04c90108000000250302000205ce011905c90108000000250302002d05bc013a05a9010e00000025030500f7029201f7028f01f6028b01f6028701f2027b010800000025030200e5026701d1025a010a00000025030300ba025601b3025601a3025a0108000000250302008f02670182027b0112000000250307007d0292017e0296017e029a017f029e017f02a1018202a9018202aa0108000000250302008f02bd01a302ca010a00000025030300ba02cf01c202cf01d102ca010800000025030200e502bd01f202aa010a00000025030300e30265012303f3005d03f3000a00000025030300f2011c02bf018a0288018a020c00000025030400a5010003de0100033f023c0349026a030a0000002503030087051b03e305fb022506fb020a0000002503030091052d02e9059b0229069b020a00000025030300170559014c05ff008605ff000800000025030200df031001df031b010800000025030200df032601df0332010800000025030200df033d01df0348010800000025030200df035401df035f010800000025030200df036a01df0375010800000025030200df038101df038c010800000025030200f5031001f5031b010800000025030200f5032601f50332010800000025030200f5033d01f50348010800000025030200f5035401f5035f010800000025030200f5036a01f50375010800000025030200f5038101f5038c01040000002d010000040000002d01000005000000090200000000040000002d01090007000000210502003130af001d0107000000210502003230af003b06040000002d010b0009000000210506003131322c3930e602580309000000210505004f4b20467500be02580309000000210506004d313a31303091001903040000002d010c000f000000210511004ce46e67737363686e69747420332d333a005800190307000000210501006100c600a60207000000210501006200c600ec04040000002d010b0009000000210506003131332c3030da02030409000000210505004f4b20467500b2020604040000002d010d000a000000210507003232782050343000b60204030a000000210507003232782050343000ab02d404040000002d010b000700000021050200312924034f020700000021050200362992035803070000002105020036297903300407000000210502003129110362050a000000210507004845422033363000d00116030a000000210507004845422033363000c2012004040000002d010c0007000000210501004200e8003503070000002105010043008a02840107000000210501004100f502a40107000000210501004100f002f905070000002105010043009a02fc0507000000210501004200f5005d050300000000000d0a

DateiinhaltSimonPie - WMFdatenkompressionPlattenbeulen; Kampfkrafttheorie

10 20

112,90OK Fu

M1:100Längsschnitt 3-3:

a b

113,00OK Fu22

x P40

22x P40

1)

6)6)

1)

HEB 360 HEB 360

B

CA A

C

B

Page 59: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 59

bildliche Darstellung des HexdumpPlaceableHeader

WMFHeader

FontText

FontText

FontText

Textabdecken

EckigeEllipse

EckigeEllipse

doppelteLinie

doppelteLinie

doppelteLinie

doppelteLinie

überlappendeLinie

überlappendeLinie

schlechtsichtbarePixel

schlechtsichtbarePixel

schlechtsichtbarePixel

2-PunktPolylinien

2-PunktPolylinien

2-PunktPolylinien

2-PunktPolylinien

2-PunktPolylinien

berührendePolylinien

berührendePolylinien

zerrisseneSchraffuren

zerrisseneSchraffuren Polygon

Mapmode ungenutztePalette

viereckigeDreiecke

rechteckigeFünfecke

Polylinie mitZwischenpunkte

Page 60: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 60

FontText

FontText

FontText

FontText

Textabdecken

Textabdecken

EckigeEllipse

doppelteLinie

doppelteLinie

doppelteLinie

doppelteLinie

überlappendeLinie

überlappendeLinie

überlappendeLinie

schlechtsichtbarePixel

schlechtsichtbarePixel

schlechtsichtbarePixel

schlechtsichtbarePixel

2-PunktPolylinien

2-PunktPolylinien

berührendePolylinien

berührendePolylinien berührende

Polylinien

verbundenePolylinie

verbundenePolylinie

verbundenePolylinie

zerrisseneSchraffuren

Polygon

EckigeEllipse

viereckigeDreiecke

rechteckigeFünfecke

Page 61: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 61

FontText

FontText

FontText

FontText

FontText

FontText

Textabdecken

Textabdecken

EckigeEllipse

EckigeEllipse

doppelteLinie

doppelteLinie

überlappendeLinie

überlappendeLinie

schlechtsichtbarePixel

schlechtsichtbarePixel

2-PunktPolylinien

2-PunktPolylinien

berührendePolylinien

berührendePolylinien

berührendePolylinien

zerrisseneSchraffurenPolygon

Polygon

Polygon

rechteckigeFünfecke

Page 62: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 62

EoF

FontText

FontText

FontText

Textabdecken

Textabdecken

EckigeEllipse

EckigeEllipse

EckigeEllipse

EckigeEllipse

doppelteLinie

doppelteLinie

doppelteLinie

überlappendeLinie

überlappendeLinie

überlappendeLinie

überlappendeLinie

überlappendeLinie

überlappendeLinie

schlechtsichtbarePixel

schlechtsichtbarePixel

schlechtsichtbarePixel

schlechtsichtbarePixel

schlechtsichtbarePixel

2-PunktPolylinien

2-PunktPolylinien

berührendePolylinien berührende

Polylinien

verbundenePolylinie

verbundenePolylinie

zerrisseneSchraffuren

Polygon

Polygon

viereckigeDreiecke

Polylinie mitZwischenpunkte

Polylinie mitZwischenpunkte

Page 63: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 63

bildliche Darstellung des Hexdump mit PowerWMF

PlaceableHeader

WMFHeader

SchriftartenverweiseFont FontFont FontFont Font

RundeEllipse

RundeEllipse

RundeEllipse

RundeEllipse

RundeEllipse

gutsichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

2-PunktPolylinien

2-PunktPolylinien

2-PunktPolylinien

2-PunktPolylinien

2-PunktPolylinien

berührendePolylinien

doppelteLinie

überlappendeLinie

verbundenePolylinie

verbundenePolylinie verbundene

Polylinie

verbundenePolylinie

verbundenePolylinie

teilverbundeneSchraffuren

teilverbundeneSchraffuren

teilverbundeneSchraffuren

2-PunktPolylinien

2-PunktPolylinien

Polygon

Polygon

Polygon

Polygon Polygon

Textabdecken= unsichtbar

Mapmode

dreieckigeDreiecke

dreieckigeDreiecke

rechteckigeRechtecke

rechteckigeRechtecke

Text:Simon Pie

Polylinie ohneZwischenpunkte

Polylinie ohneZwischenpunkte

Page 64: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 64

EoF

Text Text

Text

TextText TextText TextText

Text TextText TextText TextText

Textabdecken Textabdecken Textabdecken Textabdecken Textabdecken Textabdecken

RundeEllipse

RundeEllipseRunde

Ellipse

RundeEllipse

RundeEllipse

überlappendeLinie

überlappendeLinie

gutsichtbareKreislein

gutsichtbareKreislein gut

sichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

gutsichtbareKreislein

2-PunktPolylinien

2-PunktPolylinien

berührendePolylinien

verbundenePolylinie

verbundenePolylinie

verbundenePolylinie verbundene

Polylinie

verbundenePolylinie

teilverbundeneSchraffuren

teilverbundeneSchraffuren

2-PunktPolylinien

Polygon Polygon

rechteckigeRechtecke

Polylinie ohneZwischenpunkte

Page 65: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 65

InstallationsanleitungZuerst drückt man Alt 11, um den VBA Editor zu öffnen.

Auf der linken Seite wird der Projektexplorer angezeigt. Fehlt dieser, so klickt man auf Ansicht, dann Projekt-Explorer, oder Strg R. Dort gibt es 2 Möglichkeiten, wo die Makros gespeichert werden können. Die eine ist die Normal.dot und die andere Möglichkeit ist die Makros das Dokument zu speichern. Die Makros sollen in die Normal.dot rein, damit sie in jedem Dokument nutzbar sind. Deshalb Rechtsklick, Einfügen, Modul.

Dann Kopiert man den Code von den Kapiteln Zubehör und Hauptmakro in das rechte weiße Fenster.

Den VBA-Editor kann man nun schließen. Die Makros können nun schon unbequem benutzt werden.

Option Explicit

Function Klammer(ByVal a As String) As Integer'Version vom 20.2.2016If a = "(" ThenKlammer = 1ElseIf a = ")" ThenKlammer = -1ElseIf a = "" ThenKlammer = 17000ElseKlammer = 0End If

End Function

Function Klammer2(ByVal a As String) As Integer

If a = "{" ThenKlammer2 = 1ElseIf a = "}" ThenKlammer2 = -1ElseIf a = "" ThenKlammer2 = 17000ElseKlammer2 = 0End If

End Function

Function Steuerzeichen(ByVal a As String) As Integer

Select Case a

Page 66: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 66

Dann klickt oben links auf das Symbol und danach auf Wordoptionen unten rechts.

Man klickt links in der Leiste auf Anpassen. Dann klickt man rechts unten neben Tastenkombination Anpassen.

Page 67: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 67

In diesem Fenster scollt man die linke Seite ganz nach unten, bis das Wort Makros zu lesen ist.

Man klickt auf Makros und auf der rechten Seite erscheinen dann die Makros. Dem Makro PowerWMFeinfügen kann nun eine Tastenkombination gegeben werden. Die Makros des Formelumwandlers benötigen auch eine Tastenkombination, damit Word zum schnellen Taschenrechner wird. Fertig.

Folgende Tabelle beschreibt, was welches Makro macht und welches eine Tastenkombination benötigt. Das Tastenkürzel darf frei gewählt werden.Fett markiert sind Makros zum Benutzen und nicht Fett sind Funxionen, die Bestandteile von Makros sind.Makroname Beschreibung Tastenkürzelausrechnen Rechnet das Ergebnis aus Strg+A, 1Checksumme Berechnet die Checksumme des WMF-HeaderDateieinlesen liest eine Datei in einem String einDNApolymerase Wandelt eine Formel von Elementar zu Chick umDNAse Wandelt eine Formel von Chick zu Elementar umFormelwürfel Würfelt eine zufällige große FormelIstZahl prüft, ob ein Zeichen ein Zeichen einer Zahl ist

KKTformelumwandler erhöht das Formellevel Strg++KKTfurmelumwandler senkt das Formellevel Strg+-Klammer; Klammer2 prüft, ob das Zeichen eine Klammer istMakrozählen führt eine Statistik, wie oft welches Makro benutzt wurdePolyglätten Glättet Polylinien und erkennt Ellipsen und abgerundete Rechtecke

PowerWMFeinfügen Titel von diesem DokumentFügt eine WMF-Datei in Word ein und komprimiert diese

Strg+A,6

Reversetranslatase Wandelt eine Formel von Wikipedia zu EQ-Feld umReversetranskriptase Wandelt eine Formel von EQ-Feld zu Chick umRibosom Wandelt eine Formel von EQ-Feld zu Wikipedia umRibozym Erweitert EQ-Felder um große Summen und Quadrate

Page 68: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 68

RNApolymerase Wandelt eine Formel von Chick zu EQ-Feld umStarten Startet FormelumwandlermakrosSteuerzeichen prüft, ob ein Zeichen eine mathematische Bedeutung hattRNA Entfernt große Summen und Quadrate in EQ-FeldernTyp Ermittelt, welcher Formeltyp markiert ist

vausrechnen verbessertes Ausrechnen, bei dem das Ergebnis daneben geschrieben wird

Strg+A, 2

WmfZahl Wandelt eine Zahl in ein Doppelbyte um, die in der WMF diese Zahl bedeutetWmfZeichen Wandelt ein Doppelbyte in eine Zahl um

Zeicheneinkreisen Kreist ein Zeichen ein Strg+5

Da häufig auch griechische Buchstaben eingetippt werden müssen, klickt man auf Einfügen, dann Symbol. Jedem griechischem Zeichen kann eine Tastenkombination zugewiesen werden.

Page 69: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 69

Der CodeZubehörIm Zubehör sind notwendige Makroteile für PowerWMFeinfügen enthalten. Zusätzlich befindet sich dort der Formelumwandler.

Function Klammer(ByVal a As String) As Integer'Version vom 9.1.2016If a = "(" ThenKlammer = 1ElseIf a = ")" ThenKlammer = -1ElseIf a = "" ThenKlammer = 17000ElseKlammer = 0End IfEnd Function

Function Klammer2(ByVal a As String) As IntegerIf a = "{" ThenKlammer2 = 1ElseIf a = "}" ThenKlammer2 = -1ElseIf a = "" ThenKlammer2 = 17000ElseKlammer2 = 0End IfEnd Function

Function Steuerzeichen(ByVal a As String) As IntegerSelect Case aCase "+", "-", "*", "·", "/", ")", "(", "^", "_", "=", ChrW(8729), ChrW(8211)Steuerzeichen = 1Case ""Steuerzeichen = 17000Case ElseSteuerzeichen = 0End SelectEnd Function

Function IstZahl(ByVal a As String) As IntegerSelect Case aCase "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ","IstZahl = 1Case ""IstZahl = 17000Case ElseIstZahl = 0End SelectEnd Function

Function Typ() As IntegerDim Länge, aktuellZeichen, c, d, e As IntegerDim Formel, Tz As String

If Selection.Fields.Count = 1 Then Formel = Selection.Fields(1).Code Typ = 0 'Elementar (Berechnungsfeld) For c = 1 To 3 Tz = Mid(Formel, c, 3) If Tz = "EQ " Then Typ = 2 'EQ Feld End If Next Exit FunctionEnd If

Formel = SelectionLänge = Len(Formel)For c = 1 To 3 Tz = Mid(Formel, c, 8) If Tz = ":<math> " Then Typ = 3 'Wikipedia Exit Function End If Tz = Mid(Tz, 1, 3)

Page 70: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 70

If Tz = "EQ " Then Typ = 2 'EQ Feld Exit Function End IfNext

d = 0 'elementare Zeichene = 0 'chicke ZeichenFor aktuellZeichen = Länge To 1 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) Select Case Tz Case "^", "_", "*" d = d + 1 Case "²", "³", "·", ChrW(8729) e = e + 1 End SelectNextIf Selection.Font.Superscript = False Thend = d + 0Elsee = e + 1End If

If d = 0 And e = 0 Then Typ = -1 'elementar = chickIf d = 0 And e <> 0 Then Typ = 1 'chickIf d <> 0 And e = 0 Then Typ = 0 'elementarIf d <> 0 And e <> 0 Then Typ = 10 'elementarchick

End Function

Function Starten() As StringDim Länge, aktuellZeichen, Klammersumme, Formeltyp, c, d, e As IntegerDim Formel, Tz As String

If Selection.Fields.Count = 1 Then Formel = Selection.Fields(1).Code Else Formel = Selection Länge = Len(Formel) If Länge = 1 Then 'markiert bis zum ende Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend Formel = Selection Länge = Len(Formel) End If If Länge = 1 Then ' markiert bei Fehlschlag bis zum Tab oder = Selection.HomeKey Unit:=wdLine, Extend:=wdExtend Formel = Selection Länge = Len(Formel) d = 0 For e = Länge To 1 Step -1 Tz = Mid(Formel, e, 1) If Asc(Tz) = 9 Or Asc(Tz) = 61 Then Tz = Mid(Formel, e + 1, 1) If Tz = " " Then d = d - 1 Exit For End If d = d + 1 Next Selection.Collapse Selection.MoveRight Unit:=wdCharacter, Count:=Länge - d Selection.MoveRight Unit:=wdCharacter, Count:=d, Extend:=wdExtend End IfEnd If

Tz = Right(Formel, 1) 'prüft, ob rechts ein Absatz istc = Asc(Tz)If c = 11 Or c = 13 Then Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend Formel = Selection If Länge - Len(Formel) = -1 Then Länge = Len(Formel) Selection.Collapse Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=Länge - 2, Extend:=wdExtend End IfEnd IfTz = Left(Formel, 1) 'prüft, ob links ein Absatz istc = Asc(Tz)If c = 11 Or c = 13 Then Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend

Page 71: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 71

Formel = Selection If Länge - Len(Formel) = -1 Then Länge = Len(Formel) Selection.Collapse Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=Länge - 2, Extend:=wdExtend End IfEnd If

'Sicherung gegen KlammernKlammersumme = 0Länge = Len(Formel)For aktuellZeichen = 1 To Länge Tz = Mid(Formel, aktuellZeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) + Klammer2(Tz) If Klammersumme < 0 Then Exit ForNextIf Klammersumme <> 0 Thenc = MsgBox("Es sind " & Klammersumme & " Klammern zuviel", vbCritical, "Warnung")Starten = " "Exit FunctionEnd If

Starten = Formel

End Function

Sub ausrechnen()Dim Länge, aktuellZeichen, Klammersumme, Formeltyp, c, d, e As IntegerDim Formel, Tz As String

Application.ScreenUpdating = FalseFormel = Starten()If Formel = " " Then Exit SubFormeltyp = Typ()

c = Makrozählen("KKTausrechnen ")

'Reversetranslatase und RNApolymerase können eine (1) in Klammern haben'Dadurch erzeugen sie ein EQ-Feld ohne Feld und sind damit schneller

'senkt den Formeltyp auf elementarSelect Case Formeltyp Case 3 d = Reversetranslatase(1) + Reversetransskriptase() + DNAse() Case 2 d = Reversetransskriptase() + DNAse() Case 1, 10 d = DNAse() Case 0, -1 d = 0End SelectSelection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=FalseSelection.TypeText Text:="= "Selection.Fields.ToggleShowCodesSelection.Fields.Update

Application.ScreenUpdating = True

End Sub

Sub vausrechnen()Dim Länge, aktuellZeichen, Klammersumme, Formeltyp, c, d, e As IntegerDim Formel, Tz As String

Application.ScreenUpdating = FalseFormel = Starten()If Formel = " " Then Exit SubFormeltyp = Typ()

c = Makrozählen("vKKTausrechnen ")

'senkt den Formeltyp auf elementarSelect Case Formeltyp Case 3 d = Reversetranslatase(1) + Reversetransskriptase() + DNAse() Case 2 d = Reversetransskriptase() + DNAse() Case 1, 10 d = DNAse()

Page 72: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 72

Case 0, -1 d = 0End SelectFormel = SelectionLänge = Len(Formel)Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=FalseSelection.TypeText Text:="= "Selection.Fields.ToggleShowCodesSelection.Fields.Update

Selection.TypeText (Formel) & "=" & Chr(32)Selection.MoveLeft Unit:=wdCharacter, Count:=2Selection.MoveLeft Unit:=wdCharacter, Count:=Länge, Extend:=wdExtend

'stellt wahrscheinlich das EQ-Feld wieder herc = 0For aktuellZeichen = Länge - 2 To 1 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) If Tz = "/" Then c = 1 Exit For End IfNextIf c = 0 Then For aktuellZeichen = Länge - 3 To 1 Step -1 Tz = Mid(Formel, aktuellZeichen, 3) If Tz = "0,5" Or Tz = "^1/" Then c = 1 Exit For End If NextEnd IfIf c = 1 Thend = DNApolymerase() + RNApolymerase(0)Elsed = DNApolymerase()End If

Application.ScreenUpdating = True

End Sub

Sub KKTformelumwandler()'erhöht den FormeltypDim Länge, aktuellZeichen, Klammersumme, Formeltyp, c, d, e As IntegerDim Formel, Tz As String

Application.ScreenUpdating = FalseFormel = Starten()If Formel = " " Then Exit Sub

c = Makrozählen("KKTformelumwandler+ ")

Formeltyp = Typ()Länge = Len(Formel)Select Case Formeltyp Case -1, 10 d = DNApolymerase() + RNApolymerase(0) Case 1 d = RNApolymerase(0) Case 2 d = Ribosom() Case 3 d = Reversetranslatase(1) + Reversetransskriptase() + DNAse() Case 0 Formel = Selection c = 0 For aktuellZeichen = Länge - 2 To 1 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) If Tz = "/" Then c = 1 Exit For End If Next If c = 0 Then For aktuellZeichen = Länge - 3 To 1 Step -1 Tz = Mid(Formel, aktuellZeichen, 3) If Tz = "0,5" Or Tz = "^1/" Then c = 1 Exit For

Page 73: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 73

End If Next End If If c = 1 Then d = DNApolymerase() + RNApolymerase(0) Else d = DNApolymerase() End IfEnd SelectApplication.ScreenUpdating = True

End Sub

Sub KKTfurmelumwandler()'senkt den FormeltypDim Länge, aktuellZeichen, Klammersumme, Formeltyp, c, d, e As IntegerDim Formel, Tz As String

Application.ScreenUpdating = FalseFormel = Starten()If Formel = " " Then Exit Sub

c = Makrozählen("KKTfurmelumwandler- ")

Formeltyp = Typ()Select Case Formeltyp Case 3 d = Reversetranslatase(0) Case 2 d = Reversetransskriptase() Case 1, 10 d = DNAse() Case 0, -1 d = DNApolymerase() + RNApolymerase(1) + Ribosom()End SelectApplication.ScreenUpdating = True

End Sub

Function Ribozym() As IntegerDim Formel$, Teilformel$, Tz$, Tx As StringDim Länge%, TxLänge%, aktuellZeichen%, Endzeichen%, Klammersumme%, c%, d As IntegerDim Ersetzbar%, Ersetzlänge As IntegerDim Ersetzen As String

'großes QuadratFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge - 3 To 3 Step -1Tz = Mid(Formel, aktuellZeichen, 2)If Tz = "\b" Or Tz = "\B" Then Klammersumme = 1 Endzeichen = aktuellZeichen + 3 While Klammersumme <> 0 Tx = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tx) Endzeichen = Endzeichen + 1 Wend TxLänge = Endzeichen - aktuellZeichen - 4 Teilformel = Mid(Formel, aktuellZeichen + 3, TxLänge) Ersetzbar = 0 For c = 1 To TxLänge - 2 Tx = Mid(Teilformel, c, 3) If Tx = "\f(" Or Tx = "\F(" Then Ersetzbar = Ersetzbar + 1 Next Ribozym = Ersetzbar Ersetzen = "" If Ersetzbar > 0 And Endzeichen < Länge + 1 Then Tx = Mid(Formel, Endzeichen, 1) If Tx = "²" Then Ersetzen = "2" If Tx = "³" Then Ersetzen = "3" If Ersetzen = "" Then If Selection.Characters(Endzeichen).Font.Superscript = True Then Ersetzlänge = 0 For d = Endzeichen To Länge Ersetzlänge = Ersetzlänge + 1 If Selection.Characters(d).Font.Superscript = False Then Ersetzlänge = Ersetzlänge - 1 Exit For End If Selection.Characters(d).Font.Superscript = False

Page 74: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 74

Next Ersetzen = Selection.Characters(Endzeichen + Ersetzlänge - 1) & ")" Selection.Characters(Endzeichen + Ersetzlänge - 1).InsertBefore Ersetzen Selection.Characters(Endzeichen + Ersetzlänge + 1) = "" Selection.Characters(Endzeichen).InsertBefore "\s\up9(" End If Else Ersetzen = "\s\up9(" & Ersetzen & ")" Selection.Characters(Endzeichen).InsertBefore Ersetzen Selection.Characters(Endzeichen + 9) = "" End If End IfEnd IfNext

'chicke SummeFormel = SelectionLänge = Len(Formel)Ersetzbar = 0Klammersumme = 0For aktuellZeichen = Länge To 3 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Tz = "+" Or Tz = "-" Then If Klammersumme = 0 Then If Selection.Characters(aktuellZeichen).Font.Superscript = False And Selection.Characters(aktuellZeichen).Font.Subscript = False Then Ersetzbar = Ersetzbar + 1 End If End If End IfNextRibozym = Ribozym + ErsetzbarIf Ersetzbar > 2 Then Ersetzen = Selection.Characters(Länge) & "))" Selection.Characters(Länge).InsertBefore Ersetzen Selection.Characters(Länge + 3) = "" For aktuellZeichen = Länge To 3 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Tz = "+" Or Tz = "-" Then If Klammersumme = 0 Then If Selection.Characters(aktuellZeichen).Font.Superscript = False And Selection.Characters(aktuellZeichen).Font.Subscript = False Then If Tz = "+" Then Selection.Characters(aktuellZeichen) = ";" d = 0 ElseIf Tz = "-" Then Selection.Characters(aktuellZeichen).InsertBefore ";" d = 1 End If Tx = Mid(Formel, aktuellZeichen + 1, 1) If Tx = " " Then Selection.Characters(aktuellZeichen + 1 + d) = "" Tx = Mid(Formel, aktuellZeichen - 1, 1) If Tx = " " Then Selection.Characters(aktuellZeichen - 1) = "" End If End If End If Next Selection.Characters(4).InsertBefore "\b(\A(" Selection.Characters(4).InsertBefore ChrW(931) d = Selection.Characters(4).Font.Size d = d * 2 Selection.Characters(4).Font.Size = dEnd If

End Function

Function tRNA() As IntegerDim Formel$, Teilformel$, Tz$, Tx As StringDim Länge%, TxLänge%, aktuellZeichen%, Endzeichen%, Klammersumme%, c%, d As IntegerDim Ersetzbar%, Ersetzlänge As IntegerDim Ersetzen As String

'große Summe entfernenIf Selection.Characters(4) = ChrW(931) ThenFormel = SelectionLänge = Len(Formel) Selection.Characters(Länge) = "" Selection.Characters(Länge - 1) = ""Tx = Mid(Formel, 5, 6)

Page 75: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 75

If Tx = "\b(\A(" Then Klammersumme = 0 For aktuellZeichen = Länge To 3 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Tz = ";" Then If Klammersumme = -2 Then If Selection.Characters(aktuellZeichen).Font.Superscript = False And Selection.Characters(aktuellZeichen).Font.Subscript = False Then Tx = Mid(Formel, aktuellZeichen + 1, 1) If Tx = "-" Then Selection.Characters(aktuellZeichen) = "" Else Selection.Characters(aktuellZeichen) = "+" End If End If End If End If Next For c = 1 To 7 Selection.Characters(4) = "" NextEnd IfEnd If

'große Quadrate entfernenFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge - 8 To 3 Step -1 Tz = Mid(Formel, aktuellZeichen, 7) If Tz = "\s\up9(" Then Tz = Mid(Formel, aktuellZeichen + 7, 2) If Tz = "2)" Then Selection.Characters(aktuellZeichen + 7) = "²" Selection.Characters(aktuellZeichen + 8) = "" ElseIf Tz = "3)" Then Selection.Characters(aktuellZeichen + 7) = "³" Selection.Characters(aktuellZeichen + 8) = "" Else Klammersumme = 1 For c = aktuellZeichen + 7 To Länge Tx = Mid(Formel, c, 1) Klammersumme = Klammersumme + Klammer(Tx) If Klammersumme = 0 Then Exit For Else Selection.Characters(c).Font.Superscript = True End If Next Selection.Characters(c) = "" End If For c = 1 To 7 Selection.Characters(aktuellZeichen) = "" Next End IfNext

End Function

Function DNApolymerase() As Integer'Elementar zu chickDim Länge, Verkürzung, Endzeichen, aktuellZeichen, Klammersumme, c, d As IntegerDim Zeichen, Formel, Tz As String

DNApolymerase = 1

'Tauscht ^2 und ^3 gegen ² und ³ ausFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge - 1 To 2 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "^" ThenZeichen = Mid(Formel, aktuellZeichen + 2, 1)If IstZahl(Zeichen) = 0 Then If Selection.Characters(aktuellZeichen + 1) = "2" Then Selection.Characters(aktuellZeichen) = "²" Selection.Characters(aktuellZeichen + 1) = "" ElseIf Selection.Characters(aktuellZeichen + 1) = "3" Then Selection.Characters(aktuellZeichen) = "³" Selection.Characters(aktuellZeichen + 1) = "" End If

Page 76: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 76

End IfEnd IfNext

' Ersetzt * durch ·Formel = SelectionLänge = Len(Formel)aktuellZeichen = 1For aktuellZeichen = Länge - 1 To 2 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "*" ThenSelection.Characters(aktuellZeichen) = "·"End IfNext

'stellt hochtiefaktuellZeichen = 1For aktuellZeichen = Länge - 1 To 2 Step -1Verkürzung = 0Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "^" Then d = 1 ElseIf Tz = "_" Then d = -1 Else d = 0End IfIf d <> 0 Then Tz = Mid(Formel, aktuellZeichen + 1, 1) If Tz = " " Then Selection.Characters(aktuellZeichen + 1) = "" Formel = Selection Tz = Mid(Formel, aktuellZeichen + 1, 1) End If Selection.Characters(aktuellZeichen) = "" '+1 im string If Tz = "(" Then Klammersumme = 1 Selection.Characters(aktuellZeichen) = "" While Klammersumme > 0 If d = 1 Then Selection.Characters(aktuellZeichen).Font.Superscript = True ElseIf d = -1 Then Selection.Characters(aktuellZeichen).Font.Subscript = True End If aktuellZeichen = aktuellZeichen + 1 Verkürzung = Verkürzung + 1 Tz = Mid(Formel, aktuellZeichen + 2, 1) Klammersumme = Klammersumme + Klammer(Tz) If Tz = "^" Then Selection.Characters(aktuellZeichen).InsertBefore Tz d = 0 ElseIf Tz = "_" Then Selection.Characters(aktuellZeichen).InsertBefore Tz d = 0 End If Wend Selection.Characters(aktuellZeichen) = "" aktuellZeichen = aktuellZeichen - Verkürzung Else 'Tz <> "(" Tz = Mid(Formel, aktuellZeichen + 1, 1) c = 0 While c = 0 If d = 1 Then Selection.Characters(aktuellZeichen).Font.Superscript = True Else Selection.Characters(aktuellZeichen).Font.Subscript = True End If aktuellZeichen = aktuellZeichen + 1 Verkürzung = Verkürzung + 1 Tz = Mid(Formel, aktuellZeichen + 1, 1) c = Steuerzeichen(Tz) If Tz = "²" Or Tz = "³" Then c = 1 If Tz = "" Then c = 1 End If Wend aktuellZeichen = aktuellZeichen - Verkürzung End IfEnd IfNext

End Function

Page 77: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 77

Function DNAse() As Integer'Chick zu elementarDim Länge, aktuellZeichen As IntegerDim c, d, Endzeichen As IntegerDim Zeichen, Formel, Tz As String

DNAse = 1

d = Selection.Fields.CountIf d = 1 ThenSelection.Fields.ToggleShowCodesSelection.Fields(1).Code.SelectLänge = Selection.Characters.CountWith Selection .Cut .MoveRight Unit:=wdCharacter, Count:=1 .TypeBackspace .TypeBackspace .Paste .MoveLeft Unit:=wdCharacter, Count:=Länge - 2, Extend:=wdExtendEnd With Formel = Selection Länge = Länge - 2 Tz = Mid(Formel, Länge, 1) If Tz = " " Then Selection.Characters(Länge) = "" End If Tz = Mid(Formel, 1, 1) If Tz = "Q" Then Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend End If c = tRNA()End If

Formel = SelectionLänge = Len(Formel)For c = 1 To 3 Tz = Mid(Formel, c, 3) If Tz = "EQ " Then d = 1 'EQ Feld ohne Feld und es werden {} statt () verwendet End IfNext

' Ersetzt · durch *aktuellZeichen = 2For aktuellZeichen = 2 To Länge - 1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "·" Or Tz = ChrW(8729) ThenSelection.Characters(aktuellZeichen) = "*"End IfNext

'Ersetzt ²³ durch ^2^3For aktuellZeichen = Länge To 1 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "²" ThenSelection.Characters(aktuellZeichen).InsertBefore ("^2")Selection.Characters(aktuellZeichen + 2) = ""ElseIf Tz = "³" ThenSelection.Characters(aktuellZeichen).InsertBefore ("^3")Selection.Characters(aktuellZeichen + 2) = ""End IfNext

'Entstellt hochFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge To 1 Step -1 If Selection.Characters(aktuellZeichen).Font.Superscript = True Then Endzeichen = aktuellZeichen c = 0 While Selection.Characters(aktuellZeichen).Font.Superscript = True c = c + Steuerzeichen(Selection.Characters(aktuellZeichen)) Selection.Characters(aktuellZeichen).Font.Superscript = False aktuellZeichen = aktuellZeichen - 1 Wend If d = 1 Then If Endzeichen - aktuellZeichen = 1 Then Selection.Characters(aktuellZeichen).InsertAfter ("^") Else

Page 78: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 78

Tz = Mid(Formel, Endzeichen, 1) Selection.Characters(Endzeichen).InsertBefore ("}") Selection.Characters(Endzeichen).InsertBefore (Tz) Selection.Characters(Endzeichen + 2) = "" Selection.Characters(aktuellZeichen).InsertAfter ("^{") End If Else If c > 0 Then Tz = Mid(Formel, Endzeichen, 1) Selection.Characters(Endzeichen).InsertBefore (")") Selection.Characters(Endzeichen).InsertBefore (Tz) Selection.Characters(Endzeichen + 2) = "" Selection.Characters(aktuellZeichen).InsertAfter ("^(") Else Selection.Characters(aktuellZeichen).InsertAfter ("^") End If End If End IfNext

'Entstellt tiefFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge To 1 Step -1 If Selection.Characters(aktuellZeichen).Font.Subscript = True Then Endzeichen = aktuellZeichen c = 0 While Selection.Characters(aktuellZeichen).Font.Subscript = True c = c + Steuerzeichen(Selection.Characters(aktuellZeichen)) Selection.Characters(aktuellZeichen).Font.Subscript = False aktuellZeichen = aktuellZeichen - 1 Wend If d = 1 Then If Endzeichen - aktuellZeichen = 1 Then Selection.Characters(aktuellZeichen).InsertAfter ("_") Else Tz = Mid(Formel, Endzeichen, 1) Selection.Characters(Endzeichen).InsertBefore ("}") Selection.Characters(Endzeichen).InsertBefore (Tz) Selection.Characters(Endzeichen + 2) = "" Selection.Characters(aktuellZeichen).InsertAfter ("_{") End If Else If c > 0 Then Tz = Mid(Formel, Endzeichen, 1) Selection.Characters(Endzeichen).InsertBefore (")") Selection.Characters(Endzeichen).InsertBefore (Tz) Selection.Characters(Endzeichen + 2) = "" Selection.Characters(aktuellZeichen).InsertAfter ("_(") Else Selection.Characters(aktuellZeichen).InsertAfter ("_") End If End If End IfNext

End Function

Function RNApolymerase(ByVal Hemmung As Integer) As Integer'Chick zu EQDim Länge, Widerherstellen, Verkürzung, aktuellZeichen, aktuellZeichen2, Klammersumme As IntegerDim c, d, e, Endzeichen, Azeichen, Tausch As IntegerDim Zeichen, Formel, Tz As String

RNApolymerase = 1

'bearbeitet QuadratwurzelnLänge = Len(Selection)Formel = SelectionaktuellZeichen = LängeaktuellZeichen2 = Länge - 4For aktuellZeichen = Länge To 3 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "5" ThenTz = Mid(Formel, aktuellZeichen - 1, 1)If Tz = "," ThenIf Selection.Characters(aktuellZeichen - 2).Font.Superscript = True ThenIf Selection.Characters(aktuellZeichen - 2) = "0" Then If aktuellZeichen = Länge Then e = 1 ElseIf Selection.Characters(aktuellZeichen + 1).Font.Superscript = False Then

Page 79: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 79

e = 1 Else e = 0 End IfIf e = 1 ThenIf Selection.Characters(aktuellZeichen - 3).Font.Superscript = True ThenIf Selection.Characters(aktuellZeichen - 3) = "^" ThenSelection.Characters(aktuellZeichen - 3) = ""aktuellZeichen = aktuellZeichen - 1End IfEnd IfEnd IfIf e = 1 ThenSelection.Characters(aktuellZeichen - 2) = ""Formel = SelectionTz = Mid(Formel, aktuellZeichen - 3, 1)If Tz = ")" Then Selection.Characters(aktuellZeichen - 2) = "" Selection.Characters(aktuellZeichen - 2) = "" Klammersumme = -1 aktuellZeichen2 = aktuellZeichen - 4 While Klammersumme <> 0 Tz = Mid(Formel, aktuellZeichen2, 1) Klammersumme = Klammersumme + Klammer(Tz) aktuellZeichen2 = aktuellZeichen2 - 1 Wend If aktuellZeichen2 < 2 Then Widerherstellen = Len(Selection) + 3 Selection.Characters(aktuellZeichen2 + 1) = "\r(;" If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Widerherstellen, Extend:=wdExtend End If Else If Selection.Characters(aktuellZeichen2 - 1) = "\" Then Widerherstellen = Len(Selection) + 4 Selection.Characters(aktuellZeichen2 - 1).InsertBefore ("\r(;") If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Widerherstellen, Extend:=wdExtend End If Selection.Characters(aktuellZeichen).InsertAfter (")") aktuellZeichen = aktuellZeichen + 2 Else Selection.Characters(aktuellZeichen2 + 1) = "\r(;" End If End IfElse c = 0 aktuellZeichen2 = aktuellZeichen - 3 Selection.Characters(aktuellZeichen - 2) = ")" Selection.Characters(aktuellZeichen - 1) = "" Selection.Characters(aktuellZeichen - 2).Font.Superscript = False While c = 0 Tz = Mid(Formel, aktuellZeichen2, 1) c = Steuerzeichen(Tz) aktuellZeichen2 = aktuellZeichen2 - 1 If aktuellZeichen2 = 0 Then c = 1 End If Wend If aktuellZeichen2 = 0 Then Selection.Characters(1).InsertBefore ("\r(;") Else Selection.Characters(aktuellZeichen2 + 1).InsertAfter ("\r(;") End IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfIf aktuellZeichen2 = 0 ThenExit ForEnd IfNext

'bearbeitet WurzelnLänge = Len(Selection)Formel = SelectionaktuellZeichen = Länge - 2For aktuellZeichen = Länge - 2 To 2 Step -1c = 0Tausch = 0

Page 80: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 80

Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "1" ThenTz = Mid(Formel, aktuellZeichen + 1, 1)If Tz = "/" ThenIf Selection.Characters(aktuellZeichen).Font.Superscript = True ThenIf Selection.Characters(aktuellZeichen - 1).Font.Superscript = False Then While c = 0 If Länge < aktuellZeichen + Tausch + 2 Then c = 1 ElseIf Selection.Characters(aktuellZeichen + Tausch + 2).Font.Superscript = False Then c = 1 Else c = 0 End If Tausch = Tausch + 1 Wend Tausch = Tausch - 1 Selection.Characters(aktuellZeichen) = "" Selection.Characters(aktuellZeichen) = ")" Selection.Characters(aktuellZeichen).Font.Superscript = False Tz = Mid(Formel, aktuellZeichen - 1, 1) If Tz = ")" Then Selection.Characters(aktuellZeichen) = "" Klammersumme = -1 aktuellZeichen2 = aktuellZeichen - 2 While Klammersumme <> 0 Tz = Mid(Formel, aktuellZeichen2, 1) Klammersumme = Klammersumme + Klammer(Tz) aktuellZeichen2 = aktuellZeichen2 - 1 Wend If aktuellZeichen2 < 2 Then Widerherstellen = Len(Selection) + 2 Selection.Characters(aktuellZeichen2 + 1) = "\r(" If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Widerherstellen, Extend:=wdExtend End If Else If Selection.Characters(aktuellZeichen2 - 1) = "\" Then aktuellZeichen2 = aktuellZeichen2 - 2 Widerherstellen = Len(Selection) + 3 Selection.Characters(aktuellZeichen2 + 1) = "\r(\" If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Widerherstellen, Extend:=wdExtend End If Selection.Characters(aktuellZeichen + 2).InsertAfter (")") aktuellZeichen = aktuellZeichen + 2 Else Selection.Characters(aktuellZeichen2 + 1) = "\r(" End If End If aktuellZeichen = aktuellZeichen + 2 d = 1 For d = 1 To Tausch Selection.Characters(aktuellZeichen2 + 3).InsertAfter (Selection.Characters(aktuellZeichen + Tausch - 1)) Selection.Characters(aktuellZeichen + Tausch) = "" Next Selection.Characters(aktuellZeichen2 + 3 + Tausch).InsertAfter (";") Else aktuellZeichen2 = aktuellZeichen - 2 c = 0 If aktuellZeichen2 <> 0 Then While c = 0 Tz = Mid(Formel, aktuellZeichen2, 1) c = Steuerzeichen(Tz) If Tz = ";" Then c = 1 End If aktuellZeichen2 = aktuellZeichen2 - 1 If aktuellZeichen2 = 0 Then c = 1 End If Wend End If Widerherstellen = Len(Selection) + 2 If aktuellZeichen2 = 0 Then Selection.Characters(1).InsertBefore ("\r(") aktuellZeichen2 = aktuellZeichen2 - 1 Else Selection.Characters(aktuellZeichen2 + 1).InsertAfter ("\r(") End If aktuellZeichen = aktuellZeichen + 3

Page 81: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 81

If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Widerherstellen, Extend:=wdExtend End If d = 1 For d = 1 To Tausch Selection.Characters(aktuellZeichen2 + 4).InsertAfter (Selection.Characters(aktuellZeichen + Tausch)) Selection.Characters(aktuellZeichen + Tausch + 1) = "" Next Selection.Characters(aktuellZeichen2 + 4 + Tausch).InsertAfter (";") End IfEnd IfFormel = SelectionEnd IfEnd IfEnd IfNext

'Wandelt Brüche umLänge = Len(Selection)aktuellZeichen = Länge - 1For aktuellZeichen = Länge - 1 To 2 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "/" Then If Selection.Characters(aktuellZeichen + 1) = " " Then Selection.Characters(aktuellZeichen + 1) = "" Länge = Länge - 1 End If If Selection.Characters(aktuellZeichen - 1) = " " Then Selection.Characters(aktuellZeichen - 1) = "" aktuellZeichen = aktuellZeichen - 1 Länge = Länge - 1 End If Formel = Selection'bearbeitet die rechte Seite'345/54334-123 -> 0) 345/54334)-123'345/54334 -> 0) 345/54334)'345/5433^34 -> 0) 345/5433^34)'345/(3+5) -> -0 345/3+5)'243/(4*6) -> -0 243/4*6)'345/(3+5)^4 -> 0) 345/(3+5)^4)'354/\r(;23) -> 0) 354/\r(;23))'354/\r(;23)^56 -> 0) 354/\r(;23)56^)Verkürzung = 0Tz = Mid(Formel, aktuellZeichen + 1, 1)If Tz = "-" ThenaktuellZeichen = aktuellZeichen + 1Verkürzung = 1 'berücksichtigt nevatives VorzeichenEnd IfTz = Mid(Formel, aktuellZeichen + 1, 1)If Tz = "(" Then e = 1 ElseIf Tz = "\" Then 'geändert e = 2 'e entscheidet, wo klammern gesetzt werden Else e = 0End If 'aktuellzeichen = / oder -If e <> 0 Then If e = 2 Then Endzeichen = aktuellZeichen + 3 Else Endzeichen = aktuellZeichen + 1 End If Klammersumme = 1 While Klammersumme <> 0 Endzeichen = Endzeichen + 1 Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) Wend c = 0 d = 0 'd= hochtiefstellung If Endzeichen < Länge Then While c = 0 Endzeichen = Endzeichen + 1 If Endzeichen > Länge Then c = 1 ElseIf Selection.Characters(Endzeichen).Font.Superscript = True Then c = 0 d = 1 ElseIf Selection.Characters(Endzeichen).Font.Subscript = True Then c = 0 d = -1

Page 82: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 82

ElseIf Selection.Characters(Endzeichen) = "²" Then c = 0 d = 2 ElseIf Selection.Characters(Endzeichen) = "³" Then c = 0 d = 2 Else c = 1 End If Wend End If Endzeichen = Endzeichen - 1 If d <> 0 Or e = 2 Then Selection.Characters(Endzeichen - 1).InsertAfter ("))") Selection.Characters(Endzeichen) = Selection.Characters(Endzeichen + 2) Selection.Characters(Endzeichen + 2) = "" If d = 1 Then Selection.Characters(Endzeichen).Font.Superscript = True ElseIf d = -1 Then Selection.Characters(Endzeichen).Font.Subscript = True ElseIf d = 2 Then Selection.Characters(Endzeichen).Font.Subscript = False Selection.Characters(Endzeichen).Font.Superscript = False End If Selection.Characters(Endzeichen + 1).Font.Subscript = False Selection.Characters(Endzeichen + 1).Font.Superscript = False Else Selection.Characters(aktuellZeichen + 1) = "" End IfElse Endzeichen = aktuellZeichen c = 0 While c = 0 Endzeichen = Endzeichen + 1 If Endzeichen > Länge Then c = 1 Else Tz = Mid(Formel, Endzeichen, 1) If Tz = ";" Then c = 1 Else c = Steuerzeichen(Tz) End If End If Wend If Endzeichen > Länge - 1 Then Endzeichen = Endzeichen - 1 Else If Selection.Characters(Endzeichen) = "(" And Selection.Characters(Endzeichen - 2) = "\" Then Endzeichen = Endzeichen - 3 Else Endzeichen = Endzeichen - 1 End If End If If Endzeichen = Länge Then If Selection.Characters(Endzeichen).Font.Subscript = True Then With Selection .Characters(Endzeichen - 1).InsertAfter ("))") .Characters(Endzeichen) = Selection.Characters(Endzeichen + 2) .Characters(Endzeichen).Font.Subscript = True .Characters(Endzeichen + 1).Font.Subscript = False .Characters(Endzeichen + 1).Font.Superscript = False .Characters(Endzeichen + 2) = "" End With ElseIf Selection.Characters(Endzeichen).Font.Superscript = True Then With Selection .Characters(Endzeichen - 1).InsertAfter ("))") .Characters(Endzeichen) = Selection.Characters(Endzeichen + 2) .Characters(Endzeichen).Font.Superscript = True .Characters(Endzeichen + 1).Font.Superscript = False .Characters(Endzeichen + 1).Font.Subscript = False .Characters(Endzeichen + 2) = "" End With Else With Selection .Characters(Endzeichen - 1).InsertAfter ("))") .Characters(Endzeichen) = Selection.Characters(Endzeichen + 2) .Characters(Endzeichen + 2) = "" .Characters(Endzeichen).Font.Superscript = False .Characters(Endzeichen).Font.Subscript = False .Characters(Endzeichen + 1).Font.Superscript = False .Characters(Endzeichen + 1).Font.Subscript = False

Page 83: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 83

End With End If Else Selection.Characters(Endzeichen).InsertAfter (")") Selection.Characters(Endzeichen + 1).Font.Subscript = False Selection.Characters(Endzeichen + 1).Font.Superscript = False End IfEnd If 'aktuellzeichen wird wieder /aktuellZeichen = aktuellZeichen - Verkürzung'bearbeitet die linke Seite und berücksichtigt folgende Fälle'345/dfg (0 \F(345;dfg)'2+354/wer (0 2+\F(354;wer)'(2+345)/rzt 0- \F(2+345;rzt)'3+(2+345)/rzt 0- 3+\F(2+345;rzt)'24^3/46 (0 \F(24^3;46)'(3+23)^54/234 (0 \F((3+23)^54;234)'\r(;354)/234 (0 \F(\r(;354);234)'\r(;354)^0,23/234 (0 \F(\r(;354)^0,23;234)'\o(L;\s\up4(_))/4365 (0 \F(\o(L;\s\up4(_));4365)'\o(L;\s\up4(_))_as/4365 (0 \F(\o(L;\s\up4(_))_as;4365)'\s\up4(_)/4365 (0 \F(\s\up4(_);4365)'4*6/45 (0 \F(4*6;45)'2+(3+8)*5/123 (0 2+\F((3+8)*5;123)'2+5*(3+8)/21 (0 2+\F(5*(3+8);21)'(2+5)*(7+s)/afd (0 \F((2+5)*(7+s);afd) extra'4*64/asd (0 \F(4*64;asd)'\r(;354)*sfd/234 (0 \F(\r(;354)*sfd;234)'3sd(345+sfd)/234 (0 \F(3sd(345+sfd);234) irreversibel für Reversetranskriptase'4/34*465/vbn (0 \F(\F(4;34)*465;vbn)'4+3*(4/(3+34)) (0 4+3*(\F(4;3+34)) extra'(345/465)^(1/234) (0 \r(234;\F(345;465)) extraSelection.Characters(aktuellZeichen) = ";"Formel = Selectionc = 0d = 0e = 0Azeichen = aktuellZeichenKlammersumme = 0While c = 0 Azeichen = Azeichen - 1 Tz = Mid(Formel, Azeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Klammer(Tz) <> 0 And Klammersumme = 0 Then d = d + 1 'Prüft, ob zwischen den Klammern weitere Klammern enthalten sind End If If Azeichen = 1 Then c = 1 'berücksichtigt selbstständig negative Vorzeichen am Anfang If Klammersumme = 1 Then Azeichen = Azeichen + 1 Else If Tz = "+" And Klammersumme = 0 Then c = 1 Azeichen = Azeichen + 1 End If If (Tz = ";" Or Tz = "=") And Klammersumme = 0 Then c = 1 'Berücksichtigt, ob der Bruch sich z.B. in einer Wurzel befindet Azeichen = Azeichen + 1 End If If (Tz = "-" Or Tz = ChrW(8211)) And Klammersumme = 0 Then If Selection.Characters(Azeichen).Font.Superscript = False Then c = 1 Azeichen = Azeichen + 1 End If End If If Klammersumme = 1 Then c = 1 Azeichen = Azeichen + 1 End If End If 'Azeichen = beginn des BruchesWendIf Selection.Characters(Azeichen) = "(" And d < 2 And Selection.Characters(aktuellZeichen - 1) = ")" Then Selection.Characters(aktuellZeichen - 1) = "" If Azeichen = 1 Then Länge = Len(Selection) Selection.Characters(1).InsertBefore ("\F") If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Länge, Extend:=wdExtend End If Else Selection.Characters(Azeichen).InsertBefore ("\F") End IfElse

Page 84: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 84

If Azeichen = 1 Then Länge = Len(Selection) Selection.Characters(1).InsertBefore ("\F(") If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Länge, Extend:=wdExtend End If Else Selection.Characters(Azeichen).InsertBefore ("\F(") End IfEnd IfFormel = SelectionLänge = Len(Formel)End If ' gehört zu If Tz = "/" ThenNext

'erkennt große klammernLänge = Len(Selection)Formel = SelectionaktuellZeichen = Länge - 2c = 0d = 0e = 0For aktuellZeichen = Länge - 2 To 1 Step -1Tz = Mid(Formel, aktuellZeichen, 1) If Tz = "(" Then Azeichen = aktuellZeichen - 2 If aktuellZeichen < 3 Then d = 1 ElseIf Selection.Characters(Azeichen) = "\" Then d = 0 Else e = 0 While e = 0 If Steuerzeichen(Selection.Characters(Azeichen + 1)) = 1 Then e = 1 d = 1 ElseIf Selection.Characters(Azeichen + 1) = "\" Then e = 1 d = 0 End If If Azeichen < 1 Then e = 1 d = 1 End If Azeichen = Azeichen - 1 Wend End If If d = 1 Then d = 0 Endzeichen = aktuellZeichen + 1 Klammersumme = 1 While Klammersumme <> 0 Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) Endzeichen = Endzeichen + 1 Wend Endzeichen = Endzeichen - 1 e = aktuellZeichen For e = aktuellZeichen To Endzeichen Tz = Mid(Formel, e, 1) If Tz = "\" Then d = 1 End If Next End If If d = 1 Then If Azeichen < 0 Then Länge = Len(Selection) Selection.Characters(aktuellZeichen).InsertBefore ("\b") If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Länge, Extend:=wdExtend End If Else Selection.Characters(aktuellZeichen).InsertBefore ("\b") End If End If End IfNext

Länge = Len(Selection) + 3Selection.Characters(1).InsertBefore ("EQ ")If Len(Selection) = 1 Then

Page 85: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 85

Selection.MoveRight Unit:=wdCharacter, Count:=Länge, Extend:=wdExtendEnd If

If Hemmung = 1 ThenElsec = Ribozym()Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _PreserveFormatting:=FalseSelection.Fields.UpdateSelection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtendEnd If

End Function

Function Reversetransskriptase() As Integer'EQ zu ChickDim Länge, aktuellZeichen, Klammersumme, Tausch As IntegerDim c, d, e, Endzeichen, Azeichen As IntegerDim Zeichen, Formel, Tz As String

Reversetransskriptase = 1

'Options.SmartCutPaste = Truec = Selection.Fields.CountIf c = 1 Then Selection.Fields.ToggleShowCodes Selection.Fields(1).Code.Select Länge = Selection.Characters.Count With Selection .Cut .MoveRight Unit:=wdCharacter, Count:=1 .TypeBackspace .TypeBackspace .Paste .MoveLeft Unit:=wdCharacter, Count:=Länge - 2, Extend:=wdExtend End With Formel = Selection Länge = Länge - 2 Tz = Mid(Formel, Länge, 1) If Tz = " " Then Selection.Characters(Länge) = "" End If Tz = Mid(Formel, 1, 1) If Tz = "Q" Then Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend End If c = tRNA()End If

If Selection.Characters(1) = " " ThenIf Selection.Characters(2) = " " ThenSelection.Characters(2) = ""End IfEnd If

Formel = Selection'\B entfernenLänge = Len(Formel)For aktuellZeichen = Länge - 3 To 4 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "B" Or Tz = "b" Then Tz = Mid(Formel, aktuellZeichen - 1, 1) If Tz = "\" Then Selection.Characters(aktuellZeichen) = "" Selection.Characters(aktuellZeichen - 1) = "" End IfEnd IfNext

'\F umwandelnFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge - 3 To 4 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "F" Or Tz = "f" ThenTz = Mid(Formel, aktuellZeichen - 1, 1)If Tz = "\" Then Formel = Selection Länge = Len(Formel) Endzeichen = aktuellZeichen + 1 Klammersumme = 1

Page 86: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 86

While Klammersumme <> 0 'aktuellzeichen = F Endzeichen = Endzeichen + 1 'Endzeichen = letzte Klammer) Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Selection.Characters(Endzeichen) = ";" And Klammersumme = 1 Then Azeichen = Endzeichen 'Azeichen = ; End If Wend 'entfernt Leerzeichen If Selection.Characters(Azeichen + 1) = " " Then Selection.Characters(Azeichen + 1) = "" Endzeichen = Endzeichen - 1 Formel = Selection End If If Selection.Characters(Azeichen - 1) = " " Then Selection.Characters(Azeichen - 1) = "" Endzeichen = Endzeichen - 1 Azeichen = Azeichen - 1 Formel = Selection End If 'bearbeitet die rechte Seite e = 0 For c = Azeichen + 2 To Endzeichen Tz = Mid(Formel, c, 1) Select Case Tz 'Selection.Characters(c) Case "+", "-", "*", "·", "/", ChrW(8729) e = 0 Exit For Case Else e = 1 End Select Next If e = 1 Then Selection.Characters(Endzeichen) = "" Else Selection.Characters(Azeichen).InsertAfter ("(") End If Selection.Characters(Azeichen) = "/" 'Bearbeitet die linke Seite e = 0 '+3 berücksichtigt negative Vorzeichen For c = aktuellZeichen + 3 To Azeichen - 1 Tz = Mid(Formel, c, 1) Select Case Tz 'Selection.Characters(c) Case "+", "-" e = 1 Exit For Case Else e = 0 ' Klammer entfernen End Select Next If e = 1 Then If Selection.Characters(aktuellZeichen + 2) = "(" Then e = 0 ElseIf Selection.Characters(aktuellZeichen + 2) = "-" And Selection.Characters(aktuellZeichen + 3) = "(" Then e = 0 Else e = 1 'Klammer hinzufügen End If End If If e = 1 Then With Selection.Characters(Azeichen) .InsertBefore (")") .Font.Superscript = False .Font.Superscript = False End With Else Selection.Characters(aktuellZeichen + 1) = "" End If Selection.Characters(aktuellZeichen) = "" Selection.Characters(aktuellZeichen - 1) = ""End IfEnd IfNext

'\R umwandelnFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge - 3 To 4 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "R" Or Tz = "r" ThenTz = Mid(Formel, aktuellZeichen - 1, 1)

Page 87: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 87

If Tz = "\" Then Formel = Selection Endzeichen = aktuellZeichen + 1 Klammersumme = 1 While Klammersumme <> 0 'aktuellzeichen = R Endzeichen = Endzeichen + 1 'Endzeichen = letzte Klammer) Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Tz = ";" And Klammersumme = 1 Then Azeichen = Endzeichen 'Azeichen = ; End If Wend 'entfernt Leerzeichen If Selection.Characters(Azeichen + 1) = " " Then Selection.Characters(Azeichen + 1) = "" Endzeichen = Endzeichen - 1 Formel = Selection End If If Selection.Characters(Azeichen - 1) = " " Then Selection.Characters(Azeichen - 1) = "" Endzeichen = Endzeichen - 1 Azeichen = Azeichen - 1 Formel = Selection End If e = 0 Tausch = 0 For c = Azeichen + 1 To Endzeichen Tz = Mid(Formel, c, 1) Select Case Tz Case "+", "-", "*", "·", "/", ChrW(8729), ChrW(8211) e = 1 '1= Klammer hinzufügen Exit For Case Else If Selection.Characters(c).Font.Superscript = True Or Selection.Characters(c).Font.Subscript = True Then If Selection.Characters(aktuellZeichen).Font.Superscript = True Then e = 0 Selection.Characters(Endzeichen).InsertBefore ("^") Endzeichen = Endzeichen + 1 Else e = 1 End If Exit For Else e = 0 End If End Select Next If aktuellZeichen = Azeichen - 2 Then If e = 1 Then' Berücksichtigt folgende Fälle'EQ \r(;123) ->-- 123^0,5'EQ \r(;123+4*(234)-123) ->00 (123+4*(234)-123)^0,5'EQ \r(;\s\up1(4)) ->-- \s\up1(4)^0,5'EQ \r(;-354) ->00 (-354)^0,5'EQ \r(;(354-34)^0,4) ->00 ((354-34)^0,4)^0,5'EQ \r(;(354-34)_0,4) ->00 ((354-34)_0,4)^0,5 With Selection .Characters(Endzeichen).InsertBefore (")0,5") .Characters(Endzeichen + 4) = "" .Characters(Endzeichen).Font.Superscript = False .Characters(Endzeichen).Font.Subscript = False .Characters(Endzeichen + 1).Font.Superscript = True .Characters(Endzeichen + 2).Font.Superscript = True .Characters(Endzeichen + 3).Font.Superscript = True .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen + 1) = "" .Characters(aktuellZeichen - 1) = "" End With Else With Selection .Characters(Endzeichen).InsertBefore ("0,5") .Characters(Endzeichen + 3) = "" .Characters(Endzeichen).Font.Superscript = True .Characters(Endzeichen + 1).Font.Superscript = True .Characters(Endzeichen + 2).Font.Superscript = True .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen - 1) = "" End With End If

Page 88: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 88

Else Tausch = Azeichen - aktuellZeichen - 2 c = 0 For d = 1 To Tausch If Steuerzeichen(Selection.Characters(aktuellZeichen + 1 + d)) = 1 Then If Klammer(Selection.Characters(aktuellZeichen + 1 + d)) = 0 Then c = 1 'erzeugt eine Klammer; irreversibel für RNA-Polymerase End If End If Next If c = 1 Then Selection.Characters(Azeichen).InsertBefore (")") Selection.Characters(aktuellZeichen + 1).InsertAfter ("(") Tausch = Tausch + 2 Endzeichen = Endzeichen + 2 Azeichen = Azeichen + 2 End If For d = 1 To Tausch With Selection .Characters(Endzeichen).InsertBefore (Selection.Characters(aktuellZeichen + 2)) .Characters(Endzeichen).Font.Superscript = True .Characters(aktuellZeichen + 2) = "" End With Next Selection.Characters(Endzeichen) = "" If e = 1 Then With Selection .Characters(Endzeichen - Tausch).InsertBefore "1/" .Characters(Endzeichen - Tausch - 1).InsertAfter (")") .Characters(Endzeichen - Tausch + 1).Font.Superscript = True .Characters(Endzeichen - Tausch + 2).Font.Superscript = True .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen + 1) = "" .Characters(aktuellZeichen - 1) = "" End With Else With Selection .Characters(Endzeichen - Tausch).InsertBefore "1/" '& Selection.Characters(Endzeichen - Tausch) .Characters(Endzeichen - Tausch).Font.Superscript = True .Characters(Endzeichen - Tausch + 1).Font.Superscript = True .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen) = "" .Characters(aktuellZeichen - 1) = "" End With End If End IfEnd IfEnd IfNext

For c = 1 To 3 'ganz zum schlussIf Selection.Characters(c) = "E" Or Selection.Characters(c) = "e" ThenIf Selection.Characters(c + 1) = "Q" Or Selection.Characters(c + 1) = "q" ThenIf Selection.Characters(c + 2) = " " Then If c = 1 Then Länge = Len(Selection) - 3 End If Selection.Characters(c + 2).Delete Selection.Characters(c + 1).Delete Selection.Characters(c).Delete If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Länge, Extend:=wdExtend End If Exit ForEnd IfEnd IfEnd IfNext

End Function

Function Ribosom() As Integer'EQ zu WikipediaDim Länge, aktuellZeichen, Klammersumme, Tausch As IntegerDim c, d, e, Endzeichen, Azeichen As IntegerDim Zeichen, Formel, Tz, Schriftart, Schriftart2 As String

Ribosom = 1

Page 89: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 89

c = DNAse()Formel = SelectionLänge = Len(Formel)Tz = Mid(Formel, Länge, 1) & "</math>"Selection.Characters(Länge).InsertBefore (Tz)Selection.Characters(Länge + 8) = ""Tz = Mid(Formel, 1, 1)If Tz = " " Then Selection.Characters(1) = ":<math>" d = 1 Tz = Mid(Formel, 2, 1) Else Selection.Characters(1).InsertBefore (":<math>") d = 0End IfLänge = Länge - d + 14If Len(Selection) = 1 Then Selection.MoveRight Unit:=wdCharacter, Count:=Länge, Extend:=wdExtendEnd IfIf Tz = "e" Or Tz = "E" Then Selection.Characters(8) = "" Selection.Characters(8) = "" Else Tz = Mid(Formel, 3, 1) If Tz = "e" Or Tz = "E" Then Selection.Characters(9) = "" Selection.Characters(9) = "" End IfEnd If

'große KlammernFormel = SelectionLänge = Len(Formel)For aktuellZeichen = Länge - 7 To 8 Step -1Tz = Mid(Formel, aktuellZeichen, 3)If Tz = "\b(" Or Tz = "\B(" Then Klammersumme = 1 Endzeichen = aktuellZeichen + 3 While Klammersumme <> 0 Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) Endzeichen = Endzeichen + 1 Wend Selection.Characters(Endzeichen - 1).InsertBefore ("\right") Selection.Characters(aktuellZeichen + 1) = "left" Formel = SelectionEnd IfNext

'BrücheLänge = Len(Formel)For aktuellZeichen = Länge - 7 To 8 Step -1Tz = Mid(Formel, aktuellZeichen, 3)If Tz = "\f(" Or Tz = "\F(" Then Klammersumme = 1 Endzeichen = aktuellZeichen + 3 While Klammersumme <> 0 Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer(Tz) If Tz = ";" And Klammersumme = 1 Then Azeichen = Endzeichen End If Endzeichen = Endzeichen + 1 Wend 'aktuellZeichen= \ Azeichen= ; Endzeichen-1 =) Selection.Characters(Endzeichen - 1) = "}" Selection.Characters(Azeichen) = "}{" Selection.Characters(aktuellZeichen + 2) = "frac{" Selection.Characters(aktuellZeichen + 1) = "" Formel = SelectionEnd IfNext

'WurzelnLänge = Len(Formel)For aktuellZeichen = Länge - 7 To 8 Step -1Tz = Mid(Formel, aktuellZeichen, 3)If Tz = "\r(" Or Tz = "\R(" Then Klammersumme = 1 Endzeichen = aktuellZeichen + 3 While Klammersumme <> 0 Tz = Mid(Formel, Endzeichen, 1)

Page 90: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 90

Klammersumme = Klammersumme + Klammer(Tz) If Tz = ";" And Klammersumme = 1 Then Azeichen = Endzeichen End If Endzeichen = Endzeichen + 1 Wend 'aktuellZeichen= \ Azeichen= ; Endzeichen-1 =) If Azeichen = aktuellZeichen + 3 Then Selection.Characters(Endzeichen - 1) = "}" Selection.Characters(aktuellZeichen + 3) = "" Selection.Characters(aktuellZeichen + 1) = "s" Selection.Characters(aktuellZeichen + 2) = "qrt{" Else Selection.Characters(Endzeichen - 1) = "}" Selection.Characters(Azeichen) = "]{" Selection.Characters(aktuellZeichen + 1) = "s" Selection.Characters(aktuellZeichen + 2) = "qrt[" End If Formel = SelectionEnd IfNext

'Sonderzeichen UnicodeLänge = Len(Formel)For aktuellZeichen = Länge - 7 To 8 Step -1 Tz = Mid(Formel, aktuellZeichen, 1) Select Case AscW(Tz) Case 42 Selection.Characters(aktuellZeichen) = "\cdot " Case 44 Selection.Characters(aktuellZeichen) = "{,}" Case 183 Selection.Characters(aktuellZeichen) = "\cdot " Case 186 Selection.Characters(aktuellZeichen) = "^\circ " Case 196 Selection.Characters(aktuellZeichen) = "\ddot{A}" Case 214 Selection.Characters(aktuellZeichen) = "\ddot{O}" Case 216 Selection.Characters(aktuellZeichen) = "\varnothing " Case 220 Selection.Characters(aktuellZeichen) = "\ddot{U}" Case 228 Selection.Characters(aktuellZeichen) = "\ddot{a}" Case 246 Selection.Characters(aktuellZeichen) = "\ddot{o}" Case 248 Selection.Characters(aktuellZeichen) = "\varnothing " Case 252 Selection.Characters(aktuellZeichen) = "\ddot{u}" Case 913 Selection.Characters(aktuellZeichen) = "\Alpha " Case 914 Selection.Characters(aktuellZeichen) = "\Beta " Case 915 Selection.Characters(aktuellZeichen) = "\Gamma " Case 916 Selection.Characters(aktuellZeichen) = "\Delta " Case 917 Selection.Characters(aktuellZeichen) = "\Epsilon " Case 918 Selection.Characters(aktuellZeichen) = "\Zeta " Case 919 Selection.Characters(aktuellZeichen) = "\Eta " Case 920 Selection.Characters(aktuellZeichen) = "\Theta " Case 921 Selection.Characters(aktuellZeichen) = "\Iota " Case 922 Selection.Characters(aktuellZeichen) = "\Kappa " Case 923 Selection.Characters(aktuellZeichen) = "\Lambda " Case 924 Selection.Characters(aktuellZeichen) = "\Mu " Case 925 Selection.Characters(aktuellZeichen) = "\Nu " Case 926 Selection.Characters(aktuellZeichen) = "\Omicron " Case 927 Selection.Characters(aktuellZeichen) = "\Xi " Case 928

Page 91: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 91

Selection.Characters(aktuellZeichen) = "\Pi " Case 929 Selection.Characters(aktuellZeichen) = "\Rho " Case 931 Selection.Characters(aktuellZeichen) = "\Sigma " Case 932 Selection.Characters(aktuellZeichen) = "\Tau " Case 933 Selection.Characters(aktuellZeichen) = "\Upsilon " Case 934 Selection.Characters(aktuellZeichen) = "\Phi " Case 935 Selection.Characters(aktuellZeichen) = "\Chi " Case 936 Selection.Characters(aktuellZeichen) = "\Psi " Case 937 Selection.Characters(aktuellZeichen) = "\Omega " Case 945 Selection.Characters(aktuellZeichen) = "\alpha " Case 946 Selection.Characters(aktuellZeichen) = "\beta " Case 947 Selection.Characters(aktuellZeichen) = "\gamma " Case 948 Selection.Characters(aktuellZeichen) = "\delta " Case 949 Selection.Characters(aktuellZeichen) = "\epsilon " Case 950 Selection.Characters(aktuellZeichen) = "\zeta " Case 951 Selection.Characters(aktuellZeichen) = "\eta " Case 952 Selection.Characters(aktuellZeichen) = "\theta " Case 953 Selection.Characters(aktuellZeichen) = "\iota " Case 954 Selection.Characters(aktuellZeichen) = "\kappa " Case 955 Selection.Characters(aktuellZeichen) = "\lambda " Case 956 Selection.Characters(aktuellZeichen) = "\mu " Case 957 Selection.Characters(aktuellZeichen) = "\nu " Case 958 Selection.Characters(aktuellZeichen) = "\xi " Case 959 Selection.Characters(aktuellZeichen) = "\omicron " Case 960 Selection.Characters(aktuellZeichen) = "\pi " Case 961 Selection.Characters(aktuellZeichen) = "\rho " Case 962 Selection.Characters(aktuellZeichen) = "\varsigma " Case 963 Selection.Characters(aktuellZeichen) = "\sigma " Case 964 Selection.Characters(aktuellZeichen) = "\tau " Case 965 Selection.Characters(aktuellZeichen) = "\upsilon " Case 966 Selection.Characters(aktuellZeichen) = "\phi " Case 967 Selection.Characters(aktuellZeichen) = "\chi " Case 968 Selection.Characters(aktuellZeichen) = "\Psi " Case 969 Selection.Characters(aktuellZeichen) = "\omega " Case 8729 Selection.Characters(aktuellZeichen) = "\cdot " Case 8734 Selection.Characters(aktuellZeichen) = "\infty " Case 8776 Selection.Characters(aktuellZeichen) = "\approx " Case 8804 Selection.Characters(aktuellZeichen) = "\le " Case 8805 Selection.Characters(aktuellZeichen) = "\ge " End SelectNext

Page 92: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 92

'Schriftart SymbolSchriftart = Selection.Font.NameFormel = SelectionLänge = Len(Formel)d = 0If Schriftart = "" Then d = 1 Schriftart = Selection.Characters(Länge).Font.Name If Schriftart = "Symbol" Then Schriftart = Selection.Characters(1).Font.Name If Schriftart = "Symbol" Then For c = 2 To Länge - 1 Schriftart = Selection.Characters(c).Font.Name If Schriftart <> "Symbol" Then Exit For Next End If End IfEnd IfIf d = 1 Or Schriftart = "Symbol" Then 'verhindert BremseFor aktuellZeichen = Länge To 1 Step -1If Selection.Characters(aktuellZeichen).Font.Name = "Symbol" Then Tz = Mid(Formel, aktuellZeichen, 1) e = AscW(Tz) e = e Mod 256 If e < 0 Then e = e + 256 If e < 64 Then Selection.Characters(aktuellZeichen) = Chr(e) End If Selection.Characters(aktuellZeichen).Font.Name = Schriftart Select Case e Case 65 Selection.Characters(aktuellZeichen) = "\Alpha " Case 66 Selection.Characters(aktuellZeichen) = "\Beta " Case 67 Selection.Characters(aktuellZeichen) = "\Chi " Case 68 Selection.Characters(aktuellZeichen) = "\Delta " Case 69 Selection.Characters(aktuellZeichen) = "\Epsilon " Case 70 Selection.Characters(aktuellZeichen) = "\Phi " Case 71 Selection.Characters(aktuellZeichen) = "\Gamma " Case 72 Selection.Characters(aktuellZeichen) = "\Eta " Case 73 Selection.Characters(aktuellZeichen) = "\Iota " Case 74 Selection.Characters(aktuellZeichen) = "\vartheta " Case 75 Selection.Characters(aktuellZeichen) = "\Kappa " Case 76 Selection.Characters(aktuellZeichen) = "\Lambda " Case 77 Selection.Characters(aktuellZeichen) = "\Mu " Case 78 Selection.Characters(aktuellZeichen) = "\Nu " Case 79 Selection.Characters(aktuellZeichen) = "\Omicron " Case 80 Selection.Characters(aktuellZeichen) = "\Pi " Case 81 Selection.Characters(aktuellZeichen) = "\Theta " Case 82 Selection.Characters(aktuellZeichen) = "\Rho " Case 83 Selection.Characters(aktuellZeichen) = "\Sigma " Case 84 Selection.Characters(aktuellZeichen) = "\Tau " Case 85 Selection.Characters(aktuellZeichen) = "\Upsilon " Case 86 Selection.Characters(aktuellZeichen) = "\varsigma " Case 87 Selection.Characters(aktuellZeichen) = "\Omega " Case 88 Selection.Characters(aktuellZeichen) = "\Xi " Case 89 Selection.Characters(aktuellZeichen) = "\Psi " Case 90

Page 93: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 93

Selection.Characters(aktuellZeichen) = "\Zeta " Case 97 Selection.Characters(aktuellZeichen) = "\alpha " Case 98 Selection.Characters(aktuellZeichen) = "\beta " Case 99 Selection.Characters(aktuellZeichen) = "\chi " Case 100 Selection.Characters(aktuellZeichen) = "\delta " Case 101 Selection.Characters(aktuellZeichen) = "\epsilon " Case 102 Selection.Characters(aktuellZeichen) = "\phi " Case 103 Selection.Characters(aktuellZeichen) = "\gamma " Case 104 Selection.Characters(aktuellZeichen) = "\eta " Case 105 Selection.Characters(aktuellZeichen) = "\iota " Case 106 Selection.Characters(aktuellZeichen) = "\kappa " Case 107 Selection.Characters(aktuellZeichen) = "\lambda " Case 108 Selection.Characters(aktuellZeichen) = "\mu " Case 109 Selection.Characters(aktuellZeichen) = "\nu " Case 110 Selection.Characters(aktuellZeichen) = "\omicron " Case 111 Selection.Characters(aktuellZeichen) = "\pi " Case 112 Selection.Characters(aktuellZeichen) = "\theta " Case 113 Selection.Characters(aktuellZeichen) = "\rho " Case 114 Selection.Characters(aktuellZeichen) = "\sigma " Case 115 Selection.Characters(aktuellZeichen) = "\tau " Case 116 Selection.Characters(aktuellZeichen) = "\upsilon " Case 117 Selection.Characters(aktuellZeichen) = "\varpi " Case 118 Selection.Characters(aktuellZeichen) = "\omega " Case 119 Selection.Characters(aktuellZeichen) = "\xi " Case 120 Selection.Characters(aktuellZeichen) = "\psi " Case 121 Selection.Characters(aktuellZeichen) = "\zeta " Case 163 Selection.Characters(aktuellZeichen) = "\le " Case 165 Selection.Characters(aktuellZeichen) = "\infty " Case 176 Selection.Characters(aktuellZeichen) = "^\circ " Case 177 Selection.Characters(aktuellZeichen) = "\pm " Case 179 Selection.Characters(aktuellZeichen) = "\ge " Case 187 Selection.Characters(aktuellZeichen) = "\approx " Case 198 Selection.Characters(aktuellZeichen) = "\varnothing " Case 213 Selection.Characters(aktuellZeichen) = "\Pi " Case 229 Selection.Characters(aktuellZeichen) = "\Sigma " End SelectEnd IfNextEnd If

'bearbeitet LambdaquerFormel = SelectionLänge = Len(Formel)

For aktuellZeichen = Länge - 20 To 8 Step -1 Tz = Mid(Formel, aktuellZeichen, 3)

Page 94: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 94

If Tz = "\o(" Then c = 0 Tz = Mid(Formel, aktuellZeichen + 3, 11) If Tz = "\lambda ;¯)" Or Tz = "¯;\lambda )" Then c = 1: d = 0 Tz = Mid(Formel, aktuellZeichen + 3, 19) If Tz = "\lambda ;\s\up1(¯))" Or Tz = "\s\up1(¯);\lambda )" Then c = 1: d = 1 If c = 1 Then With Selection .Characters(aktuellZeichen + 2) = "v" .Characters(aktuellZeichen + 3) = "e" .Characters(aktuellZeichen + 4) = "r" .Characters(aktuellZeichen + 5) = "l" .Characters(aktuellZeichen + 6) = "i" .Characters(aktuellZeichen + 7) = "n" .Characters(aktuellZeichen + 8) = "e" .Characters(aktuellZeichen + 9) = "{" .Characters(aktuellZeichen + 10) = "\" .Characters(aktuellZeichen + 11) = "l" .Characters(aktuellZeichen + 12) = "a" End With If d = 0 Then Selection.Characters(aktuellZeichen + 13) = "mbda }" Else With Selection .Characters(aktuellZeichen + 13) = "m" .Characters(aktuellZeichen + 14) = "b" .Characters(aktuellZeichen + 15) = "d" .Characters(aktuellZeichen + 16) = "a" .Characters(aktuellZeichen + 17) = " " .Characters(aktuellZeichen + 18) = "}" .Characters(aktuellZeichen + 19) = "" .Characters(aktuellZeichen + 19) = "" .Characters(aktuellZeichen + 19) = "" End With End If End If End IfNext

End Function

Function Reversetranslatase(ByVal Hemmung As Integer) As Integer'Wikipedia zu EQDim Länge, aktuellZeichen, Klammersumme, Tausch As IntegerDim c, d, e, Endzeichen, Verkürzung, Azeichen As IntegerDim Zeichen, Formel, Tz, Tt, Symbol, Schriftart, Schriftart2 As String

Reversetranslatase = 1

Formel = SelectionLänge = Len(Formel)

For aktuellZeichen = Länge - 9 To 7 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "\" Then c = 1 Endzeichen = 1 While c = 1 Tt = Mid(Formel, aktuellZeichen + Endzeichen, 1) If Tt <> "" Then d = Asc(Tt) Else d = 63 End If If (d > 64 And d < 91) Or (d > 96 And d < 123) Then c = 1 Endzeichen = Endzeichen + 1 ElseIf d = 123 Then Endzeichen = Endzeichen + 3 c = 0 Else c = 0 End If Wend Tt = Mid(Formel, aktuellZeichen + 1, Endzeichen - 1) e = 1 Select Case Tt Case "cdot" Symbol = ChrW(183) Case "circ" Symbol = ChrW(186)

Page 95: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 95

aktuellZeichen = aktuellZeichen - 1 Case "ddot{A}" Symbol = ChrW(196) Case "ddot{O}" Symbol = ChrW(214) Case "ddot{U}" Symbol = ChrW(220) Case "ddot{a}" Symbol = ChrW(228) Case "ddot{o}" Symbol = ChrW(246) Case "varnothing" Symbol = ChrW(248) Case "ddot{u}" Symbol = ChrW(252) Case "Alpha" Symbol = ChrW(913) Case "Beta" Symbol = ChrW(914) Case "Gamma" Symbol = ChrW(915) Case "Delta" Symbol = ChrW(916) Case "Epsilon" Symbol = ChrW(917) Case "Zeta" Symbol = ChrW(918) Case "Eta" Symbol = ChrW(919) Case "Theta" Symbol = ChrW(920) Case "Iota" Symbol = ChrW(921) Case "Kappa" Symbol = ChrW(922) Case "Lambda" Symbol = ChrW(923) Case "Mu" Symbol = ChrW(924) Case "Nu" Symbol = ChrW(925) Case "Omicron" Symbol = ChrW(926) Case "Xi" Symbol = ChrW(927) Case "Pi" Symbol = ChrW(928) Case "Rho" Symbol = ChrW(929) Case "Sigma" Symbol = ChrW(931) Case "Tau" Symbol = ChrW(932) Case "Upsilon" Symbol = ChrW(933) Case "Phi" Symbol = ChrW(934) Case "Chi" Symbol = ChrW(935) Case "Psi" Symbol = ChrW(936) Case "Omega" Symbol = ChrW(937) Case "alpha" Symbol = ChrW(945) Case "beta" Symbol = ChrW(946) Case "gamma" Symbol = ChrW(947) Case "delta" Symbol = ChrW(948) Case "epsilon" Symbol = ChrW(949) Case "zeta" Symbol = ChrW(950) Case "eta" Symbol = ChrW(951) Case "theta" Symbol = ChrW(952) Case "iota" Symbol = ChrW(953)

Page 96: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 96

Case "kappa" Symbol = ChrW(954) Case "lambda" Symbol = ChrW(955) Case "mu" Symbol = ChrW(956) Case "nu" Symbol = ChrW(957) Case "xi" Symbol = ChrW(958) Case "omicron" Symbol = ChrW(959) Case "pi" Symbol = ChrW(960) Case "rho" Symbol = ChrW(961) Case "varsigma" Symbol = ChrW(962) Case "sigma" Symbol = ChrW(963) Case "tau" Symbol = ChrW(964) Case "upsilon" Symbol = ChrW(965) Case "phi" Symbol = ChrW(966) Case "chi" Symbol = ChrW(967) Case "Psi" Symbol = ChrW(968) Case "omega" Symbol = ChrW(969) Case "infty" Symbol = ChrW(8734) Case "approx" Symbol = ChrW(8776) Case "ungleich" Symbol = ChrW(8800) Case "le" Symbol = ChrW(8804) Case "ge" Symbol = ChrW(8805) Case Else e = 0 End Select If e = 1 Then If d = 32 Then Formel = Mid(Formel, 1, aktuellZeichen - 1) & Symbol & Mid(Formel, aktuellZeichen + Endzeichen + 1) Else Formel = Mid(Formel, 1, aktuellZeichen - 1) & Symbol & Mid(Formel, aktuellZeichen + Endzeichen) End If End IfEnd IfNext

'KommaLänge = Len(Formel)For aktuellZeichen = Länge - 9 To 7 Step -1Tz = Mid(Formel, aktuellZeichen, 3)If Tz = "{,}" ThenFormel = Mid(Formel, 1, aktuellZeichen - 1) & "," & Mid(Formel, aktuellZeichen + 3)End IfNext

'overlineLänge = Len(Formel)For aktuellZeichen = Länge - 17 To 7 Step -1 '77Tz = Mid(Formel, aktuellZeichen, 10)If Tz = "\overline{" Then Tt = Mid(Formel, aktuellZeichen + 11, 1) If Tt = "}" Then Mid(Formel, aktuellZeichen + 2, 8) = "(\s\up1(" Mid(Formel, aktuellZeichen + 11, 1) = ")" Formel = Mid(Formel, 1, aktuellZeichen + 9) & "¯);" & Mid(Formel, aktuellZeichen + 10) End IfEnd IfNext

'bearbeitet WurzelnLänge = Len(Formel)

Page 97: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 97

For aktuellZeichen = Länge - 14 To 7 Step -1Tz = Mid(Formel, aktuellZeichen, 5)If Tz = "\sqrt" Then Formel = Mid(Formel, 1, aktuellZeichen) & "r(" & Mid(Formel, aktuellZeichen + 5) Endzeichen = aktuellZeichen + 3 Tz = Mid(Formel, Endzeichen, 1) If Tz = "[" Then Formel = Mid(Formel, 1, Endzeichen - 1) & Mid(Formel, Endzeichen + 1) While Tz <> "]" Endzeichen = Endzeichen + 1 Tz = Mid(Formel, Endzeichen, 1) If Tz = "" Then Tz = "]" Wend Formel = Mid(Formel, 1, Endzeichen - 1) & Mid(Formel, Endzeichen + 1) Tz = Mid(Formel, Endzeichen, 1) End If If Tz = "{" Then Mid(Formel, Endzeichen, 1) = ";" Klammersumme = 1 While Klammersumme > 0 Endzeichen = Endzeichen + 1 Tz = Mid(Formel, Endzeichen, 1) Klammersumme = Klammersumme + Klammer2(Tz) Wend Mid(Formel, Endzeichen, 1) = ")" End IfEnd IfNext

'BrücheLänge = Len(Formel)For aktuellZeichen = Länge - 17 To 7 Step -1Tz = Mid(Formel, aktuellZeichen, 5)If Tz = "\frac" Then Mid(Formel, aktuellZeichen + 5, 1) = "(" Formel = Mid(Formel, 1, aktuellZeichen + 1) & Mid(Formel, aktuellZeichen + 5) Klammersumme = 1 Endzeichen = aktuellZeichen + 2 While Klammersumme > 0 Endzeichen = Endzeichen + 1 Klammersumme = Klammersumme + Klammer2(Mid(Formel, Endzeichen, 1)) Wend Klammersumme = 1 If Mid(Formel, Endzeichen + 1, 1) = "{" Then Formel = Mid(Formel, 1, Endzeichen - 1) & ";" & Mid(Formel, Endzeichen + 2) While Klammersumme > 0 Endzeichen = Endzeichen + 1 Klammersumme = Klammersumme + Klammer2(Mid(Formel, Endzeichen, 1)) Wend Mid(Formel, Endzeichen, 1) = ")" Else c = MsgBox("Fehler im Bruch der Formel", vbCritical) Formel = Mid(Formel, 1, Endzeichen - 1) & ";fehlt)" & Mid(Formel, Endzeichen + 1) End IfEnd IfNext

'große KlammernLänge = Len(Formel)For aktuellZeichen = Länge - 13 To 7 Step -1Tz = Mid(Formel, aktuellZeichen, 6)If Tz = "\right" Then Formel = Mid(Formel, 1, aktuellZeichen - 1) & Mid(Formel, aktuellZeichen + 6)End IfIf Tz = "\left(" Then Formel = Mid(Formel, 1, aktuellZeichen - 1) & "\b" & Mid(Formel, aktuellZeichen + 5)End IfNext

'^2 ^3Länge = Len(Formel)For aktuellZeichen = Länge - 8 To 8 Step -1Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "^" Then Tz = Mid(Formel, aktuellZeichen + 1, 1) If Tz = "2" Then Formel = Mid(Formel, 1, aktuellZeichen - 1) & "²" & Mid(Formel, aktuellZeichen + 2) ElseIf Tz = "3" Then Formel = Mid(Formel, 1, aktuellZeichen - 1) & "³" & Mid(Formel, aktuellZeichen + 2) End IfEnd If

Page 98: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 98

Next

Länge = Len(Formel)Formel = "EQ " & Mid(Formel, 9, Länge - 15)Länge = Länge - 12Selection.TypeText FormelSelection.MoveLeft Unit:=wdCharacter, Count:=Länge, Extend:=wdExtend

'stellt hochtief von DNApolymerase mit {} statt ()aktuellZeichen = 1For aktuellZeichen = Länge To 5 Step -1Verkürzung = 0Tz = Mid(Formel, aktuellZeichen, 1)If Tz = "^" Then d = 1 ElseIf Tz = "_" Then d = -1 Else d = 0End IfIf d <> 0 Then Tz = Mid(Formel, aktuellZeichen + 1, 1) If Tz = " " Then Selection.Characters(aktuellZeichen + 1) = "" Formel = Selection Tz = Mid(Formel, aktuellZeichen + 1, 1) End If Selection.Characters(aktuellZeichen) = "" '+1 im string If Tz = "{" Then Klammersumme = 1 Selection.Characters(aktuellZeichen) = "" While Klammersumme > 0 If d = 1 Then Selection.Characters(aktuellZeichen).Font.Superscript = True ElseIf d = -1 Then Selection.Characters(aktuellZeichen).Font.Subscript = True End If aktuellZeichen = aktuellZeichen + 1 Verkürzung = Verkürzung + 1 Tz = Mid(Formel, aktuellZeichen + 2, 1) Klammersumme = Klammersumme + Klammer2(Tz) If Tz = "^" Then Selection.Characters(aktuellZeichen).InsertBefore Tz d = 0 ElseIf Tz = "_" Then Selection.Characters(aktuellZeichen).InsertBefore Tz d = 0 End If Wend Selection.Characters(aktuellZeichen) = "" aktuellZeichen = aktuellZeichen - Verkürzung Else 'Tz <> "{" Tz = Mid(Formel, aktuellZeichen + 1, 1) c = Steuerzeichen(Tz) While c = 0 If d = 1 Then Selection.Characters(aktuellZeichen).Font.Superscript = True Else Selection.Characters(aktuellZeichen).Font.Subscript = True End If aktuellZeichen = aktuellZeichen + 1 Verkürzung = Verkürzung + 1 Tz = Mid(Formel, aktuellZeichen + 1, 1) c = Steuerzeichen(Tz) If Tz = "" Or Tz = ";" Then c = 1 End If Wend aktuellZeichen = aktuellZeichen - Verkürzung End IfEnd IfNext

If Hemmung = 1 ThenElsec = Ribozym()Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _PreserveFormatting:=FalseSelection.Fields.UpdateSelection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtendEnd If

Page 99: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 99

End Function

Sub Formelwürfel()Dim a, b, c, d, e, durch, Steuer As IntegerDim Klammersumme, Zusatzlänge, Länge, aktuellZeichen As IntegerDim X, Y, Formel, Tz As StringDim Ort(3), Position(255) As Integer

Application.ScreenUpdating = Falsec = Makrozählen("Formelwürfel ")

For d = 1 To 20 'Anzahl der Formeln

Selection.TypeText ("2")Zusatzlänge = 0durch = 0c = 200 'Komplexitzität der FormelKlammersumme = 0For b = 1 To ca = Int((122 - 32 + 1) * Rnd + 32)X = Chr(a)If Steuer = 0 Then For e = 1 To 4 If Steuerzeichen(X) = 0 Then a = Int((122 - 32 + 1) * Rnd + 32) X = Chr(a) End If If X = "!" Or X = "§" Or X = "%" Then Exit For End If If X = "+" Or X = "j" Or X = "#" Or X = "&" Or X = "$" Then X = "/" Exit For End If NextElse If a < 60 Then a = a + 20 X = Chr(a) Steuer = 0 End IfEnd IfIf a = 41 And Klammersumme = 0 Thena = 40End IfIf a > 65 And a < 122 ThenIf Int(4 * Rnd) = 3 Thena = a + 848End IfEnd IfX = ChrW(a)If b = 1 And (X = "^" Or X = "_") ThenX = "1"End IfIf X = "(" ThenKlammersumme = Klammersumme + 1ElseIf X = ")" ThenKlammersumme = Klammersumme - 1End IfIf X = "!" Or X = "§" Or X = "%" Or X = "." Or X = "@" Then If Klammersumme > 0 Then X = Chr(Int((122 - 98) * Rnd + 97)) & ")^0,5+" Zusatzlänge = Zusatzlänge + 6 Klammersumme = Klammersumme - 1 Else X = "^0,5-" Zusatzlänge = Zusatzlänge + 4 End IfElseIf X = ":" Or X = ";" Then Selection.MoveLeft Unit:=wdCharacter, Count:=1 If Steuerzeichen(Selection.Characters(1)) = 0 Then X = "^(1/" & Chr(Int((122 - 98) * Rnd + 97)) & ")" Zusatzlänge = Zusatzlänge + 5 Else X = "*" End If Selection.MoveRight Unit:=wdCharacter, Count:=1ElseIf X = "\" ThenX = "+"ElseIf X = "j" Or X = "#" Or X = "&" Or X = "$" ThenX = "/"ElseIf X = "=" Then

Page 100: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 100

If Klammersumme = 0 Then X = "(" Klammersumme = Klammersumme + 1 Else X = ")" Klammersumme = Klammersumme - 1 End IfEnd IfIf X = "/" Or X = "*" Then If durch = 1 Then X = "-" End If If X = "/" And durch = 0 Then durch = 1 End IfEnd IfIf X = "+" Or X = "-" Thendurch = 0End If

If b = c ThenIf X = "^" Or X = "_" ThenX = "j"End IfEnd If

If X = "/" ThenX = Chr(Int((122 - 98) * Rnd + 97)) & X & Chr(Int((122 - 98) * Rnd + 97))Zusatzlänge = Zusatzlänge + 2End If

Selection.TypeText (X)X = Left(X, 1)Steuer = Steuerzeichen(X)Next

If Klammersumme > 0 ThenFor b = 1 To KlammersummeSelection.TypeText (")")NextEnd If

Selection.MoveLeft Unit:=wdCharacter, Count:=c + Zusatzlänge + Klammersumme + 1, Extend:=wdExtend

a = DNApolymerase()a = RNApolymerase(1)

'baut große Objekte herumFor c = 1 To 5 'Anzahl der großen Objekte Formel = Selection Länge = Len(Formel) X = "" Klammersumme = 0 aktuellZeichen = 3 e = 0 While aktuellZeichen < Länge aktuellZeichen = aktuellZeichen + 1 Tz = Mid(Formel, aktuellZeichen, 1) If Tz = "\" Then aktuellZeichen = aktuellZeichen + 2 Tz = Mid(Formel, aktuellZeichen, 1) End If If Tz = "(" Then Klammersumme = 1 aktuellZeichen = aktuellZeichen + 1 Tz = Mid(Formel, aktuellZeichen, 1) While Klammersumme > 0 Klammersumme = Klammersumme + Klammer(Tz) aktuellZeichen = aktuellZeichen + 1 Tz = Mid(Formel, aktuellZeichen, 1) If Tz = "(" And Klammersumme = 0 Then Klammersumme = 1 aktuellZeichen = aktuellZeichen + 1 Tz = Mid(Formel, aktuellZeichen, 1) End If If Tz = "\" And Klammersumme = 0 Then Klammersumme = 1 aktuellZeichen = aktuellZeichen + 3 Tz = Mid(Formel, aktuellZeichen, 1) End If Wend End If

Page 101: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 101

e = e + 1 Position(e) = aktuellZeichen X = X & Tz Wend e = Len(X)

a = Int(Rnd() * 4 + 1) If c = 1 Then a = 4 Ort(1) = Int(Rnd() * (e + 1) + 1) Ort(2) = Int(Rnd() * (e + 1) + 1) If Ort(1) = Ort(2) Then Ort(2) = Ort(1) + 1 If Ort(2) < Ort(1) Then Ort(0) = Ort(1) ' Ort 1 ist kleiner Ort(1) = Ort(2) Ort(2) = Ort(0) End If If Ort(2) > e Then Position(Ort(2)) = Länge Ort(1) = Ort(1) - 1 If Ort(1) = 0 Then Ort(1) = 1 End If If Ort(2) - Ort(1) = 1 Then If Position(Ort(2)) - Position(Ort(1)) = 1 Then If Ort(1) > 2 Then Ort(1) = Ort(1) \ 2 + 1 End If End If If a = 3 Or a = 4 Then Ort(3) = (Ort(2) + Ort(1)) \ 2 If Ort(3) = Ort(1) Then a = 2 If Ort(2) = Ort(3) Then a = 1 If Ort(2) - e = 2 Then a = 1 End IfX = X If a = 1 Then 'Ort 2 = Ende, Ort 1 = Anfang und Ort 3 = Mitte Selection.Characters(Position(Ort(2))).InsertBefore (")") Selection.Characters(Position(Ort(2))).Font.Color = wdColorSkyBlue Selection.Characters(Position(Ort(1))).InsertAfter ("\B(") 'a Selection.Characters(Position(Ort(1))).Font.Color = wdColorSkyBlue End If If a = 2 Then Selection.Characters(Position(Ort(2))).InsertBefore (")") Selection.Characters(Position(Ort(2))).Font.Color = wdColorSkyBlue Selection.Characters(Position(Ort(1))).InsertAfter ("\r(;") 'a Selection.Characters(Position(Ort(1))).Font.Color = wdColorSkyBlue End If If a = 3 Or a = 4 Then Selection.Characters(Position(Ort(2))).InsertBefore (")") Selection.Characters(Position(Ort(2))).Font.Color = wdColorSkyBlue If Selection.Characters(Position(Ort(3))) = "+" Then Selection.Characters(Position(Ort(3))) = ";" Selection.Characters(Position(Ort(3))).Font.Color = wdColorSkyBlue Else Selection.Characters(Position(Ort(3))).InsertAfter (";") 'a Selection.Characters(Position(Ort(3)) + 1).Font.Color = wdColorSkyBlue End If Selection.Characters(Position(Ort(1))).InsertAfter ("\F(") 'a Selection.Characters(Position(Ort(1)) + 1).Font.Color = wdColorSkyBlue End IfNext

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _PreserveFormatting:=FalseSelection.Fields.UpdateSelection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend

If Selection = "Fehler" Thend = d + 1End If

Selection.MoveDown Unit:=wdLine, Count:=1Selection.TypeParagraphSelection.MoveUp Unit:=wdLine, Count:=1

NextApplication.ScreenUpdating = True

End Sub

Public Function Dateieinlesen(ByVal Dateiname As String) As String Dim f As Integer

Page 102: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 102

Dim DateiInhalt As String If Dir$(Dateiname, vbNormal) <> "" Then f = FreeFile Open Dateiname For Binary As #f DateiInhalt = Space$(LOF(f)) Get #f, , DateiInhalt Close #f End If Dateieinlesen = DateiInhaltEnd Function

Function Makrozählen(ByVal Makroeintrag As String) As Integer Dim Makrodatei As String Dim Makrodateiort As String Dim ii%, iia%, Li%, f As Integer Dim Ordner As String Dim Ttxt As String Dim Anzal As Variant Ordner = "C:\0D" Makrodateiort = Ordner & "\Makroz.txt" Makrodatei = Dateieinlesen(Makrodateiort) If Makrodatei = "" Then Makrodatei = "Bild einfügen :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "WMF einfügen :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "PowerWMFeinfügen :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "KKTausrechnen :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "vKKTausrechnen :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "KKTformelumwandler+ :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "KKTfurmelumwandler- :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "Formelwürfel :0" & Chr(13) & Chr(10) Makrodatei = Makrodatei & "Zeichen einkreisen :0" & Chr(13) & Chr(10) If Dir(Ordner, vbDirectory) = "" Then MkDir (Ordner) End If End If Li = Len(Makrodatei) If Right(Makrodatei, 2) = Chr(13) & Chr(10) Then Li = Li - 2 Makrodatei = Left(Makrodatei, Li) End If For ii = 1 To Li Ttxt = Mid(Makrodatei, ii, Len(Makroeintrag)) If Ttxt = Makroeintrag Then Exit For Next ii = ii + Len(Makroeintrag) + 1 iia = ii Ttxt = Mid(Makrodatei, ii, 1) While IstZahl(Ttxt) = 1 ii = ii + 1 Ttxt = Mid(Makrodatei, ii, 1) Wend Anzal = Mid(Makrodatei, iia, ii - iia) Anzal = Anzal + 1 Makrodatei = Left(Makrodatei, iia - 1) & Anzal & Right(Makrodatei, Li - ii + 1) f = FreeFile Open Makrodateiort For Output As #f Print #f, Makrodatei Close #f Makrozählen = Anzal

End Function

Sub Zeicheneinkreisen()Dim Zeichenwert, Länge, c, d, e As IntegerDim Zeichen As String

c = Makrozählen("Zeichen einkreisen ")Zeichen = Selectiond = Asc(Zeichen)If d = 11 Or d = 13 Then Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtendZeichen = Selectiond = Asc(Zeichen)If d = 11 Or d = 13 Then Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtendZeichen = SelectionLänge = Len(Zeichen)

Page 103: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 103

Zeichenwert = Asc(Zeichen)

c = 0If (Zeichenwert > 48 And Zeichenwert < 58) And Länge = 1 Then Zeichenwert = Zeichenwert + 9263 c = 1End IfIf (Zeichenwert > 64 And Zeichenwert < 91) And Länge = 1 Then Zeichenwert = Zeichenwert + 9333 c = 1End IfIf (Zeichenwert > 96 And Zeichenwert < 123) And Länge = 1 Then Zeichenwert = Zeichenwert + 9327 c = 1End If

If Länge = 2 Then Select Case Zeichen Case "10": Zeichenwert = 9321: c = 1 Case "11": Zeichenwert = 9322: c = 1 Case "12": Zeichenwert = 9323: c = 1 Case "13": Zeichenwert = 9324: c = 1 Case "14": Zeichenwert = 9325: c = 1 Case "15": Zeichenwert = 9326: c = 1 Case "16": Zeichenwert = 9327: c = 1 Case "17": Zeichenwert = 9328: c = 1 Case "18": Zeichenwert = 9329: c = 1 Case "19": Zeichenwert = 9330: c = 1 Case "20": Zeichenwert = 9331: c = 1 End SelectEnd IfIf c = 1 Then Selection.TypeText ChrW(Zeichenwert)End Sub

'WMFzerlegerFunction WmfZahl(ByVal a As String) As LongWmfZahl = Asc(Mid(a, 1, 1)) + Asc(Mid(a, 2, 1)) * 256&If WmfZahl > 32767 Then WmfZahl = WmfZahl - 65536End FunctionFunction RekordZahl(ByVal Rekord$, Doppelbyte%) As LongDim tx As Stringtx = Mid(Rekord, Doppelbyte * 2 - 1, 2)RekordZahl = Asc(Mid(tx, 1, 1)) + Asc(Mid(tx, 2, 1)) * 256&If RekordZahl > 32767 Then RekordZahl = RekordZahl - 65536End FunctionFunction WmfZeichen(ByVal a As Long) As StringIf a < 0 Then a = a + 65536WmfZeichen = Chr(a Mod 256) & Chr(a \ 256)End FunctionFunction WmfPunkt(ByVal X As Long, ByVal Y As Long) As StringIf X < 0 Then X = X + 65536WmfPunkt = Chr(X Mod 256) & Chr(X \ 256)If Y < 0 Then Y = Y + 65536WmfPunkt = WmfPunkt & Chr(Y Mod 256) & Chr(Y \ 256)End FunctionFunction WmfBiPunkt(ByVal x1&, ByVal y1&, ByVal x2&, ByVal y2&) As StringIf x1 < 0 Then x1 = x1 + 65536 'WmfBiPunkt = 4 x WmfzeichenWmfBiPunkt = Chr(x1 Mod 256) & Chr(x1 \ 256)If y1 < 0 Then y1 = y1 + 65536WmfBiPunkt = WmfBiPunkt & Chr(y1 Mod 256) & Chr(y1 \ 256)If x2 < 0 Then x2 = x2 + 65536WmfBiPunkt = WmfBiPunkt & Chr(x2 Mod 256) & Chr(x2 \ 256)If y2 < 0 Then y2 = y2 + 65536WmfBiPunkt = WmfBiPunkt & Chr(y2 Mod 256) & Chr(y2 \ 256)End FunctionFunction LinieZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%) As StringLinieZeichnen = Chr(8) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(805) & Chr(2) & Chr(0)LinieZeichnen = LinieZeichnen & WmfBiPunkt(x1, y1, x2, y2)End FunctionFunction BiLinieZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal x3%, ByVal y3%) As StringBiLinieZeichnen = Chr(10) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(805) & Chr(3) & Chr(0)BiLinieZeichnen = BiLinieZeichnen & WmfBiPunkt(x1, y1, x2, y2) & WmfPunkt(x3, y3)End FunctionFunction TriLinieZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal x3%, ByVal y3%, ByVal x4%, ByVal y4%) As StringTriLinieZeichnen = Chr(12) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(805) & Chr(4) & Chr(0)TriLinieZeichnen = TriLinieZeichnen & WmfBiPunkt(x1, y1, x2, y2) & WmfBiPunkt(x3, y3, x4, y4)End FunctionFunction DreieckZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal x3%, ByVal y3%) As StringDreieckZeichnen = Chr(10) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(804) & Chr(3) & Chr(0)DreieckZeichnen = DreieckZeichnen & WmfBiPunkt(x1, y1, x2, y2) & WmfPunkt(x3, y3)End Function

Page 104: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 104

Function ViereckZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal x3%, ByVal y3%, ByVal x4%, ByVal y4%) As StringViereckZeichnen = Chr(12) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(804) & Chr(4) & Chr(0)ViereckZeichnen = ViereckZeichnen & WmfBiPunkt(x1, y1, x2, y2) & WmfBiPunkt(x3, y3, x4, y4)End FunctionFunction RechteckZeichnen(ByVal y1%, ByVal x1%, ByVal y2%, ByVal x2%) As StringDim minX%, maxX%, minY%, maxY As IntegerIf y1 > y2 Then maxY = y1: minY = y2 Else maxY = y2: minY = y1If x1 > x2 Then maxX = x1: minX = x2 Else maxX = x2: minX = x1RechteckZeichnen = Chr(7) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(1051)RechteckZeichnen = RechteckZeichnen & WmfBiPunkt(maxY, maxX, minY, minX)End FunctionFunction EllipseZeichnen(ByVal y1%, ByVal x1%, ByVal y2%, ByVal x2%) As StringDim minX%, maxX%, minY%, maxY As IntegerIf y1 > y2 Then maxY = y1: minY = y2 Else maxY = y2: minY = y1If x1 > x2 Then maxX = x1: minX = x2 Else maxX = x2: minX = x1EllipseZeichnen = Chr(7) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(1048)EllipseZeichnen = EllipseZeichnen & WmfBiPunkt(maxY, maxX, minY, minX)End FunctionFunction RundesRechteckZeichnen(ByVal r%, ByVal y1%, ByVal x1%, ByVal y2%, ByVal x2%) As StringDim minX%, maxX%, minY%, maxY As IntegerIf y1 > y2 Then maxY = y1: minY = y2 Else maxY = y2: minY = y1If x1 > x2 Then maxX = x1: minX = x2 Else maxX = x2: minX = x1RundesRechteckZeichnen = Chr(9) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(1564)RundesRechteckZeichnen = RundesRechteckZeichnen & WmfPunkt(r, r) & WmfBiPunkt(maxY, maxX, minY, minX)End FunctionFunction PolylinieZeichnen(ByVal Punkte As String) As StringDim a As Integera = Len(Punkte) / 4PolylinieZeichnen = WmfBiPunkt(2 * a + 4, 0, 805, a) & PunkteEnd FunctionFunction PolygonZeichnen(ByVal Punkte As String) As StringDim a As Integera = Len(Punkte) / 4PolygonZeichnen = WmfBiPunkt(2 * a + 4, 0, 804, a) & PunkteEnd FunctionFunction TextZeichnen(ByVal Text$, ByVal y1%, ByVal x1%) As StringDim Länge As IntegerLänge = Len(Text)If Länge = 0 Then Exit FunctionTextZeichnen = WmfZeichen(1313) & Chr(Länge) & Chr(0)If Länge Mod 2 = 1 Then Länge = Länge + 1: Text = Text & Chr(0)TextZeichnen = WmfZeichen(6 + Länge / 2) & Chr(0) & Chr(0) & TextZeichnen & Text & WmfPunkt(y1, x1)End FunctionFunction ObjektWählen(ByVal Nummer%) As StringObjektWählen = Chr(4) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(301) & WmfZeichen(Nummer)End FunctionFunction PinselErstellen(ByVal rot%, ByVal grün%, ByVal blau%) As StringPinselErstellen = Chr(7) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(764) & Chr(0) & Chr(0)PinselErstellen = PinselErstellen & Chr(rot) & Chr(grün) & Chr(blau) & Chr(0) & Chr(0) & Chr(0)End FunctionFunction FüllerErstellen(ByVal Dicke%, ByVal rot%, ByVal grün%, ByVal blau%) As StringFüllerErstellen = Chr(8) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(762) & Chr(0) & Chr(0)FüllerErstellen = FüllerErstellen & WmfZeichen(Dicke) & Chr(0) & Chr(0) & Chr(rot) & Chr(grün) & Chr(blau) & Chr(0)End FunctionFunction FontErstellen(ByVal Dicke%, ByVal Winkel%) As StringDim a As IntegerFontErstellen = Chr(28) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(763) & WmfZeichen(Dicke)FontErstellen = FontErstellen & Chr(0) & Chr(0) & WmfZeichen(Winkel) & Chr(0) & Chr(0) & WmfZeichen(400) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0)FontErstellen = FontErstellen & "Times New Roman"For a = 1 To 17 FontErstellen = FontErstellen & Chr(0)NextEnd FunctionFunction BogenZeichnen(ByVal pax&, ByVal pay&, ByVal ppx&, ByVal ppy&, ByVal pex&, ByVal pey&) As StringDim pmx#, pmy#, dx#, px#, py#, Radius As Double

If pex <> pax Then px = ppx ^ 2 - pax ^ 2 + ppy ^ 2 - pay ^ 2 py = pex ^ 2 - pax ^ 2 + pey ^ 2 - pay ^ 2 pmy = px * (pex - pax) - py * (ppx - pax) dx = (ppy - pay) * (pex - pax) - (pey - pay) * (ppx - pax) pmy = 0.5 * pmy / dx pmx = (py - 2 * pmy * (pey - pay)) / (2 * pex - 2 * pax)Else px = pex ^ 2 - pax ^ 2 + pey ^ 2 - pay ^ 2 py = ppx ^ 2 - pax ^ 2 + ppy ^ 2 - pay ^ 2 pmy = px * (ppx - pax) - py * (pex - pax) dx = (pey - pay) * (ppx - pax) - (ppy - pay) * (pex - pax)

Page 105: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 105

pmy = 0.5 * pmy / dx pmx = (py - 2 * pmy * (ppy - pay)) / (2 * ppx - 2 * pax)End IfRadius = Sqr((pay - pmy) ^ 2 + (pax - pmx) ^ 2)BogenZeichnen = Chr(11) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(2071)If PositiverWinkel(pax - pmx, pay - pmy, ppx - pmx, ppy - pmy) Then BogenZeichnen = BogenZeichnen & WmfBiPunkt(pay, pax, pey, pex) Else BogenZeichnen = BogenZeichnen & WmfBiPunkt(pey, pex, pay, pax)End IfBogenZeichnen = BogenZeichnen & WmfBiPunkt(pmy - Radius, pmx - Radius, pmy + Radius, pmx + Radius)

End Function

Function BogenPfeilZeichnen(ByVal pax&, ByVal pay&, ByVal ppx&, ByVal ppy&, ByVal pex&, ByVal pey&, ByVal pg%) As StringDim pmx#, pmy#, dx#, px#, py#, Radius#, Winkel As DoubleDim xa#, ya#, xb#, yb As Double

If pex <> pax Then px = ppx ^ 2 - pax ^ 2 + ppy ^ 2 - pay ^ 2 py = pex ^ 2 - pax ^ 2 + pey ^ 2 - pay ^ 2 pmy = px * (pex - pax) - py * (ppx - pax) dx = (ppy - pay) * (pex - pax) - (pey - pay) * (ppx - pax) pmy = 0.5 * pmy / dx pmx = (py - 2 * pmy * (pey - pay)) / (2 * pex - 2 * pax)Else px = pex ^ 2 - pax ^ 2 + pey ^ 2 - pay ^ 2 py = ppx ^ 2 - pax ^ 2 + ppy ^ 2 - pay ^ 2 pmy = px * (ppx - pax) - py * (pex - pax) dx = (pey - pay) * (ppx - pax) - (ppy - pay) * (pex - pax) pmy = 0.5 * pmy / dx pmx = (py - 2 * pmy * (ppy - pay)) / (2 * ppx - 2 * pax)End IfRadius = Sqr((pay - pmy) ^ 2 + (pax - pmx) ^ 2)BogenPfeilZeichnen = Chr(11) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(2071)If PositiverWinkel(pax - pmx, pay - pmy, ppx - pmx, ppy - pmy) Then BogenPfeilZeichnen = BogenPfeilZeichnen & WmfBiPunkt(pay, pax, pey, pex) Else BogenPfeilZeichnen = BogenPfeilZeichnen & WmfBiPunkt(pey, pex, pay, pax)End IfBogenPfeilZeichnen = BogenPfeilZeichnen & WmfBiPunkt(pmy - Radius, pmx - Radius, pmy + Radius, pmx + Radius)

BogenPfeilZeichnen = BogenPfeilZeichnen & Chr(10) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(804) & Chr(3) & Chr(0)BogenPfeilZeichnen = BogenPfeilZeichnen & WmfPunkt(pax, pay)If pmx - pax = 0 Then If pmy > pay Then Winkel = 1.5708 Else Winkel = -1.5708Else If pmx - pax < 0 Then Winkel = 3.1416 Else Winkel = 0 Winkel = Winkel + Atn((pmy - pay) / (pmx - pax))End IfIf PositiverWinkel(pax - pmx, pay - pmy, ppx - pmx, ppy - pmy) Then Winkel = Winkel + 1.5708 + 0.5 * pg / Radius Else Winkel = Winkel - 1.5708 - 0.5 * pg / RadiusEnd If

xa = pax - pg * Cos(Winkel - Atn(0.5)) / 0.895ya = pay - pg * Sin(Winkel - Atn(0.5)) / 0.895xb = pax - pg * Cos(Winkel + Atn(0.5)) / 0.895yb = pay - pg * Sin(Winkel + Atn(0.5)) / 0.895BogenPfeilZeichnen = BogenPfeilZeichnen & WmfBiPunkt(xa, ya, xb, yb)

End Function

Function PfeilspitzeZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal Pfeilspitze%) As StringDim Wert As DoubleDim xa%, ya%, xb%, yb%, pg As IntegerDim Linienlänge As Double

Linienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)If Linienlänge > 7 Then pg = Pfeilspitze If Linienlänge / 3 < Pfeilspitze Then pg = Linienlänge / 3 End If PfeilspitzeZeichnen = Chr(10) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(804) & Chr(3) & Chr(0) PfeilspitzeZeichnen = PfeilspitzeZeichnen & WmfPunkt(x2, y2) If x2 - x1 = 0 Then

Page 106: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 106

If y2 > y1 Then Wert = 1.5708 Else Wert = -1.5708 Else If x2 - x1 < 0 Then Wert = 3.1416 Else Wert = 0 Wert = Wert + Atn((y2 - y1) / (x2 - x1)) End If xa = x2 - pg * Cos(Wert - Atn(0.5)) / 0.895 ya = y2 - pg * Sin(Wert - Atn(0.5)) / 0.895 xb = x2 - pg * Cos(Wert + Atn(0.5)) / 0.895 yb = y2 - pg * Sin(Wert + Atn(0.5)) / 0.895 PfeilspitzeZeichnen = PfeilspitzeZeichnen & WmfBiPunkt(xa, ya, xb, yb)Else PfeilspitzeZeichnen = ""End If

End Function

Function MaßPfeilspitzeZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal Pfeilspitze%) As StringDim dx%, dy%, pg As IntegerDim Linienlänge As Double

Linienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)If Linienlänge > 7 Then pg = Pfeilspitze If Linienlänge / 3 < Pfeilspitze Then pg = Linienlänge / 3 End If MaßPfeilspitzeZeichnen = PfeilspitzeZeichnen(x1, y1, x2, y2, Pfeilspitze) dx = (y2 - y1) / Linienlänge * pg dy = (x1 - x2) / Linienlänge * pg MaßPfeilspitzeZeichnen = MaßPfeilspitzeZeichnen & LinieZeichnen(Int(x2 - dx), Int(y2 - dy), Int(x2 + dx), Int(y2 + dy))Else MaßPfeilspitzeZeichnen = ""End If

End Function

Function BiMaßPfeilspitzeZeichnen(ByVal xL%, ByVal yL%, ByVal xR%, ByVal yR%, ByVal xM%, ByVal yM%, ByVal Pfeilspitze%) As StringDim Wert As DoubleDim dx%, dy%, PgL%, PgR As IntegerDim xa%, ya%, xb%, yb As IntegerDim LinienlängeL#, LinienlängeR As Double

LinienlängeL = Sqr((xM - xL) ^ 2 + (yM - yL) ^ 2)LinienlängeR = Sqr((xR - xM) ^ 2 + (yR - yM) ^ 2)

If LinienlängeL > 7 And LinienlängeR > 7 Then PgL = Pfeilspitze PgR = Pfeilspitze If LinienlängeL / 3 < Pfeilspitze Then PgL = LinienlängeL / 3 If LinienlängeR / 3 < Pfeilspitze Then PgR = LinienlängeR / 3 If LinienlängeL < LinienlängeR Then dx = (yM - yL) / LinienlängeL * PgL dy = (xL - xM) / LinienlängeL * PgL Else dx = (yR - yM) / LinienlängeR * PgR dy = (xM - xR) / LinienlängeR * PgR End If BiMaßPfeilspitzeZeichnen = LinieZeichnen(Int(xM - dx), Int(yM - dy), Int(xM + dx), Int(yM + dy)) If xR - xL = 0 Then If yR > yL Then Wert = 1.5708 Else Wert = -1.5708 Else If xR - xL < 0 Then Wert = 3.1416 Else Wert = 0 Wert = Wert + Atn((yR - yL) / (xR - xL)) End If xa = xM - PgL * Cos(Wert - Atn(0.5)) / 0.895 ya = yM - PgL * Sin(Wert - Atn(0.5)) / 0.895 xb = xM - PgL * Cos(Wert + Atn(0.5)) / 0.895 yb = yM - PgL * Sin(Wert + Atn(0.5)) / 0.895 BiMaßPfeilspitzeZeichnen = BiMaßPfeilspitzeZeichnen & Chr(12) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(804) & Chr(4) & Chr(0) BiMaßPfeilspitzeZeichnen = BiMaßPfeilspitzeZeichnen & WmfBiPunkt(xa, ya, xb, yb) xa = xM + PgR * Cos(Wert - Atn(0.5)) / 0.895 ya = yM + PgR * Sin(Wert - Atn(0.5)) / 0.895 xb = xM + PgR * Cos(Wert + Atn(0.5)) / 0.895 yb = yM + PgR * Sin(Wert + Atn(0.5)) / 0.895 BiMaßPfeilspitzeZeichnen = BiMaßPfeilspitzeZeichnen & WmfBiPunkt(xb, yb, xa, ya)Else BiMaßPfeilspitzeZeichnen = ""End If

Page 107: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 107

End Function

Function Linieüberschreiben(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal Pfeilspitze%, ByVal Text As String) As StringDim Linienlänge As DoubleDim xt#, yt#, dx#, dy As DoubleDim Texthochschieben#, Textlinksschieben As DoubleDim Textlänge As Double

Linienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)If Text <> "" And Linienlänge > 1 Then xt = x1 / 2 + x2 / 2 yt = y1 / 2 + y2 / 2 Textlänge = Zahllänge(Text) * Pfeilspitze * 0.7 Textlinksschieben = Textlänge / 2 If Textlänge < Linienlänge Then If Textlänge < Linienlänge - 2 * Pfeilspitze Then Texthochschieben = 1.75 * Pfeilspitze Else Texthochschieben = 2 * Pfeilspitze End If Else If Linienlänge / 3 < Pfeilspitze Then Texthochschieben = 2 * Pfeilspitze Else Texthochschieben = 2.25 * Pfeilspitze End If End If xt = xt + (Texthochschieben * (y2 - y1) + Textlinksschieben * (x1 - x2)) / Linienlänge yt = yt + (Texthochschieben * (x1 - x2) + Textlinksschieben * (y1 - y2)) / Linienlänge Linieüberschreiben = TextZeichnen(Text, yt, xt)ElseLinieüberschreiben = ""End If

End Function

Function PfeilZeichnen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal Pfeilspitze%) As StringDim Linienlänge As DoubleLinienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)If Linienlänge > 1 Then PfeilZeichnen = LinieZeichnen(x1, y1, x2, y2) & PfeilspitzeZeichnen(x1, y1, x2, y2, Pfeilspitze) Else PfeilZeichnen = ""End IfEnd Function

Function Vermaßen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal Pfeilspitze%, ByVal Text As String) As StringDim Linienlänge As Double

Linienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)If Linienlänge > 7 Then Vermaßen = LinieZeichnen(x1, y1, x2, y2) Vermaßen = Vermaßen & MaßPfeilspitzeZeichnen(x1, y1, x2, y2, Pfeilspitze) Vermaßen = Vermaßen & MaßPfeilspitzeZeichnen(x2, y2, x1, y1, Pfeilspitze) Else Vermaßen = ""End IfVermaßen = Vermaßen & Linieüberschreiben(x1, y1, x2, y2, Pfeilspitze, Text)

End Function

Function BiVermaßen(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal x3%, ByVal y3%, ByVal Pfeilspitze%, ByVal Text1 As String, ByVal Text2 As String) As StringDim Linienlänge As Double

Linienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)If Linienlänge > 7 Then BiVermaßen = LinieZeichnen(x1, y1, x2, y2) BiVermaßen = BiVermaßen & MaßPfeilspitzeZeichnen(x3, y3, x2, y2, Pfeilspitze) BiVermaßen = BiVermaßen & MaßPfeilspitzeZeichnen(x3, y3, x1, y1, Pfeilspitze) BiVermaßen = BiVermaßen & BiMaßPfeilspitzeZeichnen(x1, y1, x2, y2, x3, y3, Pfeilspitze) Else BiVermaßen = ""End IfBiVermaßen = BiVermaßen & Linieüberschreiben(x1, y1, x3, y3, Pfeilspitze, Text1)BiVermaßen = BiVermaßen & Linieüberschreiben(x3, y3, x2, y2, Pfeilspitze, Text2)

End Function

Page 108: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 108

Function Polymaßkette(ByVal x1%, ByVal y1%, ByVal x2%, ByVal y2%, ByVal Beschriftung$, ByRef Werte())Dim Texte As IntegerDim Text() As StringDim xa#, ya#, xb#, yb#, xc#, yc As DoubleDim pg%, a%, b%, Länge As IntegerDim tx As StringDim Linienlänge As Double

Linienlänge = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)Texte = Werte(0)ReDim Text(Texte)pg = Werte(Texte)Länge = Len(Beschriftung)b = 1For a = 1 To Länge tx = Mid(Beschriftung, a, 1) If tx = ";" Then b = b + 1 If b > Texte Then Exit For Else Text(b) = Text(b) & tx End IfNext

If Texte = 1 Then xb = x2: yb = y2 Else xb = x1 + (x2 - x1) / Linienlänge * Werte(1) yb = y1 + (y2 - y1) / Linienlänge * Werte(1)End IfPolymaßkette = LinieZeichnen(x1, y1, x2, y2) & MaßPfeilspitzeZeichnen(xb, yb, x1, y1, pg)

xb = x1: yb = y1For a = 1 To Texte - 1 xa = xb: ya = yb xb = x1 + (x2 - x1) / Linienlänge * Werte(a) yb = y1 + (y2 - y1) / Linienlänge * Werte(a) If a = Texte - 1 Then xc = x2: yc = y2 Else xc = x1 + (x2 - x1) / Linienlänge * Werte(a + 1) yc = y1 + (y2 - y1) / Linienlänge * Werte(a + 1) End If Polymaßkette = Polymaßkette & BiMaßPfeilspitzeZeichnen(xa, ya, xc, yc, xb, yb, pg) & Linieüberschreiben(xa, ya, xb, yb, pg, Text(a))NextPolymaßkette = Polymaßkette & Linieüberschreiben(xb, yb, x2, y2, pg, Text(a)) & MaßPfeilspitzeZeichnen(xb, yb, x2, y2, pg)

End FunctionFunction Zahllänge(ByVal Zahl As String) As DoubleDim a%, b As IntegerDim tx As StringDim Länge As Double

b = Len(Zahl)Länge = bFor a = 1 To b tx = Mid(Zahl, a, 1) Select Case tx Case "-": Länge = Länge - 0.3 Case ".", ",", " ", ";": Länge = Länge - 0.5 Case "^", "_": Länge = Länge - 1 End SelectNextZahllänge = LängeEnd Function

Function WMFheader(ByVal Inhalt As String) As StringDim Objekte%, Objektgröße As IntegerDim a&, Maxrecord&, Dateigröße As LongDim Header As StringDim b%, c%, d As IntegerDim tx As String

Dateigröße = Len(Inhalt) / 2Maxrecord = 7Objekte = 0

While a < Dateigröße Objektgröße = WmfZahl(Mid(Inhalt, 2 * a + 1, 2)) b = WmfZahl(Mid(Inhalt, 2 * a + 5, 2))

Page 109: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 109

If Maxrecord < Objektgröße Then Maxrecord = Objektgröße Objekte = Objekte + 1 a = a + Objektgröße If Objektgröße = 0 Then a = Dateigröße + 1 If b = 0 Then a = Dateigröße + 1Wend

Header = Chr(1) & Chr(0) & Chr(9) & Chr(0) & Chr(0) & Chr(3)Dateigröße = Dateigröße + 12 'Header und EoFa = Dateigröße Mod 256Dateigröße = Dateigröße \ 256b = Dateigröße Mod 256Dateigröße = Dateigröße \ 256c = Dateigröße Mod 256Dateigröße = Dateigröße \ 256d = Dateigröße Mod 256Header = Header & Chr(a) & Chr(b) & Chr(c) & Chr(d) & WmfZeichen(Objekte)Header = Header & WmfZeichen(Maxrecord) & Chr(0) & Chr(0) & Chr(0) & Chr(0)WMFheader = HeaderEnd Function

Function Punkteinvertieren(Punktstring As String) As StringDim a%, Punkte As IntegerDim Koordinaten As String Punkte = Len(Punktstring) \ 4 For a = 1 To Punkte Koordinaten = Mid(Punktstring, a * 4 - 3, 4) & Koordinaten Next Punkteinvertieren = KoordinatenEnd Function

Function Polygonfläche(Punktstring As String) As LongDim a%, Punkte As IntegerDim X() As LongDim Y() As LongDim Fläche As Long'berechnet die doppelte PolygonflächePunkte = Len(Punktstring) \ 4ReDim X(Punkte)ReDim Y(Punkte)For a = 1 To Punkte X(a) = RekordZahl(Punktstring, a * 2 - 1) Y(a) = RekordZahl(Punktstring, a * 2)NextFläche = X(Punkte) * Y(1) - Y(Punkte) * X(1)For a = 1 To Punkte - 1 Fläche = Fläche + X(a) * Y(a + 1) - Y(a) * X(a + 1)NextPolygonfläche = FlächeEnd Function

Function Checksumme(ByVal Preader As String) As IntegerDim w(16) As IntegerDim a%, b%, Wert As Integer

w(0) = 1: w(1) = 0: w(2) = 0: w(3) = 0w(4) = 1: w(5) = 0: w(6) = 0: w(7) = 0w(8) = 1: w(9) = 1: w(10) = 1: w(11) = 0w(12) = 1: w(13) = 0: w(14) = 1: w(15) = 0

For b = 3 To 10 Wert = WmfZahl(Mid(Preader, b * 2 - 1, 2)) For a = 0 To 15 If Wert Mod 2 = 1 Then w(a) = w(a) + 1 Wert = Wert \ 2 NextNext

If w(15) Mod 2 = 1 Then Wert = -1 Else Wert = 0For a = 14 To 0 Step -1 Wert = Wert * 2 If w(a) Mod 2 = 1 Then Wert = Wert + 1Next

Checksumme = WertEnd Function

Function PositiverWinkel(ByVal x1 As Double, ByVal y1 As Double, ByVal x2 As Double, ByVal y2 As Double) As BooleanDim Quadrant1 As IntegerDim Quadrant2 As IntegerDim dx#, dy As Double

Page 110: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 110

If x1 > 0 And y1 > 0 Then Quadrant1 = 2If x1 < 0 And y1 > 0 Then Quadrant1 = 4If x1 < 0 And y1 < 0 Then Quadrant1 = 6If x1 > 0 And y1 < 0 Then Quadrant1 = 8If x1 > 0 And y1 = 0 Then Quadrant1 = 1If x1 = 0 And y1 > 0 Then Quadrant1 = 3If x1 < 0 And y1 = 0 Then Quadrant1 = 5If x1 = 0 And y1 < 0 Then Quadrant1 = 7

If x2 > 0 And y2 > 0 Then Quadrant2 = 2If x2 < 0 And y2 > 0 Then Quadrant2 = 4If x2 < 0 And y2 < 0 Then Quadrant2 = 6If x2 > 0 And y2 < 0 Then Quadrant2 = 8If x2 > 0 And y2 = 0 Then Quadrant2 = 1If x2 = 0 And y2 > 0 Then Quadrant2 = 3If x2 < 0 And y2 = 0 Then Quadrant2 = 5If x2 = 0 And y2 < 0 Then Quadrant2 = 7

'Drehung von 350° ist Drehung von 10° in die andere RichtungIf Quadrant1 = 8 Then If Quadrant2 = 1 Or Quadrant2 = 2 Then Quadrant1 = 0End IfIf Quadrant2 = 8 Then If Quadrant1 = 1 Or Quadrant1 = 2 Then Quadrant2 = 0End If

If Quadrant2 > Quadrant1 Then PositiverWinkel = TrueElseIf Quadrant2 < Quadrant1 Then PositiverWinkel = FalseElse dx = Abs(x1 - x2) dy = Abs(y1 - y2) If dy > dx Then Select Case Quadrant1 Case 2 If y2 > y1 Then PositiverWinkel = True Else PositiverWinkel = False Case 4 If y2 < y1 Then PositiverWinkel = True Else PositiverWinkel = False Case 6 If y2 < y1 Then PositiverWinkel = True Else PositiverWinkel = False Case 8 If y2 > y1 Then PositiverWinkel = True Else PositiverWinkel = False End Select Else Select Case Quadrant1 Case 2 If x2 < x1 Then PositiverWinkel = True Else PositiverWinkel = False Case 4 If x2 < x1 Then PositiverWinkel = True Else PositiverWinkel = False Case 6 If x2 > x1 Then PositiverWinkel = True Else PositiverWinkel = False Case 8 If x2 > x1 Then PositiverWinkel = True Else PositiverWinkel = False End Select End IfEnd If

End Function

Function Polyglätten(ByVal Polylinie As String, ByVal Kompression As Double) As String'Version vom 13.9.2016Dim x1%, x2%, x3%, y1%, y2%, y3%, i%, Punkte As IntegerDim minX&, minY&, maxX&, maxY As LongDim minXzu&, minYzu&, maxXzu&, maxYzu As LongDim pax&, ppx&, pex&, pay&, ppy&, pey As LongDim pmx#, pmy#, Überlauf As DoubleDim dx#, dy#, mx#, my#, dx12#, dx13#, dx23#, dy12#, dy13#, dy23#, elliptisch As DoubleDim Hilfstext$, tx As StringDim MaxAbstand#, MaxAbstand2#, Abstand#, Abstand12#, Abstand13#, Abstand23 As DoubleDim x1minY#, x2minY#, y1maxX#, y2maxX#, x1maxY#, x2maxY#, y1minX#, y2minX As DoubleDim px#, py#, Radius#, RadiusX#, RadiusY As DoubleDim NeuPunkte%, PunkteLöschen%, Ecke As IntegerDim X() As LongDim Y() As LongDim Z() As LongDim Xe() As LongDim Ye() As Long

Page 111: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 111

Dim Ze() As LongDim Abstende() As DoubleDim Typ As Integer

Typ = RekordZahl(Polylinie, 3)Punkte = RekordZahl(Polylinie, 4)If Punkte = 2 Then Typ = 805 Mid(Polylinie, 5, 2) = WmfZeichen(Typ) Polyglätten = Polylinie Exit FunctionEnd IfReDim X(Punkte)ReDim Y(Punkte)ReDim Z(Punkte)ReDim Xe(Punkte)ReDim Ye(Punkte)ReDim Ze(Punkte)ReDim Abstende(Punkte)X(1) = RekordZahl(Polylinie, 5)Y(1) = RekordZahl(Polylinie, 6)Z(1) = 1NeuPunkte = 1'doppelte Punkte löschenFor i = 2 To Punkte X(i) = WmfZahl(Mid(Polylinie, 4 * i + 5, 2)) Y(i) = WmfZahl(Mid(Polylinie, 4 * i + 7, 2)) Z(i) = 1 If X(i) = X(i - 1) And Y(i) = Y(i - 1) Then PunkteLöschen = PunkteLöschen + 1 Else NeuPunkte = NeuPunkte + 1 X(NeuPunkte) = X(i) Y(NeuPunkte) = Y(i) End IfNextPunkte = Punkte - PunkteLöschen

If X(1) = X(Punkte) And Y(1) = Y(Punkte) Then i = 1 Else i = 0If i = 1 And Typ = 804 Then Punkte = Punkte - 1: i = 0'Rechtecke erkennenIf Punkte = 4 And Typ = 804 Then If X(1) = X(2) Or X(2) = X(3) Then x1 = X(1) If X(3) = X(4) Or X(4) = X(1) Then x2 = X(3) If Y(1) = Y(2) Or Y(2) = Y(3) Then y1 = Y(1) If Y(3) = Y(4) Or Y(4) = Y(1) Then y2 = Y(3) If y1 > y2 Then maxY = y1: minY = y2 Else maxY = y2: minY = y1 If x1 > x2 Then maxX = x1: minX = x2 Else maxX = x2: minX = x1 Polyglätten = Chr(7) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(1051) Polyglätten = Polyglätten & WmfBiPunkt(maxY, maxX, minY, minX) Exit Function End If End If End If End IfEnd If

If Punkte > 7 And i = 0 Then'Kreise und runde Rechtecke suchen und durch WMF-Objekte ersetzenminX = X(1): maxX = X(1)minY = Y(1): maxY = Y(1)minXzu = Y(1): maxXzu = Y(1)minYzu = X(1): maxYzu = X(1)MaxAbstand = Sqr((X(1) - X(Punkte)) ^ 2 + (Y(1) - Y(Punkte)) ^ 2)Abstende(1) = MaxAbstandpax = X(1)pay = Y(1)pex = X(Punkte)pey = Y(Punkte)'maximale Koordinaten ermitteln mit zugehöriger PunktkordinateFor i = 2 To Punkte x1 = X(i - 1) y1 = Y(i - 1) x2 = X(i) y2 = Y(i) Abstand = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) Abstende(i) = Abstand If Abstand > MaxAbstand Then

Page 112: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 112

MaxAbstand = Abstand pax = x2 pay = y2 pex = x1 pey = y1 End If If X(i) > maxX Then maxX = X(i): maxXzu = Y(i) If X(i) < minX Then minX = X(i): minXzu = Y(i) If Y(i) > maxY Then maxY = Y(i): maxYzu = X(i) If Y(i) < minY Then minY = Y(i): minYzu = X(i)NextMaxAbstand2 = 0For i = 1 To Punkte If Abstende(i) > MaxAbstand2 And Abstende(i) < MaxAbstand Then MaxAbstand2 = Abstende(i) End IfNextEcke = 0For i = 1 To Punkte If X(i) = maxX And Y(i) = maxY Then Ecke = 1 If X(i) = minX And Y(i) = maxY Then Ecke = 1 If X(i) = maxX And Y(i) = minY Then Ecke = 1 If X(i) = minX And Y(i) = minY Then Ecke = 1NextIf maxX <> minX And maxY <> minY And Ecke = 0 And Typ = 804 Then 'Ellipsen und runde Rechtecke Abstand12 = Sqr((maxX - minX) ^ 2 + (maxY - minY) ^ 2) 'Ellipsen Reparieren If MaxAbstand / Abstand12 < 0.35 Then 'Bedingung gegen Sterne elliptisch = 0 For i = 1 To Punkte 'wie dicht die Punkte der Ellipse liegen px = (2 * X(i) - maxX - minX) / (maxX - minX) py = (2 * Y(i) - maxY - minY) / (maxY - minY) elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next elliptisch = Sqr(elliptisch / Punkte) If elliptisch < 0.05 Then Typ = 1048 Polyglätten = Chr(7) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(Typ) & WmfBiPunkt(maxY, maxX, minY, minX) Exit Function End If End If 'runde Rechtecke wiederherstellen x1minY = minYzu x2minY = x1minY x1maxY = maxYzu x2maxY = x1maxY y1maxX = maxXzu y2maxX = y1maxX y1minX = minXzu y2minX = y1minX For i = 1 To Punkte If Y(i) = minY Then If x1minY > X(i) Then x1minY = X(i) If x2minY < X(i) Then x2minY = X(i) ElseIf Y(i) = maxY Then If x1maxY > X(i) Then x1maxY = X(i) If x2maxY < X(i) Then x2maxY = X(i) End If If X(i) = maxX Then If y1maxX > Y(i) Then y1maxX = Y(i) If y2maxX < Y(i) Then y2maxX = Y(i) ElseIf X(i) = minX Then If y1minX > Y(i) Then y1minX = Y(i) If y2minX < Y(i) Then y2minX = Y(i) End If Next x1 = (x1minY + x1maxY) / 2 'Koordinaten des inneren Rechteckes y1 = (y1minX + y1maxX) / 2 x2 = (x2minY + x2maxY) / 2 y2 = (y2minX + y2maxX) / 2 dx12 = x2 - x1 dy12 = y2 - y1 dx = maxX - minX - dx12 'Ausrundungsdurchmesser dy = maxY - minY - dy12 If dx > 0 And dy > 0 Then elliptisch = 0 For i = 1 To Punkte If X(i) > x1 Then Xe(i) = X(i) - dx12 Else Xe(i) = X(i) If Y(i) > y1 Then Ye(i) = Y(i) - dy12 Else Ye(i) = Y(i) Next For i = 1 To Punkte 'wie dicht die Punkte der Ellipse liegen

Page 113: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 113

px = (2 * Xe(i) - maxX + dx12 - minX) / (maxX - dx12 - minX) py = (2 * Ye(i) - maxY + dy12 - minY) / (maxY - dy12 - minY) elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next elliptisch = Sqr(elliptisch / Punkte) If dx12 > 0 Or dy12 > 0 Then If elliptisch < 0.07 Then Typ = 1564 Polyglätten = Chr(9) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(Typ) Polyglätten = Polyglätten & WmfZeichen(dy) & WmfZeichen(dx) & WmfBiPunkt(maxY, maxX, minY, minX) Exit Function End If End If End IfEnd If 'Ellipsen und runde RechteckeIf maxX <> minX And maxY <> minY Then 'Kreisbögen und Kreischords erkennen Abstand12 = Sqr((X(1) - X(Punkte)) ^ 2 + (Y(1) - Y(Punkte)) ^ 2) If Abstand12 = MaxAbstand Or Typ = 804 Then Abstand23 = Sqr((maxX - minX) ^ 2 + (maxY - minY) ^ 2) If MaxAbstand2 / Abstand23 < 0.35 Then If Abstand12 <> MaxAbstand Then i = 1 ppx = X(i) ppy = Y(i) If ppx = pax Then i = 3 If ppy = pay Then i = 3 Else i = Punkte \ 2 End If ppx = X(i) ppy = Y(i) 'prüfen, ob der Radius nicht zu riesig wird dx12 = ppx - pax dx13 = pex - pax dy12 = pay - ppy dy13 = pey - pay Abstand = Abs((dx12 * dy13 + dy12 * dx13) / Sqr(dx13 ^ 2 + dy13 ^ 2)) 'senkrechter Abstand If Abstand > 2 * Kompression Then If pex <> pax Then px = ppx ^ 2 - pax ^ 2 + ppy ^ 2 - pay ^ 2 'Hilfsterme py = pex ^ 2 - pax ^ 2 + pey ^ 2 - pay ^ 2 'gegen zwischenzeitlichen pmy = px * (pex - pax) - py * (ppx - pax) 'Integerüberlauf dx = (ppy - pay) * (pex - pax) - (pey - pay) * (ppx - pax) 'Kreismittelpunkt pmy = 0.5 * pmy / dx pmx = (py - 2 * pmy * (pey - pay)) / (2 * pex - 2 * pax) Else px = pex ^ 2 - pax ^ 2 + pey ^ 2 - pay ^ 2 'Hilfsterme py = ppx ^ 2 - pax ^ 2 + ppy ^ 2 - pay ^ 2 'gegen zwischenzeitlichen pmy = px * (ppx - pax) - py * (pex - pax) 'Integerüberlauf dx = (pey - pay) * (ppx - pax) - (ppy - pay) * (pex - pax) 'Kreismittelpunkt pmy = 0.5 * pmy / dx pmx = (py - 2 * pmy * (ppy - pay)) / (2 * ppx - 2 * pax) End If Radius = Sqr((pay - pmy) ^ 2 + (pax - pmx) ^ 2) Überlauf = Radius If Abs(pmx - Radius) > Überlauf Then Überlauf = Abs(pmx - Radius) If Abs(pmx + Radius) > Überlauf Then Überlauf = Abs(pmx + Radius) If Abs(pmy - Radius) > Überlauf Then Überlauf = Abs(pmy - Radius) If Abs(pmy + Radius) > Überlauf Then Überlauf = Abs(pmy + Radius) If Abs(pmx - pmx + 2 * Radius) > Überlauf Then Überlauf = Abs(pmx - pmx + 2 * Radius) If Abs(pmy - pmy + 2 * Radius) > Überlauf Then Überlauf = Abs(pmy - pmy + 2 * Radius) If Überlauf < 32767 Then x1 = pmx - Radius y1 = pmy - Radius x2 = pmx + Radius y2 = pmy + Radius elliptisch = 0 For i = 1 To Punkte px = (2 * X(i) - x2 - x1) / (x2 - x1) py = (2 * Y(i) - y2 - y1) / (y2 - y1) elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next elliptisch = Sqr(elliptisch / Punkte) * 2 * Radius / Abstand12 If elliptisch < 0.01 Then If Typ = 805 Then Typ = 2071 Else Typ = 2096 Polyglätten = Chr(11) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(Typ) If PositiverWinkel(X(1) - pmx, Y(1) - pmy, X(2) - pmx, Y(2) - pmy) Then Polyglätten = Polyglätten & WmfBiPunkt(pay, pax, pey, pex) Else Polyglätten = Polyglätten & WmfBiPunkt(pey, pex, pay, pax)

Page 114: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 114

End If Polyglätten = Polyglätten & WmfBiPunkt(y1, x1, y2, x2) Exit Function End If End If End If 'If Abstand > 2 * Kompression Then 'Elliptische Bögen erkennen x1 = 1 x2 = 1 y1 = 1 y2 = 1 If maxY = pay Or maxY = pey Then y2 = 0 If minY = pay Or minY = pey Then y1 = 0 If maxX = pax Or maxX = pex Then x2 = 0 If minX = pax Or minX = pex Then x1 = 0 'Einen Punkt bei Drittelellipsen bekannt machen. If x1 = 0 And x2 = 0 Then If y1 = 1 And y2 = 0 Then If minXzu > maxXzu Then x1 = 1 Else x2 = 1 End If If y1 = 0 And y2 = 1 Then If minXzu < maxXzu Then x1 = 1 Else x2 = 1 End If End If If y1 = 0 And y2 = 0 Then If x1 = 1 And x2 = 0 Then If minYzu > maxYzu Then y1 = 1 Else y2 = 1 End If If x1 = 0 And x2 = 1 Then If minYzu < maxYzu Then y1 = 1 Else y2 = 1 End If End If If y1 = 0 And y2 = 0 And x1 = 0 And x2 = 0 Then 'exakte Viertellipsen berechnen mit Radius und Mittelpunkt RadiusX = maxX - minX RadiusY = maxY - minY pmy = minY pmx = minX elliptisch = 0 For i = 1 To Punkte px = (X(i) - pmx) / RadiusX py = (Y(i) - pmy) / RadiusY elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next If elliptisch > 0.05 Then pmy = maxY elliptisch = 0 For i = 1 To Punkte px = (X(i) - pmx) / RadiusX py = (Y(i) - pmy) / RadiusY elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next If elliptisch > 0.05 Then pmx = maxX elliptisch = 0 For i = 1 To Punkte px = (X(i) - pmx) / RadiusX py = (Y(i) - pmy) / RadiusY elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next If elliptisch > 0.05 Then pmy = minY End If End If End If 'Mittelpunkt berechnen If x1 = 1 And x2 = 1 Then pmy = 0.5 * (maxXzu + minXzu) If x1 = 1 And x2 = 0 Then pmy = minXzu If x1 = 0 And x2 = 1 Then pmy = maxXzu If y1 = 1 And y2 = 1 Then pmx = 0.5 * (maxYzu + minYzu) If y1 = 1 And y2 = 0 Then pmx = minYzu If y1 = 0 And y2 = 1 Then pmx = maxYzu 'Radius berechnen If x1 = 1 And x2 = 1 Then RadiusX = 0.5 * (maxX - minX) If x1 = 1 And x2 = 0 Then If y1 = 1 Then RadiusX = minYzu - minX Else RadiusX = maxYzu - minX End If If x1 = 0 And x2 = 1 Then If y1 = 1 Then RadiusX = maxX - minYzu Else RadiusX = maxX - maxYzu End If If y1 = 1 And y2 = 1 Then RadiusY = 0.5 * (maxY - minY) If y1 = 1 And y2 = 0 Then If x1 = 1 Then RadiusY = minXzu - minY Else RadiusY = maxXzu - minY

Page 115: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 115

End If If y1 = 0 And y2 = 1 Then If x1 = 1 Then RadiusY = maxY - minXzu Else RadiusY = maxY - maxXzu End If If RadiusX > RadiusY Then Überlauf = RadiusY Else Überlauf = RadiusX If Abs(pmx - RadiusX) > Überlauf Then Überlauf = Abs(pmx - RadiusX) If Abs(pmx + RadiusX) > Überlauf Then Überlauf = Abs(pmx + RadiusX) If Abs(pmy - RadiusY) > Überlauf Then Überlauf = Abs(pmy - RadiusY) If Abs(pmy + RadiusY) > Überlauf Then Überlauf = Abs(pmy + RadiusY) If RadiusX <> 0 And RadiusY <> 0 And Überlauf < 32767 Then elliptisch = 0 For i = 1 To Punkte px = (X(i) - pmx) / RadiusX py = (Y(i) - pmy) / RadiusY elliptisch = elliptisch + (Sqr(px ^ 2 + py ^ 2) - 1) ^ 2 Next elliptisch = Sqr(elliptisch / Punkte) If elliptisch < 0.05 Then If Typ = 805 Then Typ = 2071 Else Typ = 2096 Polyglätten = Chr(11) & Chr(0) & Chr(0) & Chr(0) & WmfZeichen(Typ) If PositiverWinkel(X(1) - pmx, Y(1) - pmy, X(2) - pmx, Y(2) - pmy) Then Polyglätten = Polyglätten & WmfBiPunkt(pay, pax, pey, pex) Else Polyglätten = Polyglätten & WmfBiPunkt(pey, pex, pay, pax) End If Polyglätten = Polyglätten & WmfBiPunkt(pmy - RadiusY, pmx - RadiusX, pmy + RadiusY, pmx + RadiusX) Exit Function End If End If End If 'If MaxAbstand2 / Abstand23 < 0.25 Then End If 'If Abstand12 = MaxAbstand Or Typ = 804 ThenEnd IfEnd If

PunkteLöschen = 1While PunkteLöschen = 1 'Löscht evtl. jeden zweiten Punkt solange, bis es nichts mehr zu Löschen gibt PunkteLöschen = 0 For i = 3 To Punkte x1 = X(i - 2) y1 = Y(i - 2) x2 = X(i - 1) y2 = Y(i - 1) x3 = X(i) y3 = Y(i) dx12 = x2 - x1 dy13 = y3 - y1 dy12 = y1 - y2 dx13 = x3 - x1 dx23 = x3 - x2 dy23 = y3 - y2 Abstand12 = Sqr(dx12 ^ 2 + dy12 ^ 2) 'gewöhnlicher Abstand Abstand13 = Sqr(dx13 ^ 2 + dy13 ^ 2) Abstand23 = Sqr(dx23 ^ 2 + dy23 ^ 2) If dx13 = 0 And dy13 = 0 Then Abstand = 2 * Kompression Else Abstand = Abs((dx12 * dy13 + dy12 * dx13) / Sqr(dx13 ^ 2 + dy13 ^ 2)) 'senkrechter Abstand End If '3 Ausnahmen für das Punktlöschen If Abstand13 < Abstand12 Or Abstand13 < Abstand23 Then Abstand = Abstand + Kompression If dy13 = dy12 Xor dy13 = dy23 Then Abstand = Abstand + Kompression If dx13 = dx12 Xor dx13 = dx23 Then Abstand = Abstand + Kompression If Abstand < Kompression Then If Z(i - 2) = 1 Then 'jeden zweiten Punkt evtl. löschen Z(i - 1) = 0 PunkteLöschen = 1 End If End If Next NeuPunkte = 0 For i = 1 To Punkte If Z(i) <> 0 Then NeuPunkte = NeuPunkte + 1 X(NeuPunkte) = X(i) Y(NeuPunkte) = Y(i) Z(NeuPunkte) = 1 End If Next Punkte = NeuPunkte If NeuPunkte = 2 Then PunkteLöschen = 0

Page 116: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 116

Wend

Hilfstext = ""For i = 1 To Punkte If Z(i) = 1 Then Hilfstext = Hilfstext & WmfPunkt(X(i), Y(i))Next

Punkte = Len(Hilfstext) / 4If Punkte = 2 Then tx = WmfZeichen(805) Else tx = Mid(Polylinie, 5, 2)Polyglätten = WmfZeichen(2 * Punkte + 4) & Chr(0) & Chr(0) & tx & WmfZeichen(Punkte) & Hilfstext

End Function

'HauptmakroSub PowerWMF()'Version 3.0 vom 16.9.2016Dim Georekord() As StringDim Geoeigenschaften() As IntegerDim Georekord2() As StringDim Geoeigenschaften2() As IntegerDim Textrekord() As StringDim Textfont() As StringDim Texteigenschaften() As IntegerDim Textrekord2() As StringDim Textfont2() As StringDim Texteigenschaften2() As IntegerDim Georekorde&, Textrekorde As LongDim AktFüllerstil%, AktFüllerdicke%, AktFüllerrot%, AktFüllergrün%, AktFüllerblau As IntegerDim AktPinselstil%, AktPinselrot%, AktPinselgrün%, AktPinselblau As IntegerDim AktFont$, AktPinsel$, AktFüller$, AktFarbe As StringDim AktFontnummer%, AktPinselnummer%, AktFüllernummer As IntegerDim AktTextrot%, AktTextgrün%, AktTextblau As IntegerDim AktTextalign%, AktTextabdecken%, AktSetcharextra As IntegerDim AktTextrotabdecken%, AktTextgrünabdecken%, AktTextblauabdecken As IntegerDim a&, b&, c&, d&, e&, f&, i&, j&, k&, Summe As LongDim rot%, grün%, blau As IntegerDim Typ%, Maltyp As IntegerDim Rekord$, Poly$, Poly2$, Poly3$, Malrekord As StringDim Dateiname$, WoT$, WoTschrift$, Dateiinhalt$, Federtasche As StringDim weißeTextvierecke As StringDim OO$, OOOO As StringDim Modifikation As StringDim ModI%, ModR%, ModDH%, ModP%, ModZ%, ModJ%, ModV As IntegerDim Dateilenge&, Textlenge&, Texthöhe&, Rekordlenge&, Lenge As LongDim Hilfstext$, Teiltext$, tx As StringDim Preader$, Header As StringDim WMFtabelle(255) As StringDim Liniennummer() As IntegerDim Liniennummer2() As IntegerDim Maxrekord&, WMFrekorde As LongDim MovetoX, MovetoY As IntegerDim x1#, y1#, x2#, y2#, x3#, y3#, x4#, y4#, Winkel#, Zahl As DoubleDim minX%, minY%, maxX%, maxY As IntegerDim xs#, ys#, m1#, m2 As DoubleDim X%, Y%, FensterX%, FensterY, Fenster0X%, Fenster0Y As IntegerDim Verdicken%, Zoom As IntegerDim letzteFüllernummer%, letztePinselnummer%, letzteFontnummer As IntegerDim AnzahlPunkte%, AnzahlPunkte2%, Prüfobjekte%, Prüfobjekte2%, Polygone%, Geduld As IntegerDim Punkt1$, Punkt2$, Punkt3$, Punkt4 As StringDim Fleche1&, Fleche2&, Fleche3 As LongDim WordSchriftgröße#, WMFschriftgröße%, Pfeilgröße As IntegerDim Zahlen() As IntegerDim Farbe As StringDim Startzeit, Zeit As SingleDim Werte()

Startzeit = TimerModifikation = SelectionIf Len(Modifikation) <> 2 Then Selection.MoveLeft Unit:=wdCharacter, Count:=1End Ifa = Makrozählen("PowerWMFeinfügen ")OO = Chr(0) & Chr(0)OOOO = OO & OOGeduld = 200 'mit mehr Geduld kann mehr Kompression möglich sein'Modifikationsmöglichkeiten:'r:keine CTB'z:Berechnungszeit untersuchen'p:nicht an Polylinien zuschneiden'i:alternative CTB

Page 117: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 117

'j:verlustbehaftet in Zeichenreihenfolge'h,d: halbe oder doppelte Linienstärken'Pixel nicht zu Kreislein, sondern als Füllung im Playback Device ContentModifikation = SelectionModDH = 2Teiltext = Left(Modifikation, 1)If Teiltext = "r" Then ModR = 1If Teiltext = "z" Then ModZ = 1If Teiltext = "p" Then ModP = 1If Teiltext = "i" Then ModI = 1If Teiltext = "j" Then ModJ = 1If Teiltext = "d" Then ModDH = 4If Teiltext = "h" Then ModDH = 1If Teiltext = "v" Then ModV = 1If Len(Modifikation) = 2 Then Teiltext = Right(Modifikation, 1) If Teiltext = "r" Then ModR = 1 If Teiltext = "z" Then ModZ = 1 If Teiltext = "p" Then ModP = 1 If Teiltext = "i" Then ModI = 1 If Teiltext = "j" Then ModJ = 1 If Teiltext = "d" Then ModDH = 4 If Teiltext = "h" Then ModDH = 1 If Teiltext = "v" Then ModV = 1End If

'Datei suchen und einlesenDateiname = ActiveDocument.Path & "\a.wmf"Dateiinhalt = Dateieinlesen(Dateiname)If Dateiinhalt = "" Then Dim Ordner As FileDialog Set Ordner = Application.FileDialog(msoFileDialogFilePicker) With Ordner .Title = "PowerWMFeinfügen3.0" .AllowMultiSelect = False .ButtonName = "Einfügen" .Filters.Clear .Filters.Add "Windows Metafile", "*.WMF" Select Case .Show Case (-1) Dateiname = Ordner.SelectedItems(1) Dateiinhalt = Dateieinlesen(Dateiname) Case Else Exit Sub End Select End With Set Ordner = NothingEnd IfDateilenge = Len(Dateiinhalt)k = WmfZahl(Mid(Dateiinhalt, 1, 2))If k = -12841 Then Preader = Mid(Dateiinhalt, 1, 22) Header = Mid(Dateiinhalt, 23, 18) Dateiinhalt = Right(Dateiinhalt, Dateilenge - 40) Dateilenge = Dateilenge - 40 Else Preader = "" Header = Mid(Dateiinhalt, 1, 18) Dateiinhalt = Right(Dateiinhalt, Dateilenge - 18) Dateilenge = Dateilenge - 19End If

'bereits Datei umgewandelte wird nur nachbearbeitetFor i = 41 To 2000 Step 2 Teiltext = Mid(Dateiinhalt, i, 8) If Teiltext = "SimonPie" Then Dateiinhalt = Preader & Header & Dateiinhalt 'Zoom vergrößern If ModP = 1 And Preader <> "" Then FensterX = WmfZahl(Mid(Preader, 11, 2)) * 11 \ 10 FensterY = WmfZahl(Mid(Preader, 13, 2)) * 11 \ 10 If FensterX < 32000 And FensterY < 32000 Then Mid(Preader, 11, 2) = WmfZeichen(FensterX) Mid(Preader, 13, 2) = WmfZeichen(FensterY) Rekord = Chr(5) & Chr(0) & OO & WmfZeichen(524) 'Fenster aktualisieren For j = 41 To Dateilenge Step 2 Teiltext = Mid(Dateiinhalt, j, 6) If Teiltext = Rekord Then Mid(Dateiinhalt, j + 6, 4) = WmfPunkt(FensterY, FensterX) Exit For End If Next

Page 118: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 118

End If End If 'd oder h nachhohlen If ModDH = 4 Or ModDH = 1 Then AktFüller = Chr(8) & Chr(0) & OO & Chr(250) & Chr(2) AktPinsel = Chr(7) & Chr(0) & OO & Chr(252) & Chr(2) For j = 41 To Dateilenge Step 2 Teiltext = Mid(Dateiinhalt, j, 6) If Teiltext = AktFüller Then a = WmfZahl(Mid(Dateiinhalt, j + 8, 2)) If ModDH = 4 Then If a < 8000 Then a = a * 3 \ 2 If a = 1 Then a = 2 ElseIf ModDH = 1 Then If a > 1 Then a = a * 2 \ 3 End If Mid(Dateiinhalt, j + 8, 2) = WmfZeichen(a) ElseIf Teiltext = AktPinsel Then Exit For End If Next End If Mid(Preader, 21, 2) = WmfZeichen(Checksumme(Preader)) Mid(Dateiinhalt, 1, 22) = Preader If Modifikation = "r" Or Modifikation = "z" Or Modifikation = "p" Or Modifikation = "v" Then Selection.Delete Unit:=wdCharacter, Count:=1 ElseIf Modifikation = "i" Or Modifikation = "j" Or Modifikation = "d" Or Modifikation = "h" Then Selection.Delete Unit:=wdCharacter, Count:=1 ElseIf Len(Modifikation) = 2 Then Selection.Delete Unit:=wdCharacter, Count:=1 Else Selection.MoveRight Unit:=wdCharacter, Count:=1 End If If ModDH = 4 Or ModDH = 1 Or ModP = 1 Then f = FreeFile Open Dateiname For Output As #f Print #f, Dateiinhalt Close #f End If Selection.InlineShapes.AddPicture FileName:=Dateiname Exit Sub End IfNext

'MeckernIf Dateilenge > 300000 Then a = MsgBox("Makro ist für sehr große Datein nicht geeignet", vbOKCancel) If a = 2 Then Exit SubEnd IfMaxrekord = WmfZahl(Mid(Header, 15, 2)) * 65536 + WmfZahl(Mid(Header, 13, 2))If Maxrekord > 32767 Then a = MsgBox("Die WMF beinhaltet ein unzulässig großes Objekt." & Chr(13) & Chr(10) & "Erlaubte Länge = 32767" & Chr(13) & Chr(10) & "vorhandene Länge = " & Maxrekord, vbCritical) Exit SubEnd If

'Tabellengröße schätzeni = 1: Georekorde = 3: Textrekorde = 1While i < Dateilenge - 4 Rekordlenge = WmfZahl(Mid(Dateiinhalt, i, 2)) Typ = WmfZahl(Mid(Dateiinhalt, i + 4, 2)) i = i + Rekordlenge * 2 If Rekordlenge = 0 Then i = Dateilenge If Typ = 0 Then i = Dateilenge Select Case Typ Case 522, 561, 1313, 2610 Georekorde = Georekorde + 1 Textrekorde = Textrekorde + 1 Case 0, 30, 53, 55, 247, 258, 260, 261, 264, 295, 301, 302, 313, 322, 496, 505, 513, 521, 523, 524, 532, 564, 762, 763, 764, 1078, 1791 'nichts tun Case Else Georekorde = Georekorde + 1 End SelectWendReDim Georekord(Georekorde + 1) As StringReDim Geoeigenschaften(Georekorde + 1, 14) As IntegerReDim Textrekord(Textrekorde + 1) As StringReDim Textfont(Textrekorde + 1) As StringReDim Texteigenschaften(Textrekorde + 1, 10) As IntegerReDim Georekord2(Georekorde + 1) As StringReDim Geoeigenschaften2(Georekorde + 1, 14) As Integer

Page 119: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 119

ReDim Textrekord2(Textrekorde + 1) As StringReDim Textfont2(Textrekorde + 1) As StringReDim Texteigenschaften2(Textrekorde + 1, 10) As IntegerReDim Liniennummer(Georekorde)

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("starten") Selection.TypeParagraphEnd If

'WMF auflösen und in Tabelle schreibenAktFüllerstil = 0: AktFüllerdicke = 0: AktFüllerrot = 0: AktFüllergrün = 0: AktFüllerblau = 0AktPinselstil = 0: AktPinselrot = 0: AktPinselgrün = 0: AktPinselblau = 0AktFont = "": AktPinsel = "": AktFüller = ""AktTextrot = 0: AktTextgrün = 0: AktTextblau = 0AktTextalign = 0: AktTextabdecken = 0: AktSetcharextra = 0AktTextrotabdecken = 0: AktTextgrünabdecken = 0: AktTextblauabdecken = 0i = 1: Georekorde = 3: Textrekorde = 1While i < Dateilenge - 4 Rekordlenge = WmfZahl(Mid(Dateiinhalt, i, 2)) Rekord = Mid(Dateiinhalt, i, Rekordlenge * 2) Typ = RekordZahl(Rekord, 3) i = i + Rekordlenge * 2 If Rekordlenge = 0 Then i = Dateilenge If Typ = 0 Then i = Dateilenge Select Case Typ Case 295 'gespeicherter Playback Content a = MsgBox("RestoreDC wird nicht ünterstützt.", vbCritical) Exit Sub Case 523, 524, 53, 55, 261, 30, 313, 1078, 564, 260 'Palettenzubehör 'nichts tun Case 762, 763, 764, 322, 505, 1791, 247 'Malobjekte If Typ = 763 Then b = 0 For a = 26 To 56 tx = Mid(Rekord, a, 1) If Asc(tx) = 0 Then b = 1 If b = 1 Then Mid(Rekord, a, 1) = Chr(0) End If Next End If For a = 0 To 255 If WMFtabelle(a) = "" Then WMFtabelle(a) = Rekord Exit For End If Next Case 496 'Objektlöschen a = RekordZahl(Rekord, 4) WMFtabelle(a) = "" Case 301 'Objektwählen a = RekordZahl(Rekord, 4) Malrekord = WMFtabelle(a) Maltyp = RekordZahl(Malrekord, 3) Select Case Maltyp Case 762 'Füller AktFüller = Malrekord AktFüllerstil = RekordZahl(Malrekord, 4) If AktFüllerstil = 5 Then AktFüllerdicke = 0 AktFüllerrot = 0 AktFüllergrün = 0 AktFüllerblau = 0 Else AktFüllerdicke = RekordZahl(Malrekord, 5) AktFüllerrot = Asc(Mid(Malrekord, 13, 1)) AktFüllergrün = Asc(Mid(Malrekord, 14, 1)) AktFüllerblau = Asc(Mid(Malrekord, 15, 1)) End If Case 763 'Font AktFont = Malrekord Case 764 'Pinsel AktPinsel = Malrekord AktPinselstil = RekordZahl(Malrekord, 4) AktPinselrot = Asc(Mid(Malrekord, 9, 1)) AktPinselgrün = Asc(Mid(Malrekord, 10, 1)) AktPinselblau = Asc(Mid(Malrekord, 11, 1)) End Select Case 264 'Settextcharextra AktSetcharextra = RekordZahl(Rekord, 4)

Page 120: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 120

Case 521 'Textfarbe AktTextrot = Asc(Mid(Rekord, 7, 1)) AktTextgrün = Asc(Mid(Rekord, 8, 1)) AktTextblau = Asc(Mid(Rekord, 9, 1)) Case 302 'Textalign AktTextalign = RekordZahl(Rekord, 4) Case 258 'Textabdecken AktTextabdecken = RekordZahl(Rekord, 4) Case 513 'Textabdeckenfarbe AktTextrotabdecken = Asc(Mid(Rekord, 7, 1)) AktTextgrünabdecken = Asc(Mid(Rekord, 8, 1)) AktTextblauabdecken = Asc(Mid(Rekord, 9, 1)) Case 532 'Moveto MovetoY = RekordZahl(Rekord, 4) MovetoX = RekordZahl(Rekord, 5) Case 531 'Linieto Y = RekordZahl(Rekord, 4) X = RekordZahl(Rekord, 5) Rekord = LinieZeichnen(MovetoX, MovetoY, X, Y) MovetoY = Y MovetoX = X Typ = 805 Georekord(Georekorde) = Rekord Geoeigenschaften(Georekorde, 0) = Typ Geoeigenschaften(Georekorde, 1) = AktFüllerstil Geoeigenschaften(Georekorde, 2) = AktFüllerdicke Geoeigenschaften(Georekorde, 3) = AktFüllerrot Geoeigenschaften(Georekorde, 4) = AktFüllergrün Geoeigenschaften(Georekorde, 5) = AktFüllerblau Geoeigenschaften(Georekorde, 6) = AktPinselstil Geoeigenschaften(Georekorde, 7) = AktPinselrot Geoeigenschaften(Georekorde, 8) = AktPinselgrün Geoeigenschaften(Georekorde, 9) = AktPinselblau Georekorde = Georekorde + 1 Case 561, 522, 1313, 2610 'Text Geoeigenschaften(Georekorde, 0) = 261 'Markieren, dass hier ein Text war Geoeigenschaften(Georekorde, 14) = 261 Georekorde = Georekorde + 1 Textrekord(Textrekorde) = Rekord Textfont(Textrekorde) = AktFont Texteigenschaften(Textrekorde, 0) = Typ Texteigenschaften(Textrekorde, 1) = AktTextrot Texteigenschaften(Textrekorde, 2) = AktTextgrün Texteigenschaften(Textrekorde, 3) = AktTextblau Texteigenschaften(Textrekorde, 4) = AktTextalign Texteigenschaften(Textrekorde, 5) = AktTextabdecken Texteigenschaften(Textrekorde, 6) = AktTextrotabdecken Texteigenschaften(Textrekorde, 7) = AktTextgrünabdecken Texteigenschaften(Textrekorde, 8) = AktTextblauabdecken Texteigenschaften(Textrekorde, 9) = AktSetcharextra Textrekorde = Textrekorde + 1 Case 1055 Georekord(Georekorde) = Rekord Geoeigenschaften(Georekorde, 0) = Typ Geoeigenschaften(Georekorde, 1) = AktFüllerstil Geoeigenschaften(Georekorde, 2) = AktFüllerdicke Geoeigenschaften(Georekorde, 3) = AktFüllerrot Geoeigenschaften(Georekorde, 4) = AktFüllergrün Geoeigenschaften(Georekorde, 5) = AktFüllerblau Geoeigenschaften(Georekorde, 6) = AktPinselstil Geoeigenschaften(Georekorde, 7) = AktPinselrot Geoeigenschaften(Georekorde, 8) = AktPinselgrün Geoeigenschaften(Georekorde, 9) = AktPinselblau Georekorde = Georekorde + 1 Case Else 'alle anderen Objekte Georekord(Georekorde) = Rekord Geoeigenschaften(Georekorde, 0) = Typ Geoeigenschaften(Georekorde, 1) = AktFüllerstil Geoeigenschaften(Georekorde, 2) = AktFüllerdicke Geoeigenschaften(Georekorde, 3) = AktFüllerrot Geoeigenschaften(Georekorde, 4) = AktFüllergrün Geoeigenschaften(Georekorde, 5) = AktFüllerblau Geoeigenschaften(Georekorde, 6) = AktPinselstil Geoeigenschaften(Georekorde, 7) = AktPinselrot Geoeigenschaften(Georekorde, 8) = AktPinselgrün Geoeigenschaften(Georekorde, 9) = AktPinselblau Georekorde = Georekorde + 1 End SelectWend

If ModZ = 1 Then Zeit = (Timer - Startzeit)

Page 121: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 121

Selection.TypeText (Zeit) & Chr(9) & ("einlesen") Selection.TypeParagraphEnd If

If Textrekorde = 1 Then a = MsgBox("Die Grafik enthält keine Texte.", vbOKCancel, "Problemgrafik") If a = 2 Then Exit SubEnd If

'FensterX und FensterY bestimmen; zuschneiden an GeoobjekteFensterX = -1: FensterY = -1Fenster0X = 32767: Fenster0Y = 32767X = -1: Y = -1: x4 = 32767: y4 = 32767For i = 3 To Georekorde Typ = Geoeigenschaften(i, 0) Select Case Typ Case 1048, 1051, 2071, 2074, 2096 Y = RekordZahl(Georekord(i), 4) X = RekordZahl(Georekord(i), 5) y2 = RekordZahl(Georekord(i), 6) x2 = RekordZahl(Georekord(i), 7) If y2 > Y Then y4 = Y: Y = y2 Else y4 = y2 If x2 > X Then x4 = X: X = x2 Else x4 = x2 Case 1564 Y = RekordZahl(Georekord(i), 6) X = RekordZahl(Georekord(i), 7) y2 = RekordZahl(Georekord(i), 8) x2 = RekordZahl(Georekord(i), 9) If y2 > Y Then y4 = Y: Y = y2 Else y4 = y2 If x2 > X Then x4 = X: X = x2 Else x4 = x2 Case 1049, 1055 Y = RekordZahl(Georekord(i), 6) X = RekordZahl(Georekord(i), 7) x4 = X: y4 = Y Case 1352 Y = RekordZahl(Georekord(i), 7) X = RekordZahl(Georekord(i), 8) x4 = X: y4 = Y Case 1565 y4 = RekordZahl(Georekord(i), 8) x4 = RekordZahl(Georekord(i), 9) Y = y4 + RekordZahl(Georekord(i), 6) X = x4 + RekordZahl(Georekord(i), 7) Case 1336 AnzahlPunkte = (RekordZahl(Georekord(i), 1) - RekordZahl(Georekord(i), 4) - 4) / 2 tx = Right(Georekord(i), AnzahlPunkte * 4) X = RekordZahl(tx, 1) Y = RekordZahl(tx, 2) x4 = X: y4 = Y For a = 2 To AnzahlPunkte x1 = RekordZahl(tx, a * 2 - 1) y1 = RekordZahl(tx, a * 2) If x1 > X Then X = x1 If y1 > Y Then Y = y1 If x1 < x4 Then x4 = x1 If y1 < y4 Then y4 = y1 Next Case 805, 804 AnzahlPunkte = RekordZahl(Georekord(i), 4) X = RekordZahl(Georekord(i), 5) Y = RekordZahl(Georekord(i), 6) x4 = X: y4 = Y For a = 2 To AnzahlPunkte x1 = RekordZahl(Georekord(i), a * 2 + 3) y1 = RekordZahl(Georekord(i), a * 2 + 4) If x1 > X Then X = x1 If y1 > Y Then Y = y1 If x1 < x4 Then x4 = x1 If y1 < y4 Then y4 = y1 Next End Select If Y > FensterY Then FensterY = Y If X > FensterX Then FensterX = X If y4 < Fenster0Y Then Fenster0Y = y4 If x4 < Fenster0X Then Fenster0X = x4NextFor i = 1 To Textrekorde 'zuschneiden an Texte Typ = Texteigenschaften(i, 0) Select Case Typ Case 2610 Y = RekordZahl(Textrekord(i), 4) X = RekordZahl(Textrekord(i), 5)

Page 122: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 122

Winkel = RekordZahl(Textfont(i), 7) / 573 Textlenge = RekordZahl(Textrekord(i), 6) Texthöhe = Abs(RekordZahl(Textfont(i), 4)) AktTextalign = Texteigenschaften(i, 4) Zahl = RekordZahl(Textrekord(i), 7) If Zahl Mod 16 = 0 Then Zahl = 0 Else Zahl = 8 Teiltext = Mid(Textrekord(i), 15 + Zahl, Textlenge) If RekordZahl(Textrekord(i), 7) = 0 And Textlenge < RekordZahl(Textrekord(i), 1) Then k = Textlenge + Textlenge Mod 2 Lenge = WmfZahl(Mid(Textrekord(i), 15 + k, 2)) For b = 2 To Textlenge Lenge = Lenge + WmfZahl(Mid(Textrekord(i), 13 + k + 2 * b, 2)) Next Else Lenge = Textlenge * Texthöhe * 0.4 End If Case 1313 tx = Right(Textrekord(i), 4) Y = RekordZahl(tx, 1) X = RekordZahl(tx, 2) Textlenge = RekordZahl(Textrekord(i), 4) Texthöhe = Abs(RekordZahl(Textfont(i), 4)) Lenge = Textlenge * Texthöhe * 0.4 Teiltext = Mid(Textrekord(i), 9, Textlenge) AktTextalign = Texteigenschaften(i, 4) End Select If Typ = 2610 Or Typ = 1313 Then Select Case AktTextalign Case 2, 10, 26 'rechts x1 = X - Cos(Winkel) * Lenge y1 = Y + Sin(Winkel) * Lenge x2 = X y2 = Y Case 6, 14, 30 'mitte x1 = X - Cos(Winkel) * Lenge / 2 y1 = Y + Sin(Winkel) * Lenge / 2 x2 = X + Cos(Winkel) * Lenge / 2 y2 = Y - Sin(Winkel) * Lenge / 2 Case Else 'links x1 = X y1 = Y x2 = X + Cos(Winkel) * Lenge y2 = Y - Sin(Winkel) * Lenge End Select If AktTextalign < 8 Then x3 = x1 - Sin(Winkel) * Texthöhe y3 = y1 + Cos(Winkel) * Texthöhe x4 = x2 - Sin(Winkel) * Texthöhe y4 = y2 + Cos(Winkel) * Texthöhe Else c = 0: d = 0 For a = 1 To Textlenge tx = Mid(Teiltext, a, 1) Select Case tx Case "Ä", "Ö", "Ü", "'" c = 1 Case "p", "q", "g", "j", "§", "(", ")", "Q", ",", ";" d = 1 End Select Next x1 = x1 + (0.3 * d) * Sin(Winkel) * Texthöhe y1 = y1 + (0.3 * d) * Cos(Winkel) * Texthöhe x2 = x2 + (0.3 * d) * Sin(Winkel) * Texthöhe y2 = y2 + (0.3 * d) * Cos(Winkel) * Texthöhe x3 = x1 - (0.8 + 0.3 * d + 0.2 * c) * Sin(Winkel) * Texthöhe y3 = y1 - (0.8 + 0.3 * d + 0.2 * c) * Cos(Winkel) * Texthöhe x4 = x2 - (0.8 + 0.3 * d + 0.2 * c) * Sin(Winkel) * Texthöhe y4 = y2 - (0.8 + 0.3 * d + 0.2 * c) * Cos(Winkel) * Texthöhe End If If x1 > FensterX Then FensterX = x1: Texteigenschaften(i, 10) = 2 If y1 > FensterY Then FensterY = y1: Texteigenschaften(i, 10) = 2 If x2 > FensterX Then FensterX = x2: Texteigenschaften(i, 10) = 2 If y2 > FensterY Then FensterY = y2: Texteigenschaften(i, 10) = 2 If x3 > FensterX Then FensterX = x3: Texteigenschaften(i, 10) = 2 If y3 > FensterY Then FensterY = y3: Texteigenschaften(i, 10) = 2 If x4 > FensterX Then FensterX = x4: Texteigenschaften(i, 10) = 2 If y4 > FensterY Then FensterY = y4: Texteigenschaften(i, 10) = 2 If x1 < Fenster0X Then Fenster0X = x1 If y1 < Fenster0Y Then Fenster0Y = y1 If x2 < Fenster0X Then Fenster0X = x2 If y2 < Fenster0Y Then Fenster0Y = y2 If x3 < Fenster0X Then Fenster0X = x3

Page 123: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 123

If y3 < Fenster0Y Then Fenster0Y = y3 If x4 < Fenster0X Then Fenster0X = x4 If y4 < Fenster0Y Then Fenster0Y = y4 'Texteigenschaften(i, 10) = 2 verhindert Mtext sprengen End IfNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("zuschneiden") Selection.TypeParagraphEnd If

'Verdicken und Zoom bestimmenWordSchriftgröße = Selection.Font.SizeReDim Zahlen(2000)For a = 1 To Textrekorde If Textfont(a) <> "" Then b = Abs(RekordZahl(Textfont(a), 4)) If b < 2001 Then Zahlen(b) = Zahlen(b) + 1 End If End IfNextb = 0: c = 0For a = 1 To 2000 If Zahlen(a) > b Then b = Zahlen(a) WMFschriftgröße = a End IfNextFensterX = FensterX - Fenster0XFensterY = FensterY - Fenster0YIf WMFschriftgröße = 0 Then WMFschriftgröße = 1 + FensterX * WordSchriftgröße / ((Log(Dateilenge) - 5) * 60) If FensterY > FensterX Then WMFschriftgröße = WMFschriftgröße * 2End IfPfeilgröße = WMFschriftgröße * 5 / 9Zoom = WMFschriftgröße / WordSchriftgröße * 72Verdicken = ModDH * Zoom \ 360If FensterX < 32000 Then FensterX = FensterX + 2 + 6 * VerdickenIf FensterY < 32000 Then FensterY = FensterY + 2 + 6 * VerdickenFenster0X = Fenster0X - 2 - 3 * VerdickenFenster0Y = Fenster0Y - 2 - 3 * Verdicken

'Objekte nach obenlinks schiebenZahl = (Fenster0X / FensterX) * (Fenster0Y / FensterY)If Zahl > 0.004 And ModP = 0 Then For i = 1 To Textrekorde Typ = Texteigenschaften(i, 0) Select Case Typ Case 1313 Punkt1 = Right(Textrekord(i), 4) Rekordlenge = RekordZahl(Textrekord(i), 1) Y = RekordZahl(Punkt1, 1) - Fenster0Y X = RekordZahl(Punkt1, 2) - Fenster0X Mid(Textrekord(i), Rekordlenge * 2 - 3, 4) = WmfPunkt(Y, X) Case 2610 Y = RekordZahl(Textrekord(i), 4) - Fenster0Y X = RekordZahl(Textrekord(i), 5) - Fenster0X Mid(Textrekord(i), 7, 4) = WmfPunkt(Y, X) End Select Next For i = 3 To Georekorde Typ = Geoeigenschaften(i, 0) Select Case Typ Case 1048, 1051 Y = RekordZahl(Georekord(i), 4) - Fenster0Y X = RekordZahl(Georekord(i), 5) - Fenster0X y2 = RekordZahl(Georekord(i), 6) - Fenster0Y x2 = RekordZahl(Georekord(i), 7) - Fenster0X tx = WmfBiPunkt(Y, X, y2, x2) Mid(Georekord(i), 7, 8) = tx Case 2071, 2074, 2096 AnzahlPunkte = 4 Rekord = Left(Georekord(i), 6) For b = 1 To AnzahlPunkte Punkt1 = Mid(Georekord(i), 3 + 4 * b, 4) X = WmfZahl(Right(Punkt1, 2)) - Fenster0X Y = WmfZahl(Left(Punkt1, 2)) - Fenster0Y Rekord = Rekord & WmfPunkt(Y, X) Next

Page 124: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 124

Georekord(i) = Rekord Case 1564 Y = WmfZahl(Mid(Georekord(i), 11, 2)) - Fenster0Y X = WmfZahl(Mid(Georekord(i), 13, 2)) - Fenster0X y2 = WmfZahl(Mid(Georekord(i), 15, 2)) - Fenster0Y x2 = WmfZahl(Mid(Georekord(i), 17, 2)) - Fenster0X tx = WmfBiPunkt(Y, X, y2, x2) Mid(Georekord(i), 11, 8) = tx Case 1049, 1055 Y = RekordZahl(Georekord(i), 6) - Fenster0Y X = RekordZahl(Georekord(i), 7) - Fenster0X Mid(Georekord(i), 11, 4) = WmfPunkt(Y, X) Case 1352 Y = RekordZahl(Georekord(i), 7) - Fenster0Y X = RekordZahl(Georekord(i), 8) - Fenster0X Mid(Georekord(i), 13, 4) = WmfPunkt(Y, X) Case 1565 Y = RekordZahl(Georekord(i), 8) - Fenster0Y X = RekordZahl(Georekord(i), 9) - Fenster0X Mid(Georekord(i), 15, 4) = WmfPunkt(Y, X) Case 1336 Rekordlenge = RekordZahl(Georekord(i), 1) AnzahlPunkte = (Rekordlenge - RekordZahl(Georekord(i), 4) - 4) / 2 tx = Right(Georekord(i), AnzahlPunkte * 4) Rekord = Left(Georekord(i), Rekordlenge * 2 - AnzahlPunkte * 4) For a = 1 To AnzahlPunkte X = RekordZahl(tx, a * 2 - 1) - Fenster0X Y = RekordZahl(tx, a * 2) - Fenster0Y Rekord = Rekord & WmfPunkt(X, Y) Next Georekord(i) = Rekord Case 805, 804 AnzahlPunkte = RekordZahl(Georekord(i), 4) Rekord = Left(Georekord(i), 8) For b = 1 To AnzahlPunkte Punkt1 = Mid(Georekord(i), 5 + 4 * b, 4) X = WmfZahl(Left(Punkt1, 2)) - Fenster0X Y = WmfZahl(Right(Punkt1, 2)) - Fenster0Y Rekord = Rekord & WmfPunkt(X, Y) Next Georekord(i) = Rekord End Select Next Else FensterX = FensterX + Fenster0X FensterY = FensterY + Fenster0YEnd If

'StrichstärkenCTBIf ModR = 0 ThenFor a = 3 To Georekorde If Geoeigenschaften(a, 0) <> 261 And Geoeigenschaften(a, 1) <> 5 And Geoeigenschaften(a, 2) = 0 Then AktFarbe = Chr(Geoeigenschaften(a, 3)) & Chr(Geoeigenschaften(a, 4)) & Chr(Geoeigenschaften(a, 5)) Select Case AktFarbe Case Chr(255) & Chr(255) & Chr(255) 'weiß Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 0 * ModI) 'keine Farbänderung Case Chr(255) & Chr(255) & Chr(0) 'gelb Geoeigenschaften(a, 2) = (1 + Verdicken) * (1 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(255) & Chr(0) & Chr(255) 'magenta Geoeigenschaften(a, 2) = (1 + Verdicken) * (1 + 1 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(255) & Chr(0) & Chr(0) 'rot Geoeigenschaften(a, 2) = (1 + Verdicken) * (1 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(0) & Chr(255) & Chr(255) 'cyan Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(0) & Chr(255) & Chr(0) 'grün Geoeigenschaften(a, 2) = (1 + Verdicken) * (1.5 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0

Page 125: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 125

Case Chr(0) & Chr(0) & Chr(255) 'blau Geoeigenschaften(a, 2) = (1 + Verdicken) * (3 + 0 * ModI) Geoeigenschaften(a, 3) = 0 Geoeigenschaften(a, 4) = 0 Geoeigenschaften(a, 5) = 0 Case Chr(0) & Chr(0) & Chr(0) 'schwarz Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 2 * ModI) 'keine Farbänderung Case Chr(18) & Chr(18) & Chr(18) 'Layerabdecken Geoeigenschaften(a, 2) = (1 + Verdicken) * (3 + 0 * ModI) Geoeigenschaften(a, 3) = 255 Geoeigenschaften(a, 4) = 255 Geoeigenschaften(a, 5) = 255 Case Else Geoeigenschaften(a, 2) = (1 + Verdicken) * (2 + 0 * ModI) 'keine Farbänderung End Select End IfNext'PinselCTBFor a = 3 To Georekorde If Geoeigenschaften(a, 0) <> 261 And Geoeigenschaften(a, 6) <> 1 Then AktFarbe = Chr(Geoeigenschaften(a, 7)) & Chr(Geoeigenschaften(a, 8)) & Chr(Geoeigenschaften(a, 9)) Select Case AktFarbe Case Chr(255) & Chr(255) & Chr(255) 'weiß 'keine Farbänderung Case Chr(255) & Chr(255) & Chr(0) 'gelb Geoeigenschaften(a, 7) = 0 Geoeigenschaften(a, 8) = 0 Geoeigenschaften(a, 9) = 0 Case Chr(255) & Chr(0) & Chr(255) 'magenta Geoeigenschaften(a, 7) = 0 Geoeigenschaften(a, 8) = 0 Geoeigenschaften(a, 9) = 0 Case Chr(255) & Chr(0) & Chr(0) 'rot Geoeigenschaften(a, 7) = 0 Geoeigenschaften(a, 8) = 0 Geoeigenschaften(a, 9) = 0 Case Chr(0) & Chr(255) & Chr(255) 'cyan Geoeigenschaften(a, 7) = 0 Geoeigenschaften(a, 8) = 0 Geoeigenschaften(a, 9) = 0 Case Chr(0) & Chr(255) & Chr(0) 'grün Geoeigenschaften(a, 7) = 0 Geoeigenschaften(a, 8) = 0 Geoeigenschaften(a, 9) = 0 Case Chr(0) & Chr(0) & Chr(255) 'blau Geoeigenschaften(a, 7) = 0 Geoeigenschaften(a, 8) = 0 Geoeigenschaften(a, 9) = 0 Case Chr(0) & Chr(0) & Chr(0) 'schwarz Geoeigenschaften(a, 7) = 255 Geoeigenschaften(a, 8) = 255 Geoeigenschaften(a, 9) = 255 Case Chr(18) & Chr(18) & Chr(18) 'Layerabdecken Geoeigenschaften(a, 7) = 255 Geoeigenschaften(a, 8) = 255 Geoeigenschaften(a, 9) = 255 Case Chr(33) & Chr(40) & Chr(48) 'zensurschwarz Geoeigenschaften(a, 7) = 255 Geoeigenschaften(a, 8) = 255 Geoeigenschaften(a, 9) = 255 Case Else 'nichts End Select End IfNext'TextCTBFor a = 1 To Textrekorde If Texteigenschaften(a, 0) <> 261 Then AktFarbe = Chr(Texteigenschaften(a, 1)) & Chr(Texteigenschaften(a, 2)) & Chr(Texteigenschaften(a, 3)) Select Case AktFarbe Case Chr(255) & Chr(255) & Chr(255) 'weiß 'keine Farbänderung Case Chr(255) & Chr(255) & Chr(0) 'gelb Texteigenschaften(a, 1) = 0 Texteigenschaften(a, 2) = 0 Texteigenschaften(a, 3) = 0 Case Chr(255) & Chr(0) & Chr(255) 'magenta Texteigenschaften(a, 1) = 0 Texteigenschaften(a, 2) = 0

Page 126: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 126

Texteigenschaften(a, 3) = 0 Case Chr(255) & Chr(0) & Chr(0) 'rot Texteigenschaften(a, 1) = 0 Texteigenschaften(a, 2) = 0 Texteigenschaften(a, 3) = 0 Case Chr(0) & Chr(255) & Chr(255) 'cyan Texteigenschaften(a, 1) = 0 Texteigenschaften(a, 2) = 0 Texteigenschaften(a, 3) = 0 Case Chr(0) & Chr(255) & Chr(0) 'grün Texteigenschaften(a, 1) = 0 Texteigenschaften(a, 2) = 0 Texteigenschaften(a, 3) = 0 Case Chr(0) & Chr(0) & Chr(255) 'blau Texteigenschaften(a, 1) = 0 Texteigenschaften(a, 2) = 0 Texteigenschaften(a, 3) = 0 Case Chr(0) & Chr(0) & Chr(0) 'schwarz 'nichts Case Else 'nichts End Select End IfNextElse 'keine CTB For a = 3 To Georekorde If Geoeigenschaften(a, 2) = 0 And Geoeigenschaften(a, 1) <> 5 Then Geoeigenschaften(a, 2) = 2 * (1 + Verdicken) End If NextEnd If 'If ModR = 0 Then

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("CTB") Selection.TypeParagraphEnd If

'Polygone in Füllungen verwandelnIf ModV = 1 Then For a = 3 To Georekorde - 1 Typ = Geoeigenschaften(a, 0) If Typ = 804 Then rot = Geoeigenschaften(a, 7) grün = Geoeigenschaften(a, 8) blau = Geoeigenschaften(a, 9) AktPinselstil = Geoeigenschaften(a + 1, 6) AktPinselrot = Geoeigenschaften(a + 1, 7) AktPinselgrün = Geoeigenschaften(a + 1, 8) AktPinselblau = Geoeigenschaften(a + 1, 9) If Geoeigenschaften(a, 1) = 5 Then Geoeigenschaften(a, 0) = 261 Georekord(a) = "" For b = a + 1 To Georekorde If AktPinselstil = Geoeigenschaften(b, 6) And AktPinselrot = Geoeigenschaften(b, 7) And AktPinselgrün = Geoeigenschaften(b, 8) And AktPinselblau = Geoeigenschaften(b, 9) Then Geoeigenschaften(b, 6) = 0 Geoeigenschaften(b, 7) = rot Geoeigenschaften(b, 8) = grün Geoeigenschaften(b, 9) = blau Else If Geoeigenschaften(b, 0) <> 261 Then Exit For End If Next End If End If NextEnd If

'Pixel in Kreislein verwandelnIf ModI = 1 Then Farbe = Chr(255) & Chr(255) & Chr(0) Else Farbe = Chr(255) & Chr(0) & Chr(0)End IfFor a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) If Typ = 1055 Then AktFarbe = Mid(Georekord(a), 7, 3) If AktFarbe = Farbe Then Georekord(a) = "" Geoeigenschaften(a, 0) = 261

Page 127: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 127

Else Y = RekordZahl(Georekord(a), 6) X = RekordZahl(Georekord(a), 7) k = 1 + Verdicken Geoeigenschaften(a, 0) = 1048 Georekord(a) = EllipseZeichnen(Y - k, X - k, Y + k, X + k) End If End IfNext

'Mtexte sprengenFor a = 1 To Textrekorde Typ = Texteigenschaften(a, 0) If Typ = 2610 Then b = RekordZahl(Textrekord(a), 7) If b = 0 And Texteigenschaften(a, 10) <> 2 Then Y = RekordZahl(Textrekord(a), 4) X = RekordZahl(Textrekord(a), 5) Textlenge = RekordZahl(Textrekord(a), 6) Teiltext = Mid(Textrekord(a), 15, Textlenge) Texteigenschaften(a, 0) = 1313 Textrekord(a) = TextZeichnen(Teiltext, Y, X) End If End IfNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("Pixel und Mtext") Selection.TypeParagraphEnd If

Summe = 0: Polygone = 0If FensterY > FensterX Then c = FensterY Else c = FensterXFor a = 3 To Georekorde 'Polygone bekommen umschließendes Rechteck als Eigenschaft um PowerWMF zu beschleunigen Typ = Geoeigenschaften(a, 0) If Typ = 804 Then 'für berührende Schraffuren AnzahlPunkte = RekordZahl(Georekord(a), 4) Poly = Right(Georekord(a), AnzahlPunkte * 4) minX = RekordZahl(Poly, 1) minY = RekordZahl(Poly, 2) maxX = minX maxY = minY For i = 2 To AnzahlPunkte X = RekordZahl(Poly, i * 2 - 1) Y = RekordZahl(Poly, i * 2) If X > maxX Then maxX = X If X < minX Then minX = X If Y > maxY Then maxY = Y If Y < minY Then minY = Y Next Geoeigenschaften(a, 10) = minX Geoeigenschaften(a, 11) = minY Geoeigenschaften(a, 12) = maxX Geoeigenschaften(a, 13) = maxY 'zum Meckern bei Buchstabenbruchstücke b = maxX - minX d = maxY - minY If b < d Then b = d Zahl = b / c If Zahl < 0.02 Then Summe = Summe + AnzahlPunkte Polygone = Polygone + 1 End If End IfNextb = Textrekorde - 1If Polygone - 3 * b > 100 Then a = MsgBox("Die Grafik enthält eine große Menge an Polygönchen. Möglicherweise handelt es sich um Buchstabenbruchstücke oder zersplitterte Schraffuren." _ & Chr(13) & Chr(10) & "Anzahl der Polygönchen:" & Polygone _ & Chr(13) & Chr(10) & "Anzahl der Polygonecken:" & Summe _ & Chr(13) & Chr(10) & "Anzahl der Texte:" & b _ , vbOKCancel, "Problemgrafik") If a = 2 Then Exit SubEnd If

'Schraffuren verbindenPrüfobjekte = -1For i = 3 To Georekorde

Page 128: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 128

If Geoeigenschaften(i, 0) = 804 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = i End IfNextFor i = 0 To Prüfobjekte Poly = Georekord(Liniennummer(i)) AnzahlPunkte = RekordZahl(Poly, 4) Poly = Right(Poly, AnzahlPunkte * 4) Fleche1 = Abs(Polygonfläche(Poly)) For j = i + 1 To Prüfobjekte If j - i > Geduld Then Exit For If Geoeigenschaften(Liniennummer(i), 1) <> 5 Then Exit For b = 0: f = 0 For c = 6 To 9 If Geoeigenschaften(Liniennummer(i), c) <> Geoeigenschaften(Liniennummer(j), c) Then b = 1 Next If Geoeigenschaften(Liniennummer(j), 1) <> 5 Then b = 1 If Geoeigenschaften(Liniennummer(i), 10) > Geoeigenschaften(Liniennummer(j), 12) Then b = 1 If Geoeigenschaften(Liniennummer(j), 10) > Geoeigenschaften(Liniennummer(i), 12) Then b = 1 If Geoeigenschaften(Liniennummer(i), 11) > Geoeigenschaften(Liniennummer(j), 13) Then b = 1 If Geoeigenschaften(Liniennummer(j), 11) > Geoeigenschaften(Liniennummer(i), 13) Then b = 1 If b <> 1 Then Poly2 = Georekord(Liniennummer(j)) AnzahlPunkte2 = RekordZahl(Poly2, 4) Poly2 = Right(Poly2, AnzahlPunkte2 * 4) Fleche2 = Abs(Polygonfläche(Poly2)) For a = 1 To AnzahlPunkte For b = 1 To AnzahlPunkte2 Punkt1 = Left(Poly, 4) Punkt2 = Right(Poly, 4) Punkt3 = Left(Poly2, 4) Punkt4 = Right(Poly2, 4) If Punkt1 = Punkt3 And Punkt2 = Punkt4 Then Poly2 = Punkteinvertieren(Poly2) tx = Punkt3: Punkt3 = Punkt4: Punkt4 = tx End If If Punkt1 = Punkt4 And Punkt2 = Punkt3 Then Poly2 = Right(Poly2, (AnzahlPunkte2 - 1) * 4) Poly2 = Left(Poly2, (AnzahlPunkte2 - 2) * 4) Poly3 = Poly & Poly2 Fleche3 = Abs(Polygonfläche(Poly3)) c = Fleche3 - Fleche2 - Fleche1 x1 = Abs(c) / (Abs(Fleche3) + Abs(Fleche2) + Abs(Fleche1)) If x1 < 0.01 Then Georekord(Liniennummer(j)) = PolygonZeichnen(Poly3) Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 If Geoeigenschaften(Liniennummer(i), 10) < Geoeigenschaften(Liniennummer(j), 10) Then Geoeigenschaften(Liniennummer(j), 10) = Geoeigenschaften(Liniennummer(i), 10) If Geoeigenschaften(Liniennummer(i), 11) < Geoeigenschaften(Liniennummer(j), 11) Then Geoeigenschaften(Liniennummer(j), 11) = Geoeigenschaften(Liniennummer(i), 11) If Geoeigenschaften(Liniennummer(i), 12) > Geoeigenschaften(Liniennummer(j), 12) Then Geoeigenschaften(Liniennummer(j), 12) = Geoeigenschaften(Liniennummer(i), 12) If Geoeigenschaften(Liniennummer(i), 13) > Geoeigenschaften(Liniennummer(j), 13) Then Geoeigenschaften(Liniennummer(j), 13) = Geoeigenschaften(Liniennummer(i), 13) f = 1 End If End If If f = 1 Then Exit For tx = Left(Poly2, 4) Poly2 = Right(Poly2, (AnzahlPunkte2 - 1) * 4) & tx Next If f = 1 Then Exit For tx = Left(Poly, 4) Poly = Right(Poly, (AnzahlPunkte - 1) * 4) & tx Next If f = 1 Then Exit For End If NextNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("Schraffuren verbinden") Selection.TypeParagraphEnd If

'berührende Polygone zu überschlagene Polygone verbindenPrüfobjekte = -1ReDim Liniennummer(Georekorde)For i = 3 To Georekorde

Page 129: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 129

If Geoeigenschaften(i, 0) = 804 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = i End IfNextFor i = 0 To Prüfobjekte Poly = Georekord(Liniennummer(i)) AnzahlPunkte = RekordZahl(Poly, 4) Poly = Right(Poly, AnzahlPunkte * 4) For j = i + 1 To Prüfobjekte If j - i > Geduld Then Exit For b = 0: f = 0 For a = 1 To 9 If Geoeigenschaften(Liniennummer(i), a) <> Geoeigenschaften(Liniennummer(j), a) Then b = 1 Next If Geoeigenschaften(Liniennummer(i), 10) > Geoeigenschaften(Liniennummer(j), 12) Then b = 1 If Geoeigenschaften(Liniennummer(j), 10) > Geoeigenschaften(Liniennummer(i), 12) Then b = 1 If Geoeigenschaften(Liniennummer(i), 11) > Geoeigenschaften(Liniennummer(j), 13) Then b = 1 If Geoeigenschaften(Liniennummer(j), 11) > Geoeigenschaften(Liniennummer(i), 13) Then b = 1 If b = 0 Then Poly2 = Georekord(Liniennummer(j)) AnzahlPunkte2 = RekordZahl(Poly2, 4) Poly2 = Right(Poly2, AnzahlPunkte2 * 4) For a = 1 To AnzahlPunkte For b = 1 To AnzahlPunkte2 If Right(Poly, 4) = Right(Poly2, 4) Then c = 0: d = 0: xs = 4 x1 = RekordZahl(Poly, 1) y1 = RekordZahl(Poly, 2) x2 = RekordZahl(Poly2, 1) y2 = RekordZahl(Poly2, 2) x3 = RekordZahl(Poly, AnzahlPunkte * 2 - 3) y3 = RekordZahl(Poly, AnzahlPunkte * 2 - 2) x4 = RekordZahl(Poly2, AnzahlPunkte2 * 2 - 3) y4 = RekordZahl(Poly2, AnzahlPunkte2 * 2 - 2) X = RekordZahl(Poly, AnzahlPunkte * 2 - 1) Y = RekordZahl(Poly, AnzahlPunkte * 2) Zahl = Sqr((X - x1) ^ 2 + (Y - y1) ^ 2) - Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) If Zahl > 0 Then Exit For If x1 = x2 Then d = 1 If x3 = x4 Then d = 1 If d = 0 Then m1 = (y2 - y1) / (x2 - x1) m2 = (y4 - y3) / (x4 - x3) If Abs(m2 - m1) > 0.1 Then xs = (y3 - y1 + m1 * x1 - m2 * x3) / (m1 - m2) ys = m1 * (xs - x1) + y1 xs = Abs(xs - X) ys = Abs(ys - Y) End If End If If xs < 3 And ys < 3 Then c = 1 Else If x1 = x4 Then Exit For If x3 = x2 Then Exit For m1 = (y4 - y1) / (x4 - x1) m2 = (y2 - y3) / (x2 - x3) If Abs(m2 - m1) < 0.1 Then Exit For xs = (y3 - y1 + m1 * x1 - m2 * x3) / (m1 - m2) ys = m1 * (xs - x1) + y1 xs = Abs(xs - X) ys = Abs(ys - Y) If xs < 3 And ys < 3 Then c = 2 End If If c <> 0 Then Geoeigenschaften(Liniennummer(i), 0) = 261 Georekord(Liniennummer(i)) = "" Poly = Left(Poly, AnzahlPunkte * 4 - 4) Poly2 = Left(Poly2, AnzahlPunkte2 * 4 - 4) If c = 1 Then Poly2 = Punkteinvertieren(Poly2) Poly3 = Poly & Poly2 Georekord(Liniennummer(j)) = PolygonZeichnen(Poly3) If Geoeigenschaften(Liniennummer(i), 10) < Geoeigenschaften(Liniennummer(j), 10) Then Geoeigenschaften(Liniennummer(j), 10) = Geoeigenschaften(Liniennummer(i), 10) If Geoeigenschaften(Liniennummer(i), 11) < Geoeigenschaften(Liniennummer(j), 11) Then Geoeigenschaften(Liniennummer(j), 11) = Geoeigenschaften(Liniennummer(i), 11) If Geoeigenschaften(Liniennummer(i), 12) > Geoeigenschaften(Liniennummer(j), 12) Then Geoeigenschaften(Liniennummer(j), 12) = Geoeigenschaften(Liniennummer(i), 12) If Geoeigenschaften(Liniennummer(i), 13) > Geoeigenschaften(Liniennummer(j), 13) Then Geoeigenschaften(Liniennummer(j), 13) = Geoeigenschaften(Liniennummer(i), 13) f = 1

Page 130: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 130

Exit For End If End If tx = Left(Poly2, 4) Poly2 = Right(Poly2, (AnzahlPunkte2 - 1) * 4) & tx Next tx = Left(Poly, 4) Poly = Right(Poly, (AnzahlPunkte - 1) * 4) & tx If f = 1 Then Exit For Next End If If f = 1 Then Exit For NextNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("behrührende Polygone") Selection.TypeParagraphEnd If

For a = 3 To Georekorde 'Polylinien bekommen ihre Endpunkte als Eigenschaft um PowerWMF zu beschleunigen Typ = Geoeigenschaften(a, 0) If Typ = 805 Or Typ = 804 Then AnzahlPunkte = RekordZahl(Georekord(a), 4) Poly = Right(Georekord(a), AnzahlPunkte * 4) Geoeigenschaften(a, 10) = RekordZahl(Poly, 1) 'x1 Geoeigenschaften(a, 11) = RekordZahl(Poly, 2) 'y1 Geoeigenschaften(a, 12) = RekordZahl(Poly, AnzahlPunkte * 2 - 1) 'x2 Geoeigenschaften(a, 13) = RekordZahl(Poly, AnzahlPunkte * 2) 'y2 'für doppelte Linien Löschen und überlappende Linien End IfNext

'Linien mit der Farbe 80;102;101 in Pfeile verwandelnFor a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) If Typ = 805 Then AnzahlPunkte = RekordZahl(Georekord(a), 4) If AnzahlPunkte = 2 Then If Geoeigenschaften(a, 3) = 80 And Geoeigenschaften(a, 4) = 102 And Geoeigenschaften(a, 5) = 101 Then x1 = Geoeigenschaften(a, 10) y1 = Geoeigenschaften(a, 11) x2 = Geoeigenschaften(a, 12) y2 = Geoeigenschaften(a, 13) If x1 + Pfeilgröße / 2 > FensterX Then FensterX = x1 + Pfeilgröße / 2 If y1 + Pfeilgröße / 2 > FensterY Then FensterY = y1 + Pfeilgröße / 2 If x2 + Pfeilgröße / 2 > FensterX Then FensterX = x2 + Pfeilgröße / 2 If y2 + Pfeilgröße / 2 > FensterY Then FensterY = y2 + Pfeilgröße / 2 Georekord(a) = PfeilZeichnen(x1, y1, x2, y2, Pfeilgröße) Geoeigenschaften(a, 0) = 100 For b = 3 To 9 Geoeigenschaften(a, b) = 0 Next End If End If End IfNext'Polylinien mit der Farbe 77;97;223 in schriftlose Polymaßketten verwandelnFor a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) If Typ = 805 Then If Geoeigenschaften(a, 3) = 77 And Geoeigenschaften(a, 4) = 97 And Geoeigenschaften(a, 5) = 223 Then AnzahlPunkte = RekordZahl(Georekord(a), 4) x1 = Geoeigenschaften(a, 10) y1 = Geoeigenschaften(a, 11) x2 = Geoeigenschaften(a, 12) y2 = Geoeigenschaften(a, 13) If x1 + Pfeilgröße > FensterX Then FensterX = x1 + Pfeilgröße If y1 + Pfeilgröße > FensterY Then FensterY = y1 + Pfeilgröße If x2 + Pfeilgröße > FensterX Then FensterX = x2 + Pfeilgröße If y2 + Pfeilgröße > FensterY Then FensterY = y2 + Pfeilgröße ReDim Werte(AnzahlPunkte - 1) Werte(0) = AnzahlPunkte - 1 Werte(AnzahlPunkte - 1) = Pfeilgröße For b = 2 To AnzahlPunkte - 1 x3 = RekordZahl(Georekord(a), 2 * b + 3) y3 = RekordZahl(Georekord(a), 2 * b + 4) Werte(b - 1) = Sqr((x3 - x1) ^ 2 + (y3 - y1) ^ 2)

Page 131: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 131

Next Georekord(a) = Polymaßkette(x1, y1, x2, y2, "", Werte) Geoeigenschaften(a, 0) = 104 For b = 3 To 9 Geoeigenschaften(a, b) = 0 Next End If End IfNext

'Polylinien glättenk = 1 + Verdicken * (1 + ModJ) / 2For i = 3 To Georekorde Typ = Geoeigenschaften(i, 0) If Typ = 804 Or Typ = 805 Then Georekord(i) = Polyglätten(Georekord(i), k) Geoeigenschaften(i, 0) = RekordZahl(Georekord(i), 3) End IfNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("Polyglätten") Selection.TypeParagraphEnd If

'doppelte Linien löschenFor e = 0 To 1 ' e=0 to 1 unterteilt die Linien in 2 Gruppen: 2+2*Verdichen oder andere Prüfobjekte = -1 For a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) If Typ = 805 Then AnzahlPunkte = RekordZahl(Georekord(a), 4) If AnzahlPunkte = 2 Then If Geoeigenschaften(a, 2) = 2 + 2 * Verdicken Xor e = 1 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = a End If End If End If Next For i = 0 To Prüfobjekte x1 = Geoeigenschaften(Liniennummer(i), 10) y1 = Geoeigenschaften(Liniennummer(i), 11) x2 = Geoeigenschaften(Liniennummer(i), 12) y2 = Geoeigenschaften(Liniennummer(i), 13) For j = i + 1 To Prüfobjekte If j - i > Geduld Then Exit For x3 = Geoeigenschaften(Liniennummer(j), 10) y3 = Geoeigenschaften(Liniennummer(j), 11) x4 = Geoeigenschaften(Liniennummer(j), 12) y4 = Geoeigenschaften(Liniennummer(j), 13) c = 0 If x1 = x3 And y1 = y3 And x2 = x4 And y2 = y4 Then c = 1 If x2 = x3 And y2 = y3 And x1 = x4 And y1 = y4 Then c = 1 If c = 1 Then If Geoeigenschaften(Liniennummer(j), 2) >= Geoeigenschaften(Liniennummer(i), 2) Then Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 Exit For End If End If Next Next 'doppelte Polylinien mehr als 2 Punkte löschen Prüfobjekte = -1 For a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) If Typ = 805 Or Typ = 804 Then AnzahlPunkte = RekordZahl(Georekord(a), 4) If AnzahlPunkte > 2 Then If Geoeigenschaften(a, 2) = 2 + 2 * Verdicken Xor e = 1 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = a End If End If End If Next For i = 0 To Prüfobjekte x1 = Geoeigenschaften(Liniennummer(i), 10) y1 = Geoeigenschaften(Liniennummer(i), 11) x2 = Geoeigenschaften(Liniennummer(i), 12)

Page 132: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 132

y2 = Geoeigenschaften(Liniennummer(i), 13) For j = i + 1 To Prüfobjekte If j - i > Geduld Then Exit For x3 = Geoeigenschaften(Liniennummer(j), 10) y3 = Geoeigenschaften(Liniennummer(j), 11) x4 = Geoeigenschaften(Liniennummer(j), 12) y4 = Geoeigenschaften(Liniennummer(j), 13) c = 0 If x1 = x3 And y1 = y3 And x2 = x4 And y2 = y4 Then c = 1 If x2 = x3 And y2 = y3 And x1 = x4 And y1 = y4 Then c = 1 If c = 1 Then If Georekord(Liniennummer(i)) = Georekord(Liniennummer(j)) Then If Geoeigenschaften(Liniennummer(j), 2) >= Geoeigenschaften(Liniennummer(i), 2) Then If Geoeigenschaften(Liniennummer(j), 6) = 0 Then Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 Exit For End If End If End If End If Next NextNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("doppelte Linien") Selection.TypeParagraphEnd If

'überlappende Linien verbindenPrüfobjekte = -1For a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) If Typ = 805 Then AnzahlPunkte = RekordZahl(Georekord(a), 4) If AnzahlPunkte = 2 Then x1 = Geoeigenschaften(a, 10) y1 = Geoeigenschaften(a, 11) x2 = Geoeigenschaften(a, 12) y2 = Geoeigenschaften(a, 13) If x1 = x2 Or x1 = x2 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = a End If End If End IfNextFor i = 0 To Prüfobjekte x1 = Geoeigenschaften(Liniennummer(i), 10) y1 = Geoeigenschaften(Liniennummer(i), 11) x2 = Geoeigenschaften(Liniennummer(i), 12) y2 = Geoeigenschaften(Liniennummer(i), 13) For j = i + 1 To Prüfobjekte If j - i > Geduld Then Exit For b = 0 For a = 1 To 5 If Geoeigenschaften(Liniennummer(i), a) <> Geoeigenschaften(Liniennummer(j), a) Then b = 1 Next If b = 0 Then x3 = Geoeigenschaften(Liniennummer(j), 10) y3 = Geoeigenschaften(Liniennummer(j), 11) x4 = Geoeigenschaften(Liniennummer(j), 12) y4 = Geoeigenschaften(Liniennummer(j), 13) If x1 = x2 And x2 = x3 And x3 = x4 Then If y2 > y1 Then a = y1: b = y2 Else b = y1: a = y2 If y3 > b Then b = y3 If y4 > b Then b = y4 If y3 < a Then a = y3 If y4 < a Then a = y4 c = Abs(y1 - y2) + Abs(y3 - y4) + a - b If c > 0 Then Georekord(Liniennummer(j)) = LinieZeichnen(x1, a, x1, b) Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 Geoeigenschaften(Liniennummer(j), 10) = x1 Geoeigenschaften(Liniennummer(j), 11) = a Geoeigenschaften(Liniennummer(j), 12) = x1 Geoeigenschaften(Liniennummer(j), 13) = b Exit For End If

Page 133: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 133

ElseIf y1 = y2 And y2 = y3 And y3 = y4 Then If x2 > x1 Then a = x1: b = x2 Else b = x1: a = x2 If x3 > b Then b = x3 If x4 > b Then b = x4 If x3 < a Then a = x3 If x4 < a Then a = x4 c = Abs(x1 - x2) + Abs(x3 - x4) + a - b If c > 0 Then Georekord(Liniennummer(j)) = LinieZeichnen(a, y1, b, y1) Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 Geoeigenschaften(Liniennummer(j), 10) = a Geoeigenschaften(Liniennummer(j), 11) = y1 Geoeigenschaften(Liniennummer(j), 12) = b Geoeigenschaften(Liniennummer(j), 13) = y1 Exit For End If End If End If NextNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("überlappende Linien") Selection.TypeParagraphEnd If

'Linien zu Polylinien verbindenFor e = 0 To 1 Prüfobjekte = -1 For a = 3 To Georekorde If Geoeigenschaften(a, 0) = 805 Then If Geoeigenschaften(a, 2) = 2 + 2 * Verdicken Xor e = 1 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = a End If End If Next For i = 0 To Prüfobjekte Poly = Georekord(Liniennummer(i)) AnzahlPunkte = RekordZahl(Poly, 4) Poly = Right(Poly, AnzahlPunkte * 4) x1 = Geoeigenschaften(Liniennummer(i), 10) y1 = Geoeigenschaften(Liniennummer(i), 11) x2 = Geoeigenschaften(Liniennummer(i), 12) y2 = Geoeigenschaften(Liniennummer(i), 13) For j = i + 1 To Prüfobjekte If j - i > Geduld Then Exit For b = 0 For a = 1 To 5 If Geoeigenschaften(Liniennummer(i), a) <> Geoeigenschaften(Liniennummer(j), a) Then b = 1 Next x3 = Geoeigenschaften(Liniennummer(j), 10) y3 = Geoeigenschaften(Liniennummer(j), 11) x4 = Geoeigenschaften(Liniennummer(j), 12) y4 = Geoeigenschaften(Liniennummer(j), 13) c = 0 If x2 = x3 And y2 = y3 Then c = 1 ElseIf x1 = x3 And y1 = y3 Then c = 1 ElseIf x2 = x4 And y2 = y4 Then c = 1 ElseIf x1 = x4 And y1 = y4 Then c = 1 End If If b = 0 And c = 1 Then Poly2 = Georekord(Liniennummer(j)) AnzahlPunkte2 = RekordZahl(Poly2, 4) Poly2 = Right(Poly2, AnzahlPunkte2 * 4) If x2 = x3 And y2 = y3 Then ElseIf x1 = x3 And y1 = y3 Then Poly = Punkteinvertieren(Poly) ElseIf x2 = x4 And y2 = y4 Then Poly2 = Punkteinvertieren(Poly2) ElseIf x1 = x4 And y1 = y4 Then Poly = Punkteinvertieren(Poly) Poly2 = Punkteinvertieren(Poly2) End If Poly3 = Left(Poly, AnzahlPunkte * 4 - 4) & Poly2 Georekord(Liniennummer(i)) = ""

Page 134: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 134

Geoeigenschaften(Liniennummer(i), 0) = 261 Georekord(Liniennummer(j)) = PolylinieZeichnen(Poly3) Geoeigenschaften(Liniennummer(j), 10) = RekordZahl(Poly3, 1) Geoeigenschaften(Liniennummer(j), 11) = RekordZahl(Poly3, 2) b = AnzahlPunkte + AnzahlPunkte2 - 1 Geoeigenschaften(Liniennummer(j), 12) = RekordZahl(Poly3, b * 2 - 1) Geoeigenschaften(Liniennummer(j), 13) = RekordZahl(Poly3, b * 2) Exit For End If Next NextNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("linien verbinden") Selection.TypeParagraphEnd If

'geschlossene Polylinien in Polygone verwandelnFor i = 3 To Georekorde Typ = Geoeigenschaften(i, 0) If Typ = 804 Or Typ = 805 Then AnzahlPunkte = RekordZahl(Georekord(i), 4) Poly = Right(Georekord(i), AnzahlPunkte * 4) Punkt1 = Left(Poly, 4) Punkt2 = Right(Poly, 4) If Punkt1 = Punkt2 Then Poly = Left(Poly, AnzahlPunkte * 4 - 4) Georekord(i) = PolygonZeichnen(Poly) If Typ = 805 Then Geoeigenschaften(i, 0) = 804 Geoeigenschaften(i, 6) = 1 Geoeigenschaften(i, 7) = 0 Geoeigenschaften(i, 8) = 0 Geoeigenschaften(i, 9) = 0 End If End If End IfNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("viereckige Dreiecke") Selection.TypeParagraphEnd If

'Polylinien nochmal glättenk = 1 + Verdicken * (1 + ModJ) / 2For i = 1 To Georekorde Typ = Geoeigenschaften(i, 0) If Typ = 804 Or Typ = 805 Then Georekord(i) = Polyglätten(Georekord(i), k) Geoeigenschaften(i, 0) = RekordZahl(Georekord(i), 3) End IfNext

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("Polyglätten") Selection.TypeParagraphEnd If

'unsichtbar umrandete Farbpolygone mit sichtbar umrandete Luftpolygone verschmelzenReDim Liniennummer2(Georekorde)Prüfobjekte = -1: Prüfobjekte2 = -1For a = 3 To Georekorde If Geoeigenschaften(a, 0) = 804 Then If Geoeigenschaften(a, 1) = 5 And Geoeigenschaften(a, 6) <> 1 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = a End If If Geoeigenschaften(a, 6) = 1 And Geoeigenschaften(a, 1) <> 5 Then Prüfobjekte2 = Prüfobjekte2 + 1 Liniennummer2(Prüfobjekte2) = a End If End IfNextFor i = 0 To Prüfobjekte Poly = Georekord(Liniennummer(i)) AnzahlPunkte = RekordZahl(Poly, 4) Poly = Right(Poly, AnzahlPunkte * 4)

Page 135: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 135

For j = 0 To Prüfobjekte2 Poly2 = Georekord(Liniennummer2(j)) AnzahlPunkte2 = RekordZahl(Poly2, 4) Poly2 = Right(Poly2, AnzahlPunkte2 * 4) d = 0 If AnzahlPunkte = AnzahlPunkte2 Then For c = 1 To AnzahlPunkte If Poly = Poly2 Or Poly = Punkteinvertieren(Poly2) Then Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 Geoeigenschaften(Liniennummer2(j), 6) = Geoeigenschaften(Liniennummer(i), 6) Geoeigenschaften(Liniennummer2(j), 7) = Geoeigenschaften(Liniennummer(i), 7) Geoeigenschaften(Liniennummer2(j), 8) = Geoeigenschaften(Liniennummer(i), 8) Geoeigenschaften(Liniennummer2(j), 9) = Geoeigenschaften(Liniennummer(i), 9) d = 1 Exit For End If tx = Right(Poly2, 4) Poly2 = tx & Left(Poly2, AnzahlPunkte2 * 4 - 4) Next If d = 1 Then Exit For End If NextNext'andere ObjektePrüfobjekte = -1: Prüfobjekte2 = -1For a = 3 To Georekorde Select Case Geoeigenschaften(a, 0) Case 2074, 2096, 1048, 1051, 1564 If Geoeigenschaften(a, 1) = 5 And Geoeigenschaften(a, 6) <> 1 Then Prüfobjekte = Prüfobjekte + 1 Liniennummer(Prüfobjekte) = a End If If Geoeigenschaften(a, 6) = 1 And Geoeigenschaften(a, 1) <> 5 Then Prüfobjekte2 = Prüfobjekte2 + 1 Liniennummer2(Prüfobjekte2) = a End If End SelectNextFor i = 0 To Prüfobjekte For j = 0 To Prüfobjekte2 If Georekord(Liniennummer(i)) = Georekord(Liniennummer2(j)) Then Georekord(Liniennummer(i)) = "" Geoeigenschaften(Liniennummer(i), 0) = 261 Geoeigenschaften(Liniennummer2(j), 6) = Geoeigenschaften(Liniennummer(i), 6) Geoeigenschaften(Liniennummer2(j), 7) = Geoeigenschaften(Liniennummer(i), 7) Geoeigenschaften(Liniennummer2(j), 8) = Geoeigenschaften(Liniennummer(i), 8) Geoeigenschaften(Liniennummer2(j), 9) = Geoeigenschaften(Liniennummer(i), 9) End If NextNext

'Textabdecken mitnehmenFor a = 3 To Georekorde Typ = Geoeigenschaften(a, 0) e = Geoeigenschaften(a, 14) If Typ = 261 And e = 261 Then Typ = Geoeigenschaften(a - 1, 0) If Typ = 804 Or Typ = 1051 Then AktFüllerstil = Geoeigenschaften(a - 1, 1) AktPinselrot = Geoeigenschaften(a - 1, 7) AktPinselgrün = Geoeigenschaften(a - 1, 8) AktPinselblau = Geoeigenschaften(a - 1, 9) b = AktPinselrot + AktPinselblau + AktPinselblau If AktFüllerstil = 5 And b = 765 Then weißeTextvierecke = weißeTextvierecke & Georekord(a - 1) Georekord(a - 1) = "" Geoeigenschaften(a - 1, 0) = 261 End If End If End IfNextIf weißeTextvierecke <> "" Then Geoeigenschaften(Georekorde, 0) = 999 Geoeigenschaften(Georekorde, 1) = 5 Geoeigenschaften(Georekorde, 2) = 0 Geoeigenschaften(Georekorde, 3) = 0 Geoeigenschaften(Georekorde, 4) = 0 Geoeigenschaften(Georekorde, 5) = 0 Geoeigenschaften(Georekorde, 6) = 0 Geoeigenschaften(Georekorde, 7) = 255 Geoeigenschaften(Georekorde, 8) = 255

Page 136: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 136

Geoeigenschaften(Georekorde, 9) = 255 Georekord(Georekorde) = weißeTextvierecke Else Geoeigenschaften(Georekorde, 0) = 261End If

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("Textabdecken schieben") Selection.TypeParagraphEnd If

'Preader aktualisieren und Setwindow setzenIf ModP = 0 Then Preader = WmfPunkt(52695, 39622) & OOOO & OO & WmfPunkt(FensterX, FensterY) & WmfZeichen(Zoom) & OOOO Preader = Preader & WmfZeichen(Checksumme(Preader))End IfX = RekordZahl(Preader, 6)Y = RekordZahl(Preader, 7)Georekord(0) = WmfZeichen(5) & OO & WmfZeichen(523) & WmfPunkt(0, 0)Geoeigenschaften(0, 0) = 523Georekord(1) = WmfZeichen(5) & OO & WmfZeichen(524) & WmfPunkt(Y, X)Geoeigenschaften(1, 0) = 524'signaturWoTschrift = WmfZeichen(28) & OO & WmfZeichen(763) & WmfZeichen(5 * (Verdicken + 1)) & OOOO & OO & WmfZeichen(400) & OOOO & OOOOWoTschrift = WoTschrift & "Times New Roman"For a = 1 To 17 WoTschrift = WoTschrift & Chr(0)NextWoT = WmfZeichen(5) & WmfBiPunkt(0, 521, -1, 255) & WmfBiPunkt(4, 0, 301, 0)k = 5 * (Verdicken + 1)'cc-by-sa Dieser Teil schreibt meinen Namen (SimonPie) in die Datei und es ist nicht erlaubt diesen zu ändernWoT = WoT & WmfBiPunkt(21, 0, 1313, 30) & "SimonPie - PowerWMFeinfügen3.0" & WmfZeichen(k) & WmfZeichen(k)WoT = WoT & WmfBiPunkt(22, 0, 1313, 32) & "Plattenbeulen; Kampfkrafttheorie" & WmfZeichen(2 * k) & WmfZeichen(k)'Dieses Makro darf beliebig kopiert und kostenlos benutzt werden, aber mein Name muss genannt werden'Die dritte Zeile WoT = WoT & TextZeichnen("...") darf geändert werdenWoT = WoT & TextZeichnen("Torsionsskript Institut Stahlbau", 3 * k, k) & WmfZeichen(5) & WmfBiPunkt(0, 521, 0, 0)Georekord(2) = WoTGeoeigenschaften(2, 0) = 999

'WMF-Tabelle neu erstellen'Welche Objekte zu wählen sind, wird in die Objekteigenschaften geschrieben (Platz 10; 11 und 10)AktFüllerstil = 0: AktFüllerdicke = 0: AktFüllerrot = 0: AktFüllergrün = 0: AktFüllerblau = 0AktPinselstil = 0: AktPinselrot = 0: AktPinselgrün = 0: AktPinselblau = 0AktFont = "": AktPinsel = "": AktFüller = ""AktTextrot = 0: AktTextgrün = 0: AktTextblau = 0AktTextalign = 0: AktTextabdecken = 0: AktSetcharextra = 0AktTextrotabdecken = 0: AktTextgrünabdecken = 0: AktTextblauabdecken = 0For a = 1 To 255 WMFtabelle(a) = ""NextWMFtabelle(0) = WoTschriftb = 0For a = 0 To Georekorde 'Lückenlöschen in Geoobjekte If Geoeigenschaften(a, 0) <> 261 And Geoeigenschaften(a, 0) <> 0 Then Georekord(b) = Georekord(a) For c = 0 To 14 Geoeigenschaften(b, c) = Geoeigenschaften(a, c) Next b = b + 1 End IfNextGeorekorde = b - 1AktFüllernummer = -1For a = 0 To Georekorde 'Füller ermitteln c = 0 If Geoeigenschaften(a, 1) <> AktFüllerstil Then c = 1: AktFüllerstil = Geoeigenschaften(a, 1) If Geoeigenschaften(a, 2) <> AktFüllerdicke Then c = 1: AktFüllerdicke = Geoeigenschaften(a, 2) If Geoeigenschaften(a, 3) <> AktFüllerrot Then c = 1: AktFüllerrot = Geoeigenschaften(a, 3) If Geoeigenschaften(a, 4) <> AktFüllergrün Then c = 1: AktFüllergrün = Geoeigenschaften(a, 4) If Geoeigenschaften(a, 5) <> AktFüllerblau Then c = 1: AktFüllerblau = Geoeigenschaften(a, 5) If c = 1 Then AktFüller = WmfZeichen(8) & OO & WmfBiPunkt(762, AktFüllerstil, AktFüllerdicke, 0) AktFüller = AktFüller & Chr(AktFüllerrot) & Chr(AktFüllergrün) & Chr(AktFüllerblau) & Chr(0) For d = 0 To 255 If WMFtabelle(d) = "" Then

Page 137: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 137

WMFtabelle(d) = AktFüller AktFüllernummer = d If d > letzteFüllernummer Then letzteFüllernummer = d Exit For ElseIf WMFtabelle(d) = AktFüller Then AktFüllernummer = d Exit For End If Next End If Geoeigenschaften(a, 10) = AktFüllernummerNextAktPinselnummer = -1For a = 0 To Georekorde 'Pinsel ermitteln c = 0 If Geoeigenschaften(a, 6) <> AktPinselstil Then c = 1: AktPinselstil = Geoeigenschaften(a, 6) If Geoeigenschaften(a, 7) <> AktPinselrot Then c = 1: AktPinselrot = Geoeigenschaften(a, 7) If Geoeigenschaften(a, 8) <> AktPinselgrün Then c = 1: AktPinselgrün = Geoeigenschaften(a, 8) If Geoeigenschaften(a, 9) <> AktPinselblau Then c = 1: AktPinselblau = Geoeigenschaften(a, 9) If c = 1 Then AktPinsel = WmfZeichen(7) & OO & WmfPunkt(764, AktPinselstil) AktPinsel = AktPinsel & Chr(AktPinselrot) & Chr(AktPinselgrün) & Chr(AktPinselblau) & Chr(0) & OO For d = letzteFüllernummer To 255 If WMFtabelle(d) = "" Then WMFtabelle(d) = AktPinsel AktPinselnummer = d If d > letztePinselnummer Then letztePinselnummer = d Exit For ElseIf WMFtabelle(d) = AktPinsel Then AktPinselnummer = d Exit For End If Next End If Geoeigenschaften(a, 11) = AktPinselnummerNextb = 0For a = 0 To Textrekorde 'Lückenlöschen in Texte If Texteigenschaften(a, 0) <> 261 And Texteigenschaften(a, 0) <> 0 Then Textrekord(b) = Textrekord(a) Textfont(b) = Textfont(a) For c = 0 To 10 Texteigenschaften(b, c) = Texteigenschaften(a, c) Next b = b + 1 End IfNextTextrekorde = b - 1AktFontnummer = -1AktFont = ""For a = 0 To Textrekorde 'Font ermitteln If AktFont <> Textfont(a) Then AktFont = Textfont(a) For d = letztePinselnummer To 255 If WMFtabelle(d) = "" Then WMFtabelle(d) = AktFont AktFontnummer = d If d > letzteFontnummer Then letzteFontnummer = d Exit For ElseIf WMFtabelle(d) = AktFont Then AktFontnummer = d Exit For End If Next End If Texteigenschaften(a, 10) = AktFontnummerNextFor a = 0 To 255 If WMFtabelle(a) = "" Then Exit For Federtasche = Federtasche & WMFtabelle(a)Next

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("WMF-Tabelle") Selection.TypeParagraphEnd If

'nach Füllern sortieren für verlustbehaftete KompressionIf ModJ = 1 Then c = 3 For b = 0 To letztePinselnummer

Page 138: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 138

For a = 3 To Georekorde - 1 If Geoeigenschaften(a, 10) = b Then Georekord2(c) = Georekord(a) For i = 0 To 11 Geoeigenschaften2(c, i) = Geoeigenschaften(a, i) Next c = c + 1 End If Next Next For a = 3 To Georekorde - 1 Georekord(a) = Georekord2(a) For i = 0 To 11 Geoeigenschaften(a, i) = Geoeigenschaften2(a, i) Next NextEnd If'Texte sortierenc = 0For b = letztePinselnummer + 1 To letzteFontnummer For a = 0 To Textrekorde If Texteigenschaften(a, 10) = b Then Textrekord2(c) = Textrekord(a) Textfont2(c) = Textfont(a) For i = 0 To 10 Texteigenschaften2(c, i) = Texteigenschaften(a, i) Next c = c + 1 End If NextNextFor a = 0 To Textrekorde Textrekord(a) = Textrekord2(a) Textfont(a) = Textfont2(a) For i = 0 To 10 Texteigenschaften(a, i) = Texteigenschaften2(a, i) NextNext

'WMF neu aufbauenAktFüllerstil = 0: AktFüllerdicke = 0: AktFüllerrot = 0: AktFüllergrün = 0: AktFüllerblau = 0AktPinselstil = 0: AktPinselrot = 0: AktPinselgrün = 0: AktPinselblau = 0AktFont = "": AktPinsel = "": AktFüller = ""AktTextrot = 0: AktTextgrün = 0: AktTextblau = 0AktTextalign = 0: AktTextabdecken = 0: AktSetcharextra = 0AktTextrotabdecken = 0: AktTextgrünabdecken = 0: AktTextblauabdecken = 0AktFontnummer = -1: AktPinselnummer = -1: AktFüllernummer = -1Dateiinhalt = "" 'zuerst GeometrieFor a = 0 To Georekorde Typ = Geoeigenschaften(a, 0) Select Case Typ Case 1048, 1336, 1051, 1564, 2074, 2096, 804, 999, 100, 101, 102, 104 If Geoeigenschaften(a, 10) <> AktFüllernummer Then AktFüllernummer = Geoeigenschaften(a, 10) Dateiinhalt = Dateiinhalt & ObjektWählen(AktFüllernummer) End If If Geoeigenschaften(a, 11) <> AktPinselnummer Then AktPinselnummer = Geoeigenschaften(a, 11) Dateiinhalt = Dateiinhalt & ObjektWählen(AktPinselnummer) End If Case 2071, 805 'nur Füller If Geoeigenschaften(a, 10) <> AktFüllernummer Then AktFüllernummer = Geoeigenschaften(a, 10) Dateiinhalt = Dateiinhalt & ObjektWählen(AktFüllernummer) End If Case 1565, 1049, 1352, 552, 299, 1065 'nur Pinsel If Geoeigenschaften(a, 11) <> AktPinselnummer Then AktPinselnummer = Geoeigenschaften(a, 11) Dateiinhalt = Dateiinhalt & ObjektWählen(AktPinselnummer) End If End Select Dateiinhalt = Dateiinhalt & Georekord(a)NextHilfstext = "" 'dann TexteFor a = 0 To Textrekorde If Texteigenschaften(a, 10) <> AktFontnummer Then AktFontnummer = Texteigenschaften(a, 10) Hilfstext = Hilfstext & ObjektWählen(AktFontnummer) End If If Texteigenschaften(a, 1) <> AktTextrot Or Texteigenschaften(a, 2) <> AktTextgrün Or Texteigenschaften(a, 3) <> AktTextblau Then AktTextrot = Texteigenschaften(a, 1)

Page 139: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 139

AktTextgrün = Texteigenschaften(a, 2) AktTextblau = Texteigenschaften(a, 3) Hilfstext = Hilfstext & WmfZeichen(5) & OO & WmfZeichen(521) & Chr(AktTextrot) & Chr(AktTextgrün) & Chr(AktTextblau) & Chr(0) End If If Texteigenschaften(a, 5) <> 1 Then If Texteigenschaften(a, 6) <> AktTextrotabdecken Or Texteigenschaften(a, 7) <> AktTextgrünabdecken Or Texteigenschaften(a, 8) <> AktTextblauabdecken Then AktTextrotabdecken = Texteigenschaften(a, 6) AktTextgrünabdecken = Texteigenschaften(a, 7) AktTextblauabdecken = Texteigenschaften(a, 8) Hilfstext = Hilfstext & WmfZeichen(5) & OO & WmfZeichen(513) & Chr(AktTextrotabdecken) & Chr(AktTextgrünabdecken) & Chr(AktTextblauabdecken) & Chr(0) End If End If If Texteigenschaften(a, 5) <> AktTextabdecken Then AktTextabdecken = Texteigenschaften(a, 5) Hilfstext = Hilfstext & WmfZeichen(4) & OO & WmfZeichen(258) & WmfZeichen(AktTextabdecken) End If If Texteigenschaften(a, 4) <> AktTextalign Then AktTextalign = Texteigenschaften(a, 4) Hilfstext = Hilfstext & WmfZeichen(4) & OO & WmfZeichen(302) & WmfZeichen(AktTextalign) End If If Texteigenschaften(a, 9) <> AktSetcharextra Then AktSetcharextra = Texteigenschaften(a, 4) Hilfstext = Hilfstext & WmfZeichen(4) & OO & WmfZeichen(264) & WmfZeichen(AktSetcharextra) End If Hilfstext = Hilfstext & Textrekord(a)NextDateiinhalt = Federtasche & Dateiinhalt & HilfstextHeader = WMFheader(Dateiinhalt)

If ModZ = 1 Then Zeit = (Timer - Startzeit) Selection.TypeText (Zeit) & Chr(9) & ("zusammenbauen") Selection.TypeParagraphEnd If

If Modifikation = "r" Or Modifikation = "z" Or Modifikation = "p" Or Modifikation = "v" Then Selection.Delete Unit:=wdCharacter, Count:=1 ElseIf Modifikation = "i" Or Modifikation = "j" Or Modifikation = "d" Or Modifikation = "h" Then Selection.Delete Unit:=wdCharacter, Count:=1 ElseIf Len(Modifikation) = 2 Then Selection.Delete Unit:=wdCharacter, Count:=1 Else Selection.MoveRight Unit:=wdCharacter, Count:=1End If

Dateiinhalt = Preader & Header & Dateiinhalt & Chr(3) & Chr(0) & OOOOf = FreeFileOpen Dateiname For Output As #fPrint #f, DateiinhaltClose #fSelection.InlineShapes.AddPicture FileName:=Dateiname

End Sub

Page 140: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 140

Der FormelumwandlerMit dem Formelumwandler können in Word Formeln erstellt und auch ausgerechnet werden.

Es wird zwischen 4 Arten unterschieden, wie Formeln dargestellt werden können.ElementarAls Multiplikationszeichen wird der Stern * verwendet. Hoch- oder tiefgestellte Zeichen sind nicht hoch oder tiefgestellt, sondern haben ein ^ oder _ davor. Die Wurzel wird mit ( )^0,5 dargestellt und Bruche haben den senkrechten Bruchstrich /. Elementar dargestellte Formeln haben meist viele Klammern. Griechische Buchstaben und Sonderzeichen werden unterstützt. Die Formel ist eine Zeile hoch. Word und Excel verstehen elementare Formeln.z.B. (1/2+5*(3/4))^0,5

SchickAnstelle von * wird · verwendet und es gibt hoch und tiefgestellte Zeichen. Verschiedene Schriftarten sind möglich. Für den Bruch gibt es weiterhin den senkrechten Bruchstrich /. Wurzel wird mit ( )0,5 dargestellt. Die Formel ist eine Zeile hoch.z.B. (1/2+5·(3/4))0,5

EQ-FeldDas EQ-Feld stellt eine Formel in WinWord dar. EQ-Felder gibt es seit Windows 3.1, während der Formeleditor später kam. Formeln, die ein EQ-Feld sind, werden nicht mit dem Doppelklick bearbeitet, sondern mit Feldtasten, wie F9 (aktualisieren), Strg F9(Feld erstellen) und Shift F9 (Feld anzeigen).Brüche werden mit dem horizontalen Strich getrennt und die Wurzel umschließt mit dem Wurzelzeichen die Zahlen. Kammern können über mehrere Zeilen sein. Die Formel kann mehrere Zeilen hoch sein und benötigt weniger Klammern.z.B. EQ \r(;\F(1;2)+5·\b(\F(3;4))) =

WikipediaDiese Formeln sehen gegenüber EQ-Formeln wesentlich punkvoller aus. Der Code ist länger und ist vollständig mit der Tastatur eingebbar. Griechische Buchstaben werden durch lange Zeichenketten dargestellt. Hoch und Tiefstellen geht mit ^ und _.z.B. :<math> \sqrt{\frac{1}{2}+5\cdot \left(\frac{3}{4}\right)}</math>

Die FormelmakrosDer elementare Formeltyp lässt sich am schnellsten eingeben und benötigt kein Codewissen. Genau hier setzen die Makros an.Es gibt 6 Funxionen, die das Formellevel herauf setzen oder senken.

WikipediaRibosom Reversetranslatase

EQ-FeldRNA-Polymerase Reversetranskriptase

ChickDNA-Polymerase DNAse

Elementar

Page 141: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 141

Diese werden 2 Prozeduren geeint. Die eine erhöht das Level und die andere senkt es.1. KKTformelumwandler wandelt nach oben.2. KKTfurmelumwandler wandelt nach unten.

Beiden Prozeduren sollte ein Tastenkürzel zugewiesen werden. Die Makros unterstützen Brüche, Wurzeln, Klammern und Potenzen. Nicht enthalten sind Integrale, Überschreiben, Überstreichen, Semikolon, Backslash und ein nachfolgendes Mal oder Bruchstrich nach einem Bruchstrich. Damit werden 95% aller Formeln in Statiken erfasst.So gibt man eine elementare Formel ein, drückt auf die Taste und schon hat man eine besser aussehende Formel.

In Word gibt es weiterhin ein Berechnungsfeld. Dazu drückt man Strg F9 und beginnt dieses nicht mit EQ sondern mit =. Mit Shift F9 klappt man das Feld auf und zu. Aber zuerst muss man F9 drücken, um es zu aktualisieren, weil sonst nichts angezeigt wird. Mit F9 rechnet Word aus, was in dem Feld drin steht. Z.B. 2+5= 7Das Makro Ausrechnen benutzt 3 der 6 Funktionen, um das Formellevel aus Elementar zu senken. Anschließend wird ein = davor gesetzt und in ein Berechnungsfeld umgewandelt. Auf diese Weise lässt sich auch ausrechnen, was man in den Formeln geschrieben hat. Der Taschenrechner wird erspart. Dem Makro lässt sich ein Tastenkürzel zuweisen.Bei dem anderen Makro vAusrechnen wird das Ergebnis erstellt und die Ausgangsformel links daneben hin kopiert und bis zu 2 mal hochgewandelt. Zwischen Formel und Ergebnis wird ein = und ein Tabstopp eingetippt. Soll anstelle des Tabstopps ein Leerzeichen hin, so ist folgende Codezeile im Makro Sub vausrechnen()Selection.TypeText (Formel) & "=" & Chr(9)

gegen diese aus zu tauschen.Selection.TypeText (Formel) & "=" & Chr(32)

Es gibt 3 Möglichkeiten, wie der umzuwandelnde Teil markiert werden kann.1. Der umzuwandelnde Teil wird mit der Maus markiert und das Makro ausgeführt. Das Makro

wandelt den markierten Text um.fu= (L·f+U·fd)/(L+U)Diese Variante ist am einleuchtesten.

2. Das letzte Zeichen wurde eingetippt und rechts daneben blinkt der Cursor. Das Makro wird gestartet. Das Makro markiert alle Zeichen links davon, bis es auf das linke Zeilenende, ein Tab oder ein = trifft. Die Formel wird umgewandelt.fu= (L·f+U·fd)/(L+U)fu= (L·f+U·fd)/(L+U)Diese Variante eignet sich gut, wenn man Formeln hintereinander weg schreibt.

3. Der Cursor blinkt mitten in der Zeile und man startet das Makro. Alles rechts davon wird vom Makro markiert.fu= (L·f+U·fd)/(L+U)fu= (L·f+U·fd)/(L+U)

ZusammenfassungKKTformelumwandler wandelt nach oben.(5,25+7)^0,5 (5,25+7)0,5

KKTfurmelumwandler wandelt nach unten.

Page 142: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 142

(5,25+7)0,5 (5,25+7)^0,5

Ausrechnen rechnet die Formel aus3,5

vAusrechnen rechnet die Formel aus und schreibt das Ergebnis daneben hin = 3,5

BeispieleBerechnen

D= = 0,29geD = = 0,0 (Die Nachkommastellen müssen manuell nachbearbeitet werden)s = = = 5,78ges= = =

4,29gL neu = = 93,8 LK= fa·La·Aa·a² +fe·Le·Ae·e²+ a·e·Le·AaK= 0,5·0·0,8·117²+ 0,85·20·7·6²+ 117·6·20·0,8= 0,0+ 4284+ 11232K= 0+ 4284+ 11232= 15516 Mal

FormelnU= N= f=K/(A·N²)= fu= gLd= K= fa·La·Aa·a² +fe·Le·Ae·e²+ e·Le·Aa·a

HerleitenK‘(j)= 0+ 0 -e·d·Lc/c+ Ac·h + e·W·h/c -2·e·d·j·h/c K‘(j)=00= -e·d·Lc/c+ Ac·h + e·W·h/c -2·e·d·j·h/c ·c/e0= -d·Lc+ Ac·h·c/e + W·h -2·d·j·h /h0= -d·Lc/h+ Ac·c/e + W -2·d·j +2·d·j2·d·j= -d·Lc/h+ Ac·c/e + W Sortieren2·d·j= W-d·Lc/h+ Ac·c/e /(2·d)j=

verbesserte EQ-FelddarstellungDer Formelumwandler passt die Darstellung der Formeln in EQ-Feldern an. Steht ein Quadrat hinter einem eingeklammerten Bruch, so würde dies standardmäßig so aussehen:

X2= Der Formelumwandler ersetzt ² durch eine höher gesetzte 2.

X2=

Besteht eine Formel aus sehr vielen Summanden, so werden diese in einer übersichtlichen Summe gesammelt.

K/A= =

Page 143: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 143

Das kann der Formelumwandler nichtsin(30)= !Syntaxfehler, 30

Ausrechnen ist nur dort möglich, wo Word auch rechnen kann. Word versteht kein Sinus und Logarithmus, aber Max, Min und Int.

10·Int(3,4)= 30

Mit dem Formelumwandler können keine komplexen Formeln, die über die Grundrechenarten hinausgehen, erstellt werden. Dies betrifft Matrizen, Integrale und übereinanderliegende Zeichen.

K = = Array=F=

Diese Formeln können leider nur manuell mit sehr großem Aufwand eingegeben werden. Verwendet man EQ-Felder und den Formeleditor, dann passt die Schrift nicht. Mit Strg+F9 kann man sich den Code des Feldes anschauen. Dies sieht dann so aus (Ohne EQ-Feld):

K = { EQ \I(0;L;gA(L)·dL) }= { EQ \I\su(0;N;tK) }Array= { EQ \b\bc\[(\A(1;2;3) \A(4;5;6) \A(7;8;9)) }F= { EQ \F(a\o(1;²);b\o(2;²)) }

fu=Soll der Bruch 1/N nebeneinander stehen, so muss dies manuell geschehen. Außerdem werden alle Faktoren in den Nenner geschrieben.

fu=

e= Sind die Formeln groß, sinkt die Wahrscheinlichkeit, dass sie richtig umgewandelt werden. In diesem Fall kommt alles in den Nenner, was mit einem Mal verbunden ist. So würde diese Formel mit dem Makro aussehen:

e= Es kann vorkommen, dass die Formel auch gar nicht funxioniert.

e=

In einigen Fällen kann die Formel repariert werden, indem sie mit Shift F9 geöffnet und der Absatz entfernt wird.

Der Formelumwandler wurde nicht dafür entwickelt, dass nach einem Bruchstrich ein Mal oder Bruchstrich kommt.

4*4/4/4= = 1Deshalb sollte man die Formel so schreiben

4*4/(4*4)= = 1

LizenzenMein Name Simon Pie sollte bei Benutzung irgendwo erwähnt werden. Er wird normalerweise in die AutocadWMF hineingeschrieben.

Dieses Dokument unterliegt der Creative Commons Lizenz cc-by-sa

Free Software

Page 144: Web viewZIParchive, wie docx oder xlsx, ... ein alternatives Programm anstelle von Word z.B. Latex. Einige professionelle Lösungen haben den Nachteil,

WoTWMFPowerWMFeinfügen3.0 Simon Pie

Simo nP ie - P owerW MFeinfügen2.3Plattenbeulen; Kampfkraft th eorieCreat ive Co mmons cc-by -sa cc-by-sa Seite 144

und die zugehörigen Programme PowerWMF und Formelumwandler unterliegt der GNU GPLv3.

BildnachweiseFotos: Ausm InternetEMF-Grafiken: selbst gemaltWMF-Grafiken: selbst geschrieben mit WMFzerlegerWMF-Grafiken: selbst gezeichnet, PowerWMF und mit WMFzerleger poliert