Microsoft Visio 2007-Programmierung



Ähnliche Dokumente
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Zur drittletzten Zeile scrollen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Anleitung über den Umgang mit Schildern

xcall White Paper Wählen-Buttons in Excel

Produktschulung WinDachJournal

Excel Auswertungen in XAuftrag / XFibu

Erstellen der Barcode-Etiketten:

Mediator 9 - Lernprogramm

VBA mit Excel Grundlagen und Profiwissen

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Arbeiten mit UMLed und Delphi

Installation OMNIKEY 3121 USB

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Maßlinien und Beschriftungen

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Professionelle Seminare im Bereich MS-Office

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Animationen erstellen

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Was ist neu? In diesem Kapitel: Die Oberfläche 24 Vorlagen, Schablonen und Shapes 25 Neue Arbeitstechniken 27

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Fisch schwimmt gegen eine radioaktive Tonne.

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

esms - sms senden & empfangen mit Outlook

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

Satzhilfen Publisher Seite Einrichten

Microsoft Access 2010 Navigationsformular (Musterlösung)

Anleitung zur Verwendung der VVW-Word-Vorlagen

Text-Zahlen-Formatieren

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Anleitungen TYPO 3 Eingaben tätigen

Teiltransparente Bilder

Erstellen von x-y-diagrammen in OpenOffice.calc

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Windows Vista Security

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

Aufklappelemente anlegen

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Simulation LIF5000. Abbildung 1

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

A Lösungen zu Einführungsaufgaben zu QueueTraffic

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

Arbeiten mit dem Geometrieprogramm GeoGebra

Plotten von Linien ( nach Jack Bresenham, 1962 )

Anwendungsbeispiele Buchhaltung

Anleitung, WebRecherche

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

AutoTexte und AutoKorrektur unter Outlook verwenden

Funktionsbeschreibung Website-Generator

Anzeige von eingescannten Rechnungen

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung zur Erstellung einer Gefährdungsbeurteilung

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Symbolbearbeitung mit EPLAN 5.60/5.70 DIC_***D.SYM

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

QTrade GmbH Landshuter Allee München Seite 1

08. übung. Illustrator. medienwerkstatt // seite 1

Dokumentation zur Versendung der Statistik Daten

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

4.1 Wie bediene ich das Webportal?

Verfasser: M. Krokowski, R. Dietrich Einzelteilzeichnung CATIA-Praktikum. Ableitung einer. Einzelteilzeichnung. mit CATIA P2 V5 R11

SICHERN DER FAVORITEN

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Ein Buch entsteht. Ein langer Weg

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Grundlagen Word Eigene Symbolleisten. Eigene Symbolleisten in Word erstellen

I Serverkalender in Thunderbird einrichten

ANWENDUNGSHINWEISE ZU SYMBOLSTIX

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Tutorial: Gnumeric installieren und Jahres-Kostenübersicht erstellen mit Diagramm

Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access

Excel Funktionen durch eigene Funktionen erweitern.

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Import und Export von Übergängern

Adobe Encore Einfaches Erstellen einer DVD

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

AutoCAD Dienstprogramm zur Lizenzübertragung

Graphic Coding. Klausur. 9. Februar Kurs A

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Wie halte ich Ordnung auf meiner Festplatte?

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Wie Sie mit Mastern arbeiten

Anleitung. Verschieben des alten -Postfachs (z.b. unter Thunderbird) in den neuen Open Xchange-Account

Visual Basic Express erstes Projekt anlegen

Medea3 Print-Client (m3_print)

Um die Installation zu starten, klicken Sie auf den Downloadlink in Ihrer (Zugangsdaten für Ihre Bestellung vom...)

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

2. Im Admin Bereich drücken Sie bitte auf den Button Mediathek unter der Rubrik Erweiterungen.

Handbuch für Redakteure

Transkript:

René Martin Microsoft Visio 2007-Programmierung ISBN-10: 3-446-41084-8 ISBN-13: 978-3-446-41084-8 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-41084-8 sowie im Buchhandel

