Sie sind auf Seite 1von 12

EigeneProgrammeinMicroStationV8ierstellen

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

Das könnte Ihnen auch gefallen