Beruflich Dokumente
Kultur Dokumente
TeilIV:ErstelleneinesVBAProgrammDialogs
AndieserStellewollenwirIhnenineinerkleinenSeriedieverschiedenenMglichkeitender
MicroStationProgrammierungvorstellen.AnHandvonkleinenundeinfachenBeispielenwollen
wirgeradedem"Nichtprogrammierer"oderdemAnfngereinenverstndlichenEinblickindie
MglichkeitenderMicroStationProgrammierunggeben.
AnhanddesnachstehendenVBABeispielswerdenwirIhnendasErstelleneineseinfachenDialogs
erlutern,mitdemSiedieMicroStationElementesuchenundmodifizierenknnen.
Beispielaufgabe:
EssollenalleLinienundLinienzgedieaufeinerzuwhlendenEbeneliegenautomatisch
modifiziertwerden,wobeidieWahlderEbenebereinenDialogdurchgefhrtwerdensoll.
DielinearenElementesollennachAbschlussdesProgrammsfolgendeEigenschaftenbesitzen
Farbe=rot
Strichstrke=5
Strichart=3
AlleanderenElementesollennichtverndertwerden.
DieHauptaufgabeindiesemTeilbestehtinderErstellungdesDialogsundgeringen
ModifikationenimbereitsbekanntenQuellcode
VBAProjektManagerundIDE:
berdenVBAProjektManagerwirdeinneuesVBAProjekterstellt.
ffnenSieber"Extra/Makro/ProjektManager"denVBAProjektManager
berdienachstehendeSchaltflche"NeuesProjekt"erzeugenSieeinneuesVBAProjekt
GeomappingGmbH Seite1
SpeichernSiedasProjektunterdemNamen"Beispiel_Scanner_Dialog.mvba"ineinem
OrdnerIhrerWahl
berdieSchaltflche"VisualBasicEditor"gelangenSieindieVBA
EntwicklungsumgebungIDE(VisualBasicforApplicationsIntegratedDevelopment
Environment)
VordemeigentlichenStartsollteeinewichtigeEinstellungvorgenommenwerden,diedafrsorgt,
dassRegelnbezglichderVariablenverwendungbeiderErstellungdesCodeseingehaltenwerden.
berdasMen"Tools/Options"gelangenSieindennachstehendenDialog,indemSie
dieOption"RequireVariableDeclaration"bitteanhaken
DieOption"RequireVariableDeclaration"besagt,dassSievorderVerwendungeiner
Variablendiesezunchstdefinierenmssen.
GeomappingGmbH Seite2
VBAProgramm:
JetztsinddiewichtigstenEinstellungengemachtundeskannendlichlosgehen.ImlinkenTeilder
IDE(imProjektexplorer)befindetsichdasebenneuangelegteProjektmitdemNamen
"Beispiel_Scanner_Dialog".DurcheinenDoppelklickaufdasProjektbzw.denProjektnamen
ffnetsichder"Projektbaum",indemsichstandardmigeinModulmitdemNamen"Module1"
befindet.
AufderrechtenSeitederIDEbefindetsichdasTextbzw.ProgrammcodeFenster.
TragenSiehierbittedennachstehendenCode("PublicSubStart")einundbesttigenSie
IhreEingabemiteinem<Enter>
DieVBAEnginevervollstndigtautomatischIhreEingabe,siehedasKlammerzeichen"()"
unddasEndederFunktion"EndSub".
AndieserStellehabenwirindenvergangenbungendenProgrammcodeeingearbeitet,
umdenwirunsjetztspterkmmernwerden.
GeomappingGmbH Seite3
Programmdialogerstellen:
AndieserStellewollenwirunsumdenDialogkmmern,diesersolldieverwendetenEbenender
ZeichnungsdateiineinerAuswahllistezurVerfgungstellen.bereineSchaltflchesollendie
MicrostationElementeLinienundLinienzuggesuchtundmodifiziertwerden.
DenWegzurErstellungeinesProgrammdialogsknntemanwiefolgtskizzieren
1. ErzeugeneinesFormulars
2. AuswahlderentsprechendenKomponentenperDragandDrop
3. EinstellenderKomponenteneigenschaften
4. WiederholeSchritt2und3
berdierechteMaustasteimFensterdesProjektexplorersoderberdieSchaltflche
"InsertUserForm"wirdeinneuesFormularerstellt.
DasnachstehendeFormularmitdemNamen"UserForm1"erscheint,welcheswirspter
inderHheundBreiteanpassenwerden.
InderlinkenBildschirmhlftewerdendieEigenschaftendesgewhltenObjektsineinem
PropertiesoderEigenschaftsfensterdargestellt.
BeachtenSiedenNamendesFormulars"UserForm1",denwirsobelassen.
VerndernSiedieEigenschaft"Caption"desFormularsin"Elementeumfrben",es
handeltsichhierbeiumdenTiteldesFormulars.
GeomappingGmbH Seite4
BeidenFormularengibtesdiewichtigeEigenschaft"ShowModal",diewiraufFALSE
setzen,umparallelzumgeffnetenDialognochandereTtigkeitenmachenzuknnen.
MitdemFormulargehtautomatischdieToolboxoderWerkzeugleisteauf,inder
verschiedeneKomponenten(Rahmen,Textlabels,Schaltflchen,Auswahlboxenetc.)zur
weiterenVerwendungstehen.Diesewerdenper"DragandDrop"aufdasFormular
gezogen.
ZiehenSiedieUmrandungskomponente"Frame"perDragandDropaufdie
Formularflche
VerndernSiedieEigenschaft"Caption=Selektionskriterium"
DienderungderEigenschaftwirdaufdemFormularsofortsichtbar
GeomappingGmbH Seite5
ZiehenSiedieTextkomponente"Label"perDragandDropaufdieFormularflche
VerndernSiedieEigenschaft"Caption=Ebene:"
ZiehenSiedieListenauswahlkomponente"ComboBox"perDragandDropaufdie
Formularflche
VerndernSiedieEigenschaft"Name=cboEbene"
VerndernSiedieEigenschaft"Style=fmStyleDropDownList"
PassenSiedieGrendereinzelnenKomponentensoan,dasssicheinharmonisches
Gesamtbildergibt
GeomappingGmbH Seite6
ZuguterLetztfehltnocheineSchaltflche,diedeneigentlichenBearbeitungsprozess
ausfhrt.
ZiehenSiedazudieSchaltflchenkomponente"CommandButton"perDragandDropauf
dieFormularflche
VerndernSiedieEigenschaft"Name=cmdStart"
VerndernSiedieEigenschaft"Caption=Start"
PassenSiedieGrendereinzelnenKomponentensoan,dasssicheinharmonisches
Gesamtbildergibt
DasDesigndesProgrammdialogsistfertig,jetztkmmernwirunsumdenQuellcode,dazu
bertragenSiebittedennachstehendenCode.
AllgemeineAnmerkungenzurbesserenLesbarkeitdesQuellcodeswerdendurcheinHochkomma
eingeleitet.
Programmcode:
ImVergleichzudenvergangenenbungenwollenwirzunchstdenProgrammdialogladenunderst
nachDrckenderSchaltflche"Start"dasProgrammausfhren.Dazubentigenwirzunchsteinen
Ladeprozess
GeomappingGmbH Seite7
DurcheinenDoppelklickaufdasModul1imProjektexplorererscheintaufderrechten
BildschirmseitederQuellcodeeditor,indemSiebittedieFunktion"Start()"wie
nachstehenddefinieren.
berdasKommando"UserForm1.show"wirdunserobenerstellterProgrammdialog
geladen
SpeichernSiebitteIhreEingaben
berdieSchaltflche"RunMacro"knnenSieIhrProgrammtesten
HabenSieallesrichtiggemacht,sollteIhrProgrammdialoginderMicroStation
Oberflcheerscheinen
NebendemLadendesProgrammdialogsmussdasFormularinitialisiertunddieCombobox
automatischgeflltwerden.WeiterhinmussdieeigentlicheBearbeitungsroutinehinterdie
Schaltflche"Start"gelegtwerden.
ZurInitialisierungdesProgrammdialogswhlenSiebittedieDarstellungdes
Quellcodeeditors
ImQuellcodefensterwhlenSiebittedasObjekt"UserForm"aus
GeomappingGmbH Seite8
WhlenSierechtsdanebendieFunktion"Initialize"aus
UmdieEbenenauswahllisteautomatischzufllen,vervollstndigenSiedieFunktion
"UserForm_Initialize()"wienachstehenddargestellt
DamitwirdbeimLadendesDialogszunchstdieComboBox"cboEbene"geleertund
anschlieendmitdeninMicrostationzurVerfgungstehendenEbenengefllt.Weiterhin
wirddieaktiveEbeneinderListenauswahldargestellt.
UmdieeigentlicheBearbeitungsroutineberdieSchaltflche"Start"ausfhrenzuknnen,mussder
nachstehendeCodeindieFunktion"cmdStart_Click()"eingearbeitetwerden.Dabeiwerdenwirnur
aufdieNeuerungenbzw.nderungendesCodesnhereingehen,denndereigentlicheQuellcodezur
BearbeitungderMicroStationElementeistindenvorangegangenenbungenbereitsnhererlutert
worden.
Variablendefinition
GeomappingGmbH Seite9
o "oScan"stelltdieSuchmaskemitdenspternochzudefinierenden
Elementkriteriendar
o "ee"reprsentierteineElementaufzhlungslistedergefundenenElemente
("Trefferliste")
AndieserStellewirdeineneueSuchmaskedefiniert.MitHilfederSuchmaskewerdenspter
dierelevantenMicroStationElementegesuchtundgefunden.
MitdenBefehlen"oScan.ExcludeAllLevels"und"oScan.ExcludeAllTypes"werdenalle
EbenenundElementtypenausderSuchmaskeentfernt
AndieserStellewirdsichergestellt,dassinderEbenendefinitionderDGNZeichnung
tatschlichmindestenseineEbeneexistiert,wobeidieaktivebzw.dieimDialog
ausgewhlteEbenealsSuchkriteriumgenommenwird.
AnschlieendmussdieSuchmaskemitentsprechendenKriterienversehenwerden.
DasersteKriteriumistdieEinschrnkungderSucheaufdieausgewhlteEbene
EinweiteresKriteriumistdieEinschrnkungderSuchmaskeaufdieElementtypenLinie
undLinienzug
NachderDefinitionderKriterienmussdieeigentlicheElementsuche(das"Scannen")im
aktivenModellausgefhrtwerden
DasErgebnisderSucheisteineListevonElementen("Trefferliste"),dieanschlieend
ElementfrElementabgearbeitetwerdenmuss
GeomappingGmbH Seite10
bereineSchleife("DoWhile/Loop"),diesolangedurchlaufenwird,bisesinderTrefferliste
keineweiterenElementemehrgibt,wirdjedesElement,welchesdenKriteriender
Suchmaskeentspricht,bearbeitet.
SetzenderElementfarbeauf3
SetzenderLinienstrkeauf5
BeimSetzenderLinienartisteineSicherheitsabfragenotwendig,diesicherstellt,
dassesdiezusetzendeLinienarttatschlichgibt
ZuguterLetztwirddasmodifizierteMicroStationElementgespeichertundindie
DGNZeichnungzurckgeschrieben
GeomappingGmbH Seite11
Programmaufruf:
berdenMeneintrag"Debug/CompileBeispiel_Scanner_Dialog"wirdderQuellcode
formalaufRichtigkeitgeprft.
SollteeinFehlerimProgrammcodevorliegen,wirddieserbereinenDialogangezeigt
undmussbereinigtwerden
berdieSchaltflche"RunSub/UserForm"kanndasProgrammdirektausgefhrtwerden
alternativkanndasMVBAProgrammberdasMicroStationKeyInoderEingabefenster
aufgerufenundgestartetwerden
befindetsichdasMVBAindemMicroStationSuchpfadundverwendenSienichtmehrere
VBAsmiteinerFunktion"Start",reichtdernachstehendeProgrammaufrufinderRegel
aus
HabenSieallesrichtiggemacht,wirddieDGNZeichnungautomatischdurchsuchtund
alleLinienundLinienzge,dieaufderEbene"Ebene9"liegen,werdendick,rotund
gestrichelterscheinen.
Vorher Nachher
GeomappingGmbH Seite12