8 8 Bewegung in Visio Sicherlich ist Visio nicht das beste Programm, um Bewegung im Sinne einer Animation oder eines Computerspiels zu erzeugen. Wenn es Ihnen um schnelle Abläufe geht, um frei definierte Pfade, um Bewegung im Internet, dann sind Programme wie Flash oder andere sicherlich besser geeignet. Um einen zentralen Nachteil von Visio zu benennen: Die VBA- Methode baut den gesamten Bildschirm auf. Es ist in Visio leider nicht möglich, nur einen Teil des Bildschirms neu zu zeichnen. Jedoch: Um Änderungen von Zuständen in technischen oder naturwissenschaftlichen Zeichnungen zu simulieren, tut Visio gute Dienste. 8.1 Autorennen An einem kleinen Beispiel soll der Aufbau eines Programms erläutert werden. Es geht dabei um ein Shape, das auf dem Zeichenblatt verschoben wird. Mithilfe der Vorlage Wegbeschreibung 3D wird eine Straße gezeichnet. Dazu wird das Straßen-Shape auf ein Zeichenblatt platziert. Mit gedrückter [STRG]-Taste wird es verschoben und dupliziert. Nun kann dieser Befehl wiederholt werden, sodass eine Straße entsteht. Auf der Straße wird ein Auto bereitgestellt. Im Menü FORMAT OBJEKTDATEN wird der Name Auto1 festgelegt. Seine Lage wird über das Größe- und Position-Fenster bestimmt: Es befindet sich bei (10 mm / 240 mm). Im Code-Editor wird ein neues Modul angelegt dort wird eine Prozedur erzeugt, mit der auf das Shape zugegriffen wird: Sub Fahrt() Dim pagseite As Page Dim shpauto1 As Shape Set pagseite = Application.ActivePage Set shpauto1 = pagseite.shapes("auto1") 501

8 Bewegung in Visio Abbildung 8.1 Eine Straße mit Auto Um es zum Fahren zu bringen, müssen die beiden Koordinaten PinX und PinY verändert werden. Da ein Straßen-Shape eine Breite von 20 mm und eine Höhe von 15 mm besitzt, beträgt die Bewegung nach rechts und unten ein Verhältnis 4 : 3. Also könnte gestartet werden: Sub Fahrt() Dim pagseite As Page Dim shpauto1 As Shape Dim i As Integer Set pagseite = Application.ActivePage Set shpauto1 = pagseite.shapes("auto1") For i = 0 To 100 shpauto1.cells("pinx").result("mm") = 2 * i + 10 shpauto1.cells("piny").result("mm") = 240 - i 502

8.1 Autorennen Next Der Befehl ist nötig, damit der Bildschirm sich erneut aufbaut. Wird er weggelassen, so wird zwar das Makro ausgeführt, aber es ist nichts sichtbar. Damit das Auto am Ende wieder zum Ausgangspunkt zurückkehrt, wird es auf die Startposition gesetzt: shpauto1.cells("pinx").result("mm") = 10 shpauto1.cells("pinyy").result("mm") = 240 Wird die Prozedur aus VBA gestartet, so können Sie leider nichts sehen. Deshalb muss das Makro entweder aus Visio über EXTRAS MAKRO BASRENNEN FAHRT oder über EXTRAS MAKROS MAKROS aufgerufen werden. Oder Sie binden es an eine Schaltfläche oder an ein Shape. Neben die Straße wird ein Baum-Shape platziert. Damit das Makro per Doppelklick startet, muss die Datei gespeichert werden und sollte das Modul einen vernünftigen Namen erhalten. Dann kann im Menü FORMAT VERHALTEN DOPPELKLICKEN das Makro an das entsprechende Shape gebunden werden. Dies ist wichtig, denn wenn die Datei nicht gespeichert ist, dann lautet die Prozedur beispielsweise: AutoRennen.basRennen.Fahrt Ein Speichern der Datei oder ein Umbenennen des Moduls führt dazu, dass das Doppelklickverhalten nicht mehr funktioniert. Dann müsste erneut das korrekte Makro eingestellt werden. Deshalb ist es geschickter, zu Beginn die korrekten Namen zu vergeben. Das Beispiel soll noch um ein zweites Fahrzeug ( Auto2 ) erweitert werden, das von rechts oben nach links unten fährt. Der ganze Code sieht dann wie folgt aus: Sub Fahrt() Dim pagseite As Page Dim shpauto1 As Shape Dim shpauto2 As Shape Dim i As Integer Set pagseite = Application.ActivePage Set shpauto1 = pagseite.shapes("auto1") Set shpauto2 = pagseite.shapes("auto2") For i = 0 To 100 shpauto1.cells("pinx").result("mm") = 2 * i + 10 503

8 Bewegung in Visio shpauto1.cells("piny").result("mm") = 240 - i shpauto2.cells("pinx").result("mm") = 190-2 * i shpauto2.cells("piny").result("mm") = 230 - i Next shpauto1.cells("pinx").result("mm") = 10 shpauto1.cells("piny").result("mm") = 240 shpauto2.cells("pinx").result("mm") = 190 shpauto2.cells("piny").result("mm") = 230 End Sub Wenn Ihnen die Fahrt zu schnell ist, dann könnten Sie die Variable i von Typ Double deklarieren und die Schleife um eine kleinere Schrittweise erhöhen: Abbildung 8.2 Die beiden Autos rasen über die Straße (i = 45). 504

8.2 Der Viertaktmotor Dim i As Double... For i = 0 To 100 Step 0.4 Analog kann man das Auto entlang einer gekrümmten Linie verschieben: Abbildung 8.3 Das Auto folgt einer Kurve. 8.2 Der Viertaktmotor Auf einem neuen Zeichenblatt wird ein Objekt gezeichnet, das aus folgenden sechs Teilen besteht, wie Sie in Abbildung 8.4 sehen. Da die Kurbel immer unterhalb des Deckels liegt, werden im ShapeSheet der Kurbel folgende Werte eingetragen: Der LocPinX befindet sich immer in der Mitte: =GUARD(Width*0,5) Der Pin wird ans obere Ende platziert, also sitzt der LocPinY auf: =GUARD(Height) Die x-koordinate stimmt mit der des Deckels überein folglich lautet DrehbezX : =GUARD(Deckel!PinX) Und die y-koordinate liegt in einem bestimmten Abstand zum Deckel. Also könnte die Formel beispielsweise lauten: =GUARD(Deckel!PinY-7 mm.) 505

8 Bewegung in Visio Abbildung 8.4 Der konstruierte Viertaktmotor Damit wird gewährleistet, dass Bewegungen des Deckels auf die Kurbel übertragen werden. Nun kann die Programmierung beginnen. Hinter einer Befehlsschaltfläche liegt folgender Code: Option Explicit Private Sub cmdstart_click() Dim i As Integer, j As Integer For j = 1 To 2 For i = 0 To 90 ActivePage.Shapes("Deckel").Cells("PinY").Formula = _ "=" & Chr(34) & -i / 3 + 110 & " mm" & Chr(34) Next i 506

8.2 Der Viertaktmotor For i = 90 To 0 Step -1 ActivePage.Shapes("Deckel").Cells("PinY").Formula = _ "=" & Chr(34) & -i / 3 + 110 & "mm" & Chr(34) Next i Next j End Sub Die äußere Schleife wird zweimal ausgeführt, der Deckel dabei nach unten gesenkt und nach oben gehoben. Dies geschieht in der inneren Schleife, die von 0 bis 90 hoch- oder von 90 bis 0 heruntergezählt wird. Nun soll sich die Kurbel bewegen. Da die Kurbel nach links oder rechts bewegt wird, muss über eine Verzweigung abgefragt werden, in welche Richtung der Ausschlag geht. Die rechte Hälfte sieht dann wie folgt aus: For i = 0 To 90 ActivePage.Shapes("Deckel").Cells("PinY").Formula = _ "=" & Chr(34) & -i / 3 + 110 & " mm" & Chr(34) If i < 45 Then ActivePage.Shapes("Kurbel").Cells("Winkel").Formula = _ Else Next i "=" & Chr(34) & Sin(i * 2 * 3.14159 / 180) * 20 & _ " grad" & Chr(34) ActivePage.Shapes("Kurbel").Cells("Winkel").Formula = _ End If "=" & Chr(34) & Cos((i - 45) * 2 * 3.14159 / 180) * _ 20 & " grad" & Chr(34) Analog auf der anderen Seite: Dort wird der Winkel negativ genommen. Nun soll sich noch das Ventil Einlass in Phase 1 a nach unten bewegen, in Phase 1 b nach oben. Auch 507

8 Bewegung in Visio hier muss abgefragt werden, wo sich der Deckel, oder genauer die Zählervariable i, befindet. Der erste Teil sieht nun wie folgt aus: Private Sub cmdstart_click() Dim i As Integer Dim j As Integer Dim dblxeinbeginn As Double, dblybeginn As Double Dim dblxausbeginn As Double dblxeinbeginn = CDbl(Mid(ActivePage.Shapes("Einlass").Cells("PinX") _.Formula, 1, InStr(1, _ ActivePage.Shapes("Einlass").Cells("PinX").Formula, " "))) dblybeginn = CDbl(Mid(ActivePage.Shapes("Einlass").Cells("PinY") _.Formula, 1, InStr(1, _ ActivePage.Shapes("Einlass").Cells("PinY").Formula, " "))) dblxausbeginn = CDbl(Mid(ActivePage.Shapes("Auslass").Cells("PinX"). _ Formula, 1, InStr(1, _ ActivePage.Shapes("Auslass").Cells("PinX").Formula, " "))) For j = 1 To 2 For i = 0 To 90 ActivePage.Shapes("Deckel").Cells("PinY").Formula = _ "=" & Chr(34) & -i / 3 + 110 & " mm" & Chr(34) If i < 45 Then ActivePage.Shapes("Kurbel").Cells("Winkel") _.Formula = _ "=" & Chr(34) & Sin(i * 2 * 3.14159 / 180) * 20 _ & " grad" & Chr(34) If j = 1 Then 508

8.2 Der Viertaktmotor ActivePage.Shapes("Einlass").Cells("PinX") _.Formula = "=" & dblxeinbeginn - i / 10 & " mm" ActivePage.Shapes("Einlass").Cells _ ("PinY").Formula = "=" & dblybeginn - i / 5 & " mm" End If Else ActivePage.Shapes("Kurbel").Cells("Angle"). _ Formula = "=" & Chr(34) & Cos((i - 45) * _ 2 * 3.14159 / 180) * 20 & " grad" & Chr(34) If j = 1 Then ActivePage.Shapes("Einlass").Cells("PinX"). _ Formula = "=" & dblxeinbeginn - (90 - i) / 10 & " mm" ActivePage.Shapes("Einlass").Cells("PinY"). _ Formula = "=" & dblybeginn - (90 - i) / 5 & " mm" End If End If Next i Das Ergebnis kann sich sehen lassen: 509

8 Bewegung in Visio Abbildung 8.5 Ein Snapshot bei i = 39 Nun kann noch die Explosion dargestellt werden. Dazu wird ein weiteres Objekt ( Flamme ) eingefügt, das dreimal in die Farben Weiß, Gelb und Rot wechselt. If j = 1 Then For z = 0 To 3 With ActivePage.Shapes("Flamme") _.Cells("FillForegnd").Formula = "=5":.Formula = "=2":.Formula = "=1": End With Next End If 510

8.2 Der Viertaktmotor Abbildung 8.6 Die Explosion Und schließlich kann man noch die Phasen in einem Textfeld beschreiben: [...] For j = 1 To 2 If j = 1 Then ActivePage.Shapes("Beschreibung").Text = _ "Viertaktmotor Phase 1" & vblf & "Ansaugen" Else ActivePage.Shapes("Beschreibung").Text = _ "Viertaktmotor Phase 3" & vblf & "Arbeiten" End If For i = 0 To 90 [...] 511

8 Bewegung in Visio Abbildung 8.7 Eine Momentaufnahme des fertigen, laufenden Motors bei j = 1 und i = 58 8.3 Planetenumlaufbahn Werden mehrere Objekte auf dem Zeichenblatt bewegt, die zueinander in einer bestimmten Konstellation stehen (beispielsweise ein Text, der unabhängig vom Shape in einem bestimmten Abstand zu diesem stehen soll), dann kann dies ohne Programmierung im ShapeSheet des entsprechenden Shapes festgelegt werden. Das Objekt, auf das Bezug genommen wird, wird per Namen angesprochen, und durch ein Ausrufezeichen wird der Name der Zelle, auf die referiert wird, festgelegt, beispielsweise: =Erde!PinY-5 mm Damit der Anwender nicht versehentlich das Shape verschieben kann, kann die Funktion GUARD verwendet werden: =GUARD(Erde!PinY-5 mm) Mit ein wenig elementarer Algebra beziehungsweise Trigonometrie können nun leicht Positionen verändert werden, wie beispielsweise bei den Umlaufbahnen der Planeten. 512

8.4 Fazit Abbildung 8.8 Die Planetenumlaufbahnen können in Visio leicht simuliert werden. 8.4 Fazit Mit wenig Aufwand kann in Visio eine Zeichnung erstellt werden. Mit geringen VBA- Kenntnissen kann auf die Shapes zugegriffen werden. Sie können in ihrer Position und in ihrem Aussehen verändert werden. Parallel dazu können Texte platziert und ausgeblendet werden. Damit können leicht und schnell dynamische Verläufe aus den Bereichen Technik, Pneumatik und Hydraulik, Kybernetik, Naturwissenschaft, Astronomie... dargestellt werden. 513