Afstudeeropdracht AutoCAD system manager (VBA) HBO traject 2001-2002 Naam: Begeleider: T. Kraus Ir. R. Boeklagen Inhoudsopgave: 1 Inleiding: ........................................................................................................................... 4 1.1 1.2 1.3 2 Tekenkamer bij het MARIN .................................................................................. 4 Mijn taken bij het MARIN ..................................................................................... 6 Gekozen opdracht................................................................................................... 7 Beschrijving van de situatie............................................................................................. 8 2.1 Tekensystemen ....................................................................................................... 8 3 Doel van de toepassing ..................................................................................................... 9 4 Keuze en structuur van de database............................................................................... 9 4.1 4.2 4.3 4.4 4.5 5 Ontwerp van de database van het tekeningenbeheersysteem .................................... 12 5.1 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.2 6 Database systeem ................................................................................................... 9 Relatie cliënt/server in de database ...................................................................... 10 Het cliënt/server model ........................................................................................ 10 Het logische model van een record ...................................................................... 11 Inzicht in de automatisering ................................................................................. 11 Toepassen van Microsoft Access voor het maken van de database ..................... 13 De tabel ‘TblProject’........................................................................................ 13 De tabel ‘TblModel’......................................................................................... 14 De tabel ‘TblDrawing’..................................................................................... 14 De tabel ‘TblTitel’............................................................................................ 14 De tabel ‘TblType’........................................................................................... 14 De tabellen ‘TblDrawingApp’, ‘TblApp’, ‘TblNummer’, ‘TblLeter’............. 14 Inzicht in verbindingen en SQL query’s .............................................................. 14 De werking van het programma ................................................................................... 15 6.1 De installatie......................................................................................................... 15 6.2 Het programma..................................................................................................... 15 6.2.1 De ActiveX Data Object (ADO) ...................................................................... 15 6.2.2 Opstart procedure van het programma ............................................................. 16 6.2.3 Inschrijven van informaties .............................................................................. 16 6.2.4 Weergeven van informaties.............................................................................. 16 7 Programma interface ..................................................................................................... 17 7.1 7.2 7.3 7.4 7.5 Hoofd scherm van het programma ....................................................................... 17 Menustructuur van het programma ...................................................................... 17 Toevoegen van een nieuw project ........................................................................ 20 Toevoegen van een nieuw model in een project .................................................. 20 Toevoegen van een nieuw tekening ..................................................................... 21 Afstudeer opdracht AutoCAD system manager 2 7.6 7.7 7.8 7.9 7.10 7.11 Wijzigen van een ingeschreven tekeningen ......................................................... 22 Printen van een project ......................................................................................... 22 Wijzigen van een project...................................................................................... 23 Wijzigen van een model ....................................................................................... 23 Toegangsniveau instellen ..................................................................................... 23 Titel van de tekening koppelen aan type van de tekening.................................... 24 8 Conclusie ......................................................................................................................... 25 9 Nawoord .......................................................................................................................... 25 9.1 10 Reactie van de CAD engineer’s ........................................................................... 25 Bijlage.............................................................................................................................. 27 10.1 10.2 10.3 10.4 Toegang tot de server database ............................................................................ 27 Opstart procedure codes ....................................................................................... 28 Uitbreiding van optionbuttons met nieuwe types van de tekeningen................... 29 Functie PaintPreview............................................................................................ 30 Afstudeer opdracht AutoCAD system manager 3 1 Inleiding: Ik ben werkzaam als CAD Engineer bij het MARIN (MAritieme Research Institute Netherlands). MARIN is een research instituut ten behoeve van de maritieme sector wereldwijd en beschikt over tien test- en trainingsfaciliteiten, waar onderzoek wordt gedaan naar gedrag van schepen en offshore constructies op modelschaal en met behulp van computer simulatie. Er wordt gekeken naar de prestatie van het schip in vlakwater (zonder golven, stroom en wind ), in zeegang (met golven, stroom en wind ) en het manoeuvreergedrag. Aan het begin van hele proces adviseert het MARIN (waar nodig) bij het verbeteren van het hydrodynamisch ontwerp door middel van Computated Fluid Dynamics (CFD) berekeningen. Dit is voor de eigenaar interessant, omdat hiermee het motorvermogen van het schip kan worden geminimaliseerd bij dezelfde snelheid en er dus minder brandstof wordt verbruikt. Eén van de testfaciliteiten is de vlakwatertank, waar meestal weerstand- en voortstuwingsproeven plaatsvinden. Bij een weerstandsproef wordt het model met verschillende snelheden door het water getrokken; bij een voortstuwingsproef stuwt het model zichzelf voort met zijn eigen schroef en wordt het dus niet gesleept. Op basis van deze twee proeven wordt de snelheid-vermogens relatie voor het schip op ware grootte berekend. Naast onderzoek in vlakwater wordt gekeken naar de prestaties van een schip op zee. De eigenaar van een schip laat deze bij het MARIN beproeven omdat hij wil weten wanneer het varen in golven niet meer acceptabel zijn. En bij offshore constructie tot welke golfhoogte en windkracht bepaalde operaties nog uitgevoerd kunnen worden. Nadat via modeltesten diverse metingen zijn gedaan, moeten de resultaten omgezet worden in concrete gegevens waarmee men verder aan de slag kan. Gemeten modelbewegingen en de diversen meetwaarden worden via verschillende computerprogramma’s verder verwerkt en omgezet in scheepswaarden. Statistische waarden, diagrammen, histogrammen, foto’s, figuren en beschrijvende tekst vormen uiteindelijk het rapport voor de klant. Met deze analyse en rapportage wordt een project afgerond. 1.1 Tekenkamer bij het MARIN De tekenkamer is bij het hele proces nauw betrokken. Het hydrodynamisch ontwerp, met andere woorden de vorm van het schip, wordt door de CAD engineer digitaal vastgelegd. De basis tekening ‘Lijnenplan’wordt door de werf aangeleverd. Op een lijnenplan staan de 3 doorsneden van het schip in x,y,z : • X richting dwarsdoorsnede (spantenraam) • Y richting langsdoorsnede verticaal (verticalen) • Z richting langsdoorsnede horizontaal (waterlijnen) Dit lijnenplan wordt als drie dimensionale vorm in de computer ingelezen en wordt m.b.v. het computer programma RAPID welke door het MARIN ontwikkeld is geoptimaliseerd. Hierna wordt er een freesfile gegenereerd die gebruikt wordt om het model m.b.v. 5 assige freesmachine te frezen. Afstudeer opdracht AutoCAD system manager 4 Na het traject van hydrodynamische optimalisatie wordt door een Autocad CAD engineer begonnen met het tekenen van de aanhangsels, zoals roer en schroefassen met asdragers, vinnen etc. De scheepsvorm uit het GMS programma wordt hierbij gebruikt als basis. Dit programma kan een DXF of IGES formaat bestand genereren voor gebruik binnen Autocad. GMS (Geometrische Modellering van Schepen) is een door het MARIN ontwikkeld interactief systeem om de geometrie van een schip vast te leggen in een mathematische vorm. GMS (Afbeelding 1.1.1) is gebaseerd op de B-splines beschrijving van lijnen en oppervlakken en is toegepast naar de eigen behoefte op het gebied van geometrische modellering. Afbeelding 1.1.1 Afstudeer opdracht AutoCAD system manager 5 1.2 Mijn taken bij het MARIN • Eén van de belangrijkste taken voor mij op de tekenkamer is het tekenen van drie dimensionale modellen van: o Schroeven – de voortstuwer van een schip. Een schroef bestaat uit een naaf en drie tot zeven schroefbladen; deze schroefbladen bestaan uit complexe dubbel gekromde oppervlakken. Zie afbeelding 1.2.1. o Pods – een soort buitenboord motor ( elektromotor ). o Roeren - om het schip op koers te houden. Zie afbeelding 1.2.2 o Asdragers – ondersteuning van de schroefas o Vinnen – zorgen voor stabiliteit van het schip Afbeelding 1.2.2 Afbeelding 1.2.1 Gezien de vorm van deze onderdelen worden ze vaak met de Autosurf module in Mechanical Desktop getekend. • Maken van CNC files van drie dimensionale onderdelen voor de productie afdeling met het programma HyperMill van OpenMind (zie afbeelding 1.2.3.). • Tekenen van deze onderdelen in twee dimensionale samenstelling tekeningen t.b.v. de tanktest opstelling. • Tekenen van testopstellingen t.b.v rapportage aan de klant. • Twee dimensionale tekeningen maken voor de instrumentmakerij (handbewerking). Afstudeer opdracht AutoCAD system manager 6 • Verbeteren en automatiseren van Autocad tekenen m.b.v. VBA (Visual Basic for Applications) en VB (Visual Basic). Afbeelding 1.2.4. Afbeelding 1.2.3 1.3 Gekozen opdracht Het MARIN wil steeds beter en sneller zijn opdrachten uitvoeren, de tijd de tussen laatste proef in de tank en het opleveren van een eindrapport aan de klant moet terug gebracht worden van gemiddeld half jaar naar 6 weken. Dit betekent voor het MARIN grote veranderingen in de hele bedrijfsstructuur. Bewaren en beheren van informatie speelt een belangrijke rol. Er is besloten het systeem van rapportage te automatiseren en dit kan alleen met digitale informatie over de tekening en niet met een hand geschreven tekeningenboek. Maar ook omdat het gebruik van een netwerk er bij het MARIN steeds belangrijker begint te worden en men steeds meer behoefte heeft om op afstand informatie over tekeningen te kunnen opvragen, heb ik als opdracht gekozen het maken van een tekeningenbeheersysteem – tekeningen kennis bank. Afbeelding 1.2.5 Twee dimensionale tekening van een schroef Afstudeer opdracht AutoCAD system manager 7 2 Beschrijving van de situatie Bij het MARIN werken we met projectnummers. Binnen een projectnummer kan meer dan één model gemaakt worden. Deze modellen kunnen gebruikt worden bij meerdere projecten. Voor ieder model worden meerdere proefopstellingen getekend. Bijvoorbeeld met verschillende vormen van het roer, andere helling van de schroefas of een andere lengte/breedte positie van de pod. Er kunnen ook wijzigingen van het model voorkomen. Alle wijzigingen, proefopstellingen, ingekomen tekeningen (scheepsvorm of aanhangsels) en rapportfiguren van de proefopstellingen worden bijgeschreven in het bestaande fysieke tekeningenboek. Dit tekeningenbeheersysteem is gesorteerd op projectnummers. Iedere regel van het bestaande fysieke tekeningenboek bevat : • Nummer van de tekening • Nummer van het model • Naam van de ingekomen tekening • Beschrijving - bijvoorbeeld proefopstelling of wijziging omschrijving • Bestandsnaam – als het om een Autocad tekening gaat 2.1 Tekensystemen Bij de tekenkamers van het MARIN worden verschillende soorten tekeningen gemaakt t.b.v. model- en aanhangsel productie. Systemen waar tekeningen mee worden gemaakt: • Autocad software (Acad 2002 en Mcad 6) o 2D tekenen van b.v. asdragers, roeren, kimkielen, vinnen, boeg en hekbuizen o 3D tekenen van scheepsschroeven o 3D tekenen van roeren, vinnen t.b.v. CNC productie o 2D tekeningen van proefopstellingen t.b.v. eindrapportage • GMS – UNIX systeem o 3D Modelleren van scheepsromp met behulp van NURBS (Non-Uniform Rational B-Splines curves en surfaces) Aangezien bij het MARIN niet alleen met Autocad tekeningen worden gemaakt, maar ook met andere systemen, is het nodig dat de tekeningen niet alleen via Autocad ingeschreven worden maar met een stand alone applicatie. Deze applicatie – “MARIN Tekeningenbeheersysteem” heb ik gemaakt in de loop van 2001 in opdracht van het MARIN management. Afstudeer opdracht AutoCAD system manager 8 3 Doel van de toepassing • Koppeling met het MARIN MeetVerwerkings- en Rapportage (MVR) systeem, een semi-automatische methode voor het samenstellen en doorrekenen van numerieke ontwerp- en analyse modellen ten behoeve van het genereren van rapportdocument. • Versnellen van het rapportage proces • Bekijken van de Autocad tekeningen op een computer waar geen Autocad geïnstalleerd is m.b.v. Volo View programma van Autodesk. • Numeriek bewaren van tekeninginformatie. Tot een jaar geleden gebeurde dit alleen in met de hand geschreven tekeningenboeken ingedeeld op opdrachtnummer. • Met behulp van dit programma zal het zoeken naar een tekening met specifieke gegevens mogelijk zijn. • Belangrijk is dat een grote groep mensen binnen de organisatie toegang krijgt tot de opgeslagen kennis/tekeningen. 4 Keuze en structuur van de database Om een systeem en een structuur vast te leggen, heb ik in het begin een kleine werkgroep van 3 mensen samengesteld die uitgezocht heeft welke informatie bewaard zou moeten worden in de database en dat dit op een uniforme manier gebeurt. Dit om te zorgen dat we later zo min mogelijk aanpassingen aan het programma behoeven uit te voeren. 4.1 Database systeem De eerste belangrijke stap was het vastleggen van een database systeem. We hebben een aantal database systemen naast elkaar gelegd zoals FoxPro, SQL Server, XML, ORACLE, ACCESS en met de software afdeling uitgebreid gesproken over de werking van deze losstaande componenten. FoxPro lijkt hiervoor het beste database systeem te zijn, maar aanpassingen in de bestaande MARIN netwerk/software zijn op dit moment niet haalbaar. XML zou een goede optie zijn, zeker i.v.m. MARIN’S intranet, maar de toegangssnelheid ligt te laag. Met ORACLE hebben we onvoldoende ervaring. Dus ging het om SQL Server of Access. Aangezien vanuit Access eenvoudig kan worden overgestapt naar een SQL Server heb we voor Access gekozen. Er is vastgelegd wat voor informatie het MARIN wil bewaren, wat voor zoek opdrachten er beschikbaar moeten zijn. Er is besloten om een cliënt/serverstructuur toe te passen i.v.m. mogelijke beschadiging van het database bestand door de cliënt computer. De cliënt/server-structuur wordt uitgebreid toegelicht in paragraaf 4.2 t/m 4.5 Afstudeer opdracht AutoCAD system manager 9 4.2 Relatie cliënt/server in de database De database waarin de informatie is opgeslagen die kan worden opgevraagd en bewerkt, plus de software die de database onderhoudt, vormen de server. Deze databasestructuur die een krachtige lokale component met een component op afstand combineert, noemen we een cliënt/server-structuur. Verzoek data Toegang tot data opslag Terugkeer van Informatie Terugkeer van data Cliënt Disk Server Afbeelding 4.2.1 De relatie tussen programma’s van cliënt en de informatie in de database. 4.3 Het cliënt/server model De server bestaat uit een database plus de software om de database te benaderen. Alleen de informatie die een cliënt opvraagt, opslaat of bewerkt, zal zich over het netwerk verplaatsen. De rest van het server-programma, samen met de database die de informatie bevat, blijft in de computer van de server. In afbeelding 4.3.1. ziet u een hardwaremodel met een voorbeeld van twee cliënten die met een enkele server zijn verbonden. Netwerk kabel Netwerk kabel Cliënt Cliënt Server Afbeelding 4.3.1. Het cliënt/server model Afstudeer opdracht AutoCAD system manager 10 4.4 Het logische model van een record DrawingID DrawingNO TitelID De cliënt vraagt de server om het identificatienummer te controleren en te verifiëren of het uniek is. Als alles in orde is ( dat wil zeggen, als het ID-nummer acceptabel en uniek is ), kan de cliënt een nieuwe tekening aan de database toevoegen. Daarbij kan de cliënt alle records bekijken die de database van de server bevat. Verschillende gebruikers kunnen de server gebruiken om tegelijkertijd de informatie op de server via een netwerk te benaderen. In afbeelding 4.4.1. wordt de compacte (onvolledige) versie getoond van het logische model van de informatie die in de database opgeslagen is. Project 1 1 2 17150 1 ROER I, 2 ASDRAGERS I, 2 ASKOP 2 1 30 17174 Position Headbox 3 5 8 17230 3 Boegbuizen I 4 2 4 17174 Nozles 1282, S6292 5 27 57 17097 ANKERREK + ANKERLIJN n n n 17630 Ingekomen tekening POD-I Subject Afbeelding 4.4.1 4.5 Inzicht in de automatisering Automatisering is een type besturingssysteem waarmee een ActiveX EXE programma kunt benaderen, vanaf een lokale computer of vanaf een computer op afstand. De server blijft op de andere computer en voert de taken uit die de cliënt opdraagt, waardoor de computer van de cliënt vrij blijft voor andere taken. De server stuurt de gevraagde informatie terug naar de cliënt, waardoor minder transmissie van gegevens in beide richtingen nodig is. De toepassingstijd van de cliënt wordt verlengd door het netwerkverkeer, dit leidt tot de mogelijkheid om met meerdere cliënten tegelijkertijd de server te benaderen. In feite zend computer een verzoek aan een andere computer waarop een ActiveX EXE voor het tekeningenbeheersysteem draait. Terwijl de andere computer mijn verzoek verwerkt, ben ik vrij om andere bewerkingen uit te voeren. Voor de beste resultaten zou de ActiveX EXE op de snelste computer van de netwerk moeten draaien, omdat de server uiteindelijk wel tientallen of zelfs honderden verzoeken kort na elkaar moet kunnen verwerken. In afbeelding 4.5.1. ziet u een out-of-process toepassing zoals die bij het MARIN wordt toegepast. Afstudeer opdracht AutoCAD system manager 11 Proces B Informatie verwerking Informatie verwerking Programma Code ek d or nt w o tw oo rd zo oe k er An Geheugen blok A oe k Ve rz ek Programma Code o Verz Geheugen blok Informatie verwerking Ant wo ord Out-of-process server ord two An Proces C Geheugen blok Programma Code V Ver z Geheugen blok Proces A Proces D Informatie verwerking Geheugen blok Programma Code Afbeelding 4.5.1. Een out-of-process object draait in zijn eigen adresruimte, in zijn eigen proces, zijn eigen virtueel geheugen. Omdat de ActiveX EXE in zijn eigen proces draait, kan er een kopie van een ActiveX EXE programma op de cliënt computer aanwezig zijn of op een andere computer (server/host) en het proces dat toegang tot de EXE vereist, kan de server lokaliseren en het uitvoeren, onafhankelijk van zijn locatie. Een van de belangrijkste voordelen van een ActiveX EXE programma is dat het over een heel netwerk kunt benaderen en het programma hoeft niet in cliënt computer te worden ingelezen. Het blijft op de host computer 5 Ontwerp van de database van het tekeningenbeheersysteem Na het vastleggen van de benodigde informatie door de werkgroep ben ik gestart met het opzetten van een goede database structuur in het Microsoft Access programma. Er werd snel duidelijk dat ik een relationele database met meerdere tabellen moest ontwerpen. In meerdere tabellen zal ik de informatie opslaan die is gerelateerd aan één enkel object in een bepaald record. In feite houdt het juist ontwerpen van een database in dat ik uitsluitend informatie opsla die is gerelateerd aan een enkel object in een bepaald record. Om de informatie uit de tabellen op een voor de gebruiker begrijpelijke manier te combineren gebruik ik query’s uit de Structured Query Language (SQL). Afstudeer opdracht AutoCAD system manager 12 5.1 Toepassen van Microsoft Access voor het maken van de database Een database bestaat uit één of meer tabellen en elke tabel is opgebouwd uit rijen en kolommen. In een tabel is elke rij een record en elke kolom een veld. Een record kan één of meer velden bevatten. Elk veld kan een waarde bevatten. Deze waarde kan een getal, tekst, symbool of een ander gedefinieerd type zijn. Aan de database heb ik de naam ‘DrawingOffice.mdb’gegeven. Deze bevat een negental relationele tabellen. In afbeelding 5.1.1. kunt u de relaties tussen de tabellen vinden. Afbeelding 5.1.1. Samengestelde database ‘DrawingOffice.mdb’. 5.1.1 De tabel ‘TblProject’ In de tabel ‘TblProject’worden alle projecten en informatie over projecten bewaard, zoals projectbeschrijving in het veld ‘Description’, Exchange informatie voor het betreffend project in het veld ‘Outlook’. De velden ‘ClientID’en ‘TypeShipID’zijn bedoeld voor een latere uitbreiding met informatie over opdrachtgevers en soorten modellen. Veld ‘Project’is een index veld waar geen dubbele waarden zijn toegestaan. Met andere woorden de gebruiker mag maar één keer een zelfde project toevoegen aan de tabel. De cliënt/server-structuur zorgt voor een juiste foutafhandeling van de invoer van de gebruiker. Het veld ‘Project’is gerelateerd aan de tabel ‘TblDrawing’veld ‘Project’en ‘TblModel’veld ‘Project’. Afstudeer opdracht AutoCAD system manager 13 5.1.2 De tabel ‘TblModel’ In de tabel ‘TblModel’wordt alle informatie over modellen bewaard, zoals de schaal van het model, het projectnummer en de beschrijving. 5.1.3 De tabel ‘TblDrawing’ De tabel ‘TblDrawing’bevat informatie over de tekening, zoals omschrijving van de tekening, de naam van de CAD engineer, bestandsnaam, tekenschaal e.d. Velden ‘TitelID’, ‘ModelID’en ‘TypeID’zijn relationeel verbonden met andere tabellen. 5.1.4 De tabel ‘TblTitel’ De titel van de tekening mag gekozen worden uit de tabel ‘TblTitel’waar alle titels vooraf gedefinieerd zijn door een aangewezen CAD engineer / beheerder. Titels zijn relationeel verbonden met de tabel ‘TblType’. 5.1.5 De tabel ‘TblType’ Iedere titel is gekoppeld aan het type (Autocad, Model, Ingekomen tekening, Rapport tekening of Voorsteltekening) van de tekening. 5.1.6 De tabellen ‘TblDrawingApp’, ‘TblApp’, ‘TblNummer’, ‘TblLeter’ De tabellen ‘TblDrawingApp’, ‘TblApp’, ‘TblNummer’en ‘TblLeter’zijn bedoeld voor uitbreiding in de toekomst. 5.2 Inzicht in verbindingen en SQL query’s De kracht van een relationele database is gelegen in het vermogen om database informatie uit verschillende tabellen te combineren, zodat een enkele recordset ontstaat. Een recordset uit verschillende tabellen kan gecombineerd worden met een Join-clausule, binnen de SQL-statement Select. Als een Join statement wordt toepast om records uit verschillende tabellen te combineren, gebruikt dit statement de waarden uit de velden die in de twee tabellen zijn opgegeven. Het statement combineert de tabellen, zodat de recordset ontstaat. Het volgende statement combineert bijvoorbeeld een tabel: SELECT Model, Project FROM tblProject INNER JOIN tblModel ON tblProject.Project = tblModel.Project De recordset die zo ontstaat, geeft alleen de records uit beide tabellen weer die een gelijke waarde hebben in het veld ‘Project‘. Deze records kunt u sorteren en selecteren op grond van gemeenschappelijke waarden in de oorspronkelijke tabellen. Afstudeer opdracht AutoCAD system manager 14 6 De werking van het programma 6.1 De installatie Het programma wordt gedistribueerd met een installatieprogramma op de CD. Start het installatieprogramma door setup.exe aan te klikken in de folder Package. Volg nu de installatie procedure. Afbeelding 6.1.1. Na een succesvolle installatie wordt er een icoon (Teken boek) aangemaakt in Start\Programs\Drawing Office waarmee u het programma kunt opstarten. Voor een goede werking tijdens de demonstratie van het programma moeten de bestanden DrawingOffice.mdb en DOSettings.mdb aanwezig zijn in de folder c:\CursusTomas\. Bij het MARIN is dit geregeld met een cliënt/server structuur (zoals beschreven in paragraaf 4.2 t/m 4.5) waardoor alles geregeld wordt via het MARIN netwerk. 6.2 Het programma In het MARIN tekeningenbeheersysteem programma kan iedere CAD engineer alle (niet alleen Autocad) tekening inschrijven. Project managers en project engineer’s kunnen de tekeningen bekijken en zoeken naar informatie welke in het tekeningenbeheersysteem worden bewaard. 6.2.1 De ActiveX Data Object (ADO) Als een toegang object voor de cliënt tot de server ActiveX EXE heb ik voor ADO (Microsoft ActiveX Data Object) gekozen. ADO maakt het mogelijk om vanuit Cliënt applicatie data te lezen of te wijzigen in een database server of OLE DB provider. ADO is makkelijk te gebruiken en te onderhouden. De sterke kanten van dit object zijn hight speed en low memory overhead. ADO biedt de mogelijkheid om cliënt/server of WEB-based applicaties te bouwen. Details zijn te zien in bijlage 10.1 in de paraaf toegang tot de database server. Afstudeer opdracht AutoCAD system manager 15 6.2.2 Opstart procedure van het programma Tijdens het opstarten van het tekeningenbeheersysteem wordt eerst gekeken naar NT inlognaam van de gebruiker met API functie ‘advapi32.dll’. Voor details zie Bijlage 10.2. De inlognaam wordt gebruikt voor de indeling en menustructuur van de hele applicatie, niet iedere gebruiker heeft de zelfde rechten. Het MARIN tekeningenbeheersysteem houdt bij wie wat mag doen. Als men voor de eerste keer inlogt kan men alleen tekeningen bekijken en printen. Daarna wordt de laatste status van de applicatie opgezocht in het register (met het commando GetSetting) zoals de grootte van het scherm, laatste actieve project en laatste scope voor applicatie. 6.2.3 Inschrijven van informaties Als de gebruiker voldoende rechten heeft is het mogelijk om een nieuwe tekening in te schrijven. Eerst moet de gebruiker het type van de tekening kiezen. Hierbij kan gekozen worden m.b.v. de OptionButton uit: Autocadtekening, modeltekening, rapporttekening, rapid, voorstel tekening of een ingekomen tekening. Deze lijst kan gemakkelijk uitgebreid worden met nieuwe types m.b.v. de database (zie bijlage 10.3). Hiermee is de uitbreidingmogelijkheid gegarandeerd. 6.2.4 Weergeven van informaties Alle informatie is toegankelijk via het MARIN tekeningenbeheersysteem. Er bestaat een mogelijkheid om van een autocad tekening een preview te maken. Deze preview functionaliteit kan zonder Autocad, OCX of DLL werken. De functie leest het binair DWG bestand in en zoekt naar de byte 14. In de byte 14 staat een verwijzing naar een absolute byte in het bestand, hier is bitmap of wmf informatie opgeslagen. De werking van deze functie wordt uitgelegd in bijlage 10.4. Een andere mogelijkheid is een autocad tekening te openen met het VoloView (downloaden gratis), een programma van Autodesk welke wel geïnstalleerd moet zijn op de computer. Afstudeer opdracht AutoCAD system manager 16 7 Programma interface 7.1 Hoofd scherm van het programma Hier kan de gebruiker alle informatie over het project terugvinden. Afbeelding 7.1.1 Interface van het Marin tekeningenbeheersysteem 7.2 Menustructuur van het programma De menustructuur van het programma is sterk afhankelijk van het toegangsniveau van de aangemelde gebruiker. De gebruikers zijn ingedeeld in drie hoofdgroepen: • Gebruiker met alleen lees rechten – dat zijn project manager en project engineer. Zij mogen: o Projecten zoeken en printen. o Autocad tekeningen bekijken met VoloView (ingebouwd als ActiveX). o Oproepen van preview, als het om een Autocad tekening gaat. Afstudeer opdracht AutoCAD system manager 17 • Gebruikers met lees en schrijf rechten – dat zijn alle CAD engineer’s. Zij mogen: o Nieuwe projecten aanmaken. o Nieuw model in een project toevoegen. o Tekeningen inschrijven in een project. o Tekeningen wijzigen in een project. • Beheerder – staflid CAD engineer’s. Zij mogen: o Standaard titel naam en/of tekening type toevoegen. o Informatie van het project of het model wijzigen. o Tekening verwijderen uit het project. In afbeeldingen 7.2.1 t/m 7.2.5 is de menustructuur te zien voor de groep beheerders, dus met alle beschikbare menu’s. Afbeelding 7.2.1 Afbeelding 7.2.2 Afbeelding 7.2.3 In het menu ‘Drawing book’zijn de meest gebruikte functies ondergebracht, zoals het inschrijven van een nieuwe tekening of het aanmaken van een nieuw project. In het menu ‘Tools’zijn handige functies te zien, zoals het direct openen van een tekening in Autocad. Of het openen in Volo View welke is ingebouwd in het programma (zie afbeelding 7.2.6). Reset register zet het programma weer in de oorspronkelijke status zoals die gedefinieerd is in Visual Basic.Dit in verband met het bewaren van de status van het scherm of het laatste projectnummer in het register van de computer. Afbeelding 7.2.4 Afbeelding 7.2.5 Afstudeer opdracht AutoCAD system manager 18 Het menu ‘Extra’is uitsluitend bedoeld voor de beheerders van het tekeningenbeheersysteem (op dit moment zijn er twee aangewezen). Hierover wordt later nog uitgebreid geschreven. In het eerste gedeelte van het menu ‘Window’kan de gebruiker instellen wat voor informatie over de tekening zichtbaar moet zijn, zoals de naam van de CAD engineer of de datum van de tekening. Afbeelding 7.2.6. Volo View control in het tekeningenbeheersysteem In het tweede gedeelte van het menu ‘Window’kan men een preview (zie afbeelding 7.2.7) van een Autocad tekening bekijken. Er is ook een refresh functie aanwezig, omdat de gebruiker in een netwerkomgeving werkt. Afbeelding 7.2.7 Preview van de tekening 17552-006 Afstudeer opdracht AutoCAD system manager 19 7.3 Toevoegen van een nieuw project Affbeelding 7.3.1. Invoeren van een nieuw project nummer Door op ‘Add new project’in het menu ‘Drawing book’te klikken, kan de gebruiker (CAD engineer) een nieuw projectnummer inschrijven. Bijzonderheden van het project kan de CAD engineer in het veld ‘Project description’vermelden. Het veld ‘Outlook description’wordt automatisch gevuld met informatie over dit project welke in Exchange wordt bewaard. Deze functie is tijdens de demonstratie niet beschikbaar vanwege het ontbreken van een koppeling met de Exchange server bij het MARIN. 7.4 Toevoegen van een nieuw model in een project Door op ‘Add new model for current project’in het menu ‘Drawing book’te klikken, kan de gebruiker een nieuw model inschrijven welke in het actieve project beschikbaar moet zijn. Minimalle invoer is het modelnummer en de schaal; een omschrijving is niet verplicht, dit is bedoeld om bijzondere situaties goed te kunnen omschrijven. Afbeelding 7.4.1 Inschrijven van een nieuw model Afstudeer opdracht AutoCAD system manager 20 7.5 Toevoegen van een nieuw tekening Eén van de belangrijkste schermen van het programma is het toevoegen van een nieuwe tekening. Deze kan geactiveerd worden door ‘Add new drawing’in het menu ‘Drawing book’. Bij het opstarten van het scherm wordt gekeken wat het laatste tekeningnummer in het actieve project is geweest en deze wordt opgehoogd met één. Dit wordt door een cliënt/server structuur geregeld, zoals uitgelegd in hoofdstuk 4. De CAD engineer moet eerst selecteren om wat voor type tekening het gaat. Daar worden alle beschikbare opties bepaald voor de combobox ‘Titel’. Eén van deze opties moet de gebruiker kiezen. Koppelen van deze relatie is beschreven in paragraaf 7.11. De gebruiker kan een omschrijving van de tekening plaatsen in het veld ‘Subject’. Het modelnummer kan geselecteerd worden vanuit de combobox ‘Model Nr.’. De tekenschaal is standaard ingesteld 1:1, de naam van de CAD engineer wordt overgenomen van de windows login naam. Afbeelding 7.5.2 Afbeelding 7.5.1 Inschrijven van een nieuwe tekening De standaard waarde voor de datum is dag-maand-jaar ( uit windows NT ). De gebruiker moet nog een bestand selecteren (wanneer het om Autocad tekening gaat ) met een scherm zoals u ziet in afbeelding 7.5.2. In afbeelding 7.6.1. ziet u al een ingeschreven Autocad opstellingstekening. Afstudeer opdracht AutoCAD system manager 21 7.6 Wijzigen van een ingeschreven tekeningen Afbeelding 7.6.1. Wijzigen van de tekening Een tekening kan foutief ingevoerd zijn door de CAD engineer. Met ‘Edit current drawing’in het menu ‘Drawing book’kan men dit scherm oproepen en gegevens wijzigen. 7.7 Printen van een project Door op ‘Print current project’in het menu ‘Drawing book’te klikken, kan iedere gebruiker een afdruk maken van het actieve project zoals te zien is in afbeelding 7.7.1 Afbeelding 7.7.1. Door op het icoon te klikken met een printer kan de gebruiker een printer kiezen en/of printerinstellingen wijzigen naar eigen behoefte. Naast de mogelijkheid om te printen, kan men in dit scherm ook voor het icoon ‘Export’ kiezen. Dit biedt de mogelijkheid om een html of een tekst bestand te maken. Afstudeer opdracht AutoCAD system manager 22 7.8 Wijzigen van een project Door een CAD engineer met beheerrechten kunnen wijzigingen aangebracht worden in het actieve projectnummer, zoals een omschrijving van het project of ophalen van Exchange informatie over het actieve project. (Zie afbeelding 7.8.1) Afbeelding 7.8.1 7.9 Wijzigen van een model Wijzigen van een model nummer is alleen toegestaan door CAD engineer met beheerrechten. Hier kunnen het modelnummer, de schaal en de omschrijving gewijzigd worden. Aanpassingen in dit scherm kunnen wijzigingen in de al ingeschreven tekeningen opleveren. Daarom is gekozen om deze functionaliteit alleen beschikbaar te stellen aan de staflid CAD engineer/beheerder. Afbeelding 7.9.1 7.10 Toegangsniveau instellen In dit scherm kan de beheerder na het inloggen (zie afbeelding 7.10.1 ) gebruikers toevoegen met permissie niveau (zie afbeelding 7.10.2). Afbeelding 7.10.1 Afbeelding 7.10.2 Afstudeer opdracht AutoCAD system manager 23 7.11 Titel van de tekening koppelen aan type van de tekening In het menu ‘Extra’, onder menu ‘Aanpassen’mag de gebruiker met voldoende rechten titels koppelen aan type van de tekening. Dit bepaalt de inhoud van de combobox ‘Titel’(zie afbeelding 7.5.1). Afbeelding 7.11.1 In de afbeelding 7.11.2 ziet u alle titels voor Autocad tekeningen. Zo kan men andere titels definiëren voor de model tekening dan voor de ingekomen tekening. Deze relatie wordt bepaald door de rij TypeID. Op deze manier wordt er gezorgd voor uniforme benamingen van de titels. Afbeelding 7.11.2 Afstudeer opdracht AutoCAD system manager 24 8 Conclusie Het MARIN tekeningenbeheersysteem is een belangrijke aanvulling van het Meetverwerkings- en Rapportage (MVR) systeem van het MARIN. Het MARIN tekeningenbeheersysteem maakt het mogelijk om overzichten van modellen, aanhangsels, voortstuwers in hun samenhang op te vragen op basis van een MVR bijgehouden configuratie. Door de MARIN tekeningenbeheersysteem geproduceerde overzichten bevatten componentnamen, tekeningennummers maar ook de ingekomen tekeningen/correspondentie op basis waarvan ze zijn gemaakt etc. Het samenstellen van deze overzichten op de traditionele (c.q. met het handgeschreven tekeningenboek) vraagt veel tijd en is foutgevoelig; het MARIN tekeningenbeheersysteem genereert deze informatie foutloos en snel op basis van een query met daarin het modelnummer en componentnamen. Het query resultaat wordt daarna geheel automatisch in een data- of eindrapport geplaatst door het MVR systeem, zoals dit ook wordt gedaan met het overzichten van de uitgevoerde proeven, standaard bijlagen, analyse, resultaten, diagrammen etc. Met het gebruik van het MARIN tekeningenbeheersysteem in combinatie met MVR realiseert het MARIN een belangrijke verhoging van zowel de efficiency als de kwaliteit van het rapportage proces. Onze nieuwe stelling is om rapporten binnen zes weken naar de laatste proef op te leveren. Dit lag in het jaar 2001 gemiddeld op 6 maanden. 9 Nawoord Met deze applicatie hebben de CAD engineer’s nu een hulpmiddel om tekeningen in digitale vorm op te slaan. Er wordt nu veel tijd bespaard omdat zoeken naar specifieke gegevens nu veel makkelijker gaat. Maar zo een applicatie is natuurlijk nooit af. Regelmatig krijg ik of mijn collega’s nieuwe ideeën voor verbreding van de applicatie. In de loop van jaar 2002 wordt MARIN tekeningen beheer systeem uitgebreid voor autocad gebruikers met automatische genereren van tekeningen stempel en veld ‘DrawingID’uit de tabel ‘tblDrawing’koppelen m.b.v. Autocad XData aan autocad tekening. Dit zorgt voor betere beheerbaarheid van alle opgeslagen kennis. Er wordt ook preview scherm standaard ingebouwd in het hoofdscherm i.p.v. oproepen via ‘Window->Preview’ Een goede optie blijkt het openen van Autocad tekeningen (welke ingeschreven zijn in tekeningenbeheersysteem) met VoloView (Afbeelding 7.2.6). Dit wordt door de project manager of assistent gebruikt om toegang tot hetgeen getekend is door een CAD engineer. 9.1 Reactie van de CAD engineer’s Doordat dit MARIN tekeningenbeheersysteem bij uitzondering op de werkplek gemaakt is, is het een op maat geschreven programma geworden. Aangekochte dan wel in opdracht gemaakte programma’s zijn vaak onnodig ingewikkeld of net niet compleet (voor het MARIN). Afstudeer opdracht AutoCAD system manager 25 Het MARIN tekeningenbeheersysteem heeft in gebruik zoveel overeenkomsten met het bestaande fysieke tekeningenboek dat de overschakeling (instructies CAD engineer’s) in een paar uur was voltooid. De toegevoegde extra’s zijn modern van opzet maar des al niet te min door de CAD engineer’s (gemiddelde leeftijd ruim 50 jaar!) tot grote tevredenheid goed en blijvend in gebruik genomen. Door deze gebruiksvriendelijkheid is het goed archiveren van de tekeningen gewaarborgd en dit zonder extra belasting voor CAD engineer. Opkomende wensen van de CAD engineer’s konden in de afgelopen maanden zonder problemen ingewilligd worden. De keuze om het bestaande fysieke tekeningenboek (anno 1930) aan te pakken is een goede beslissing. Voordelen zijn: • Snel opzoeken van tekeningen met een specifiek onderdeel. • Geen geloop vanuit de verschillende kamers naar de centraal opgeslagen tekeningenboek. • Geen verschillende en onduidelijke handschriften meer. • Meer ruimte voor andere nuttige informatie. • Visualiseren van tekeningen vanuit het tekeningenbeheersysteem geeft zeer snel info over de inhoud. Afstudeer opdracht AutoCAD system manager 26 10 Bijlage 10.1 Toegang tot de server database Tijdens de demonstratie wordt gebruik gemaakt van een rechtstreekse koppeling met de Access database volgens: Public Sub RunConnection() On Error GoTo LocalError Dim objConn As ADODB.Connection Dim strConnStr As String Set objConn = New ADODB.Connection strConnStr = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & MYCONNECTIONSTRING & "DrawingOffice.mdb" objConn.CursorLocation = adUseClient objConn.Open strConnStr, "Username", "Password" Set pADOConnection = objConn Exit Sub LocalError: If Err.Number = -2147467259 Then MsgBox "ADO data error nr.: " & Err.Number & vbCrLf & "Error description: " & Err.Description, vbCritical, "Fatal error EXIT NOW" objConn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data source=" & FindDB("DrawingOffice.mdb") & ";Jet OLEDB:Database Password=Password;" Else If Fatal((Err.Number), (Err.Description), "SetGetNewConnection!ADO Sub") = vbRetry Then Resume Else Resume Next End If End If End Sub De routine RunConnection maakt een verwijzing naar object pADOConnection welke overal toegankelijk is. Met andere worden is dit een koppeling met de database tijdens de demonstratie of een koppeling met de server ActiveX EXE welke op de database server van het MARIN draait. Afstudeer opdracht AutoCAD system manager 27 10.2 Opstart procedure codes Deze functie geeft de inlognaam terug van het Windows NT systeem. Er wordt gebruik gemaakt van een advapi32.dll API functie Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long Public Function ReturnUserName() As String On Error GoTo LocalError Dim sBuffer As String Dim lSize As Long Dim txtUserName As String sBuffer = Space$(255) lSize = Len(sBuffer) Call GetUserName(sBuffer, lSize) If lSize > 0 Then txtUserName = Left$(sBuffer, lSize - 1) Else txtUserName = vbNullString End If ReturnUserName = txtUserName Exit Function LocalError: If Fatal((Err.Number), (Err.Description), "SetUpFunctions!GetUserStatus") = vbRetry Then Resume Else Resume Next End If End Function Uit de inlognaam wordt de menustructuur afgeleid. Zodat de gebruikers in drie groepen in te delen zijn. Allen lezen, lezen en schrijven, en de groep beheerders. Afstudeer opdracht AutoCAD system manager 28 10.3 Uitbreiding van optionbuttons met nieuwe types van de tekeningen Het scherm voor nieuwe tekening toevoegen of oude wijzigen wordt pas tijdens de loop van het programma bepaald. Waardes en aantal van de optionbuttons worden in het database opgeslagen. Hiermee is de uitbreidingsmogelijkheid van het MARIN tekeningenbeheersysteem groot. Private Sub SetOptionsIndex() Static MaxIdx MaxIdx = 0 Dim rsType As ADODB.Recordset Dim strSQL As String Dim strNameType As String strSQL = "SELECT * FROM tblType" Set rsType = New ADODB.Recordset rsType.Open strSQL, GetNewConnection, adOpenForwardOnly, adLockReadOnly rsType.ActiveConnection = Nothing rsType.MoveFirst rsType.MoveNext rsType.MoveNext Do Until rsType.EOF MaxIdx = MaxIdx + 1 strNameType = rsType.Fields("Type") Load optType(MaxIdx) optType(MaxIdx).Top = optType(MaxIdx - 1).Top + 360 optType(MaxIdx).Visible = True optType(MaxIdx).Caption = strNameType rsType.MoveNext Loop DisconnectRecordSet rsType Me.Frame1.Height = optType(MaxIdx).Top + 400 End Sub Afstudeer opdracht AutoCAD system manager 29 10.4 Functie PaintPreview De functie PaintPreview wordt gebruikt om een Preview te genereren uit een DWG bestand. Hiermee is allen de BMP informatie uit te lezen wat ook weer zijn nadelen heeft, zoals maximaal 256 kleuren als waterkleuren. Option Explicit '/// BEGIN API FOR THE BITMAP & PAINT//// Private Type BITMAPINFOHEADER biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type Private Type RGBQUAD rgbBlue As Byte rgbGreen As Byte rgbRed As Byte rgbReserved As Byte End Type Private Type IMGREC bytType As Byte lngStart As Long lngLen As Long End Type Private Declare Function GetDC Lib "user32" _ (ByVal hWnd As Long) As Long Private Declare Function FindWindow Lib _ "user32" Alias "FindWindowA" (ByVal lpClassName _ As String, ByVal lpWindowName As String) As Long Private Declare Function SetPixel Lib _ "gdi32" (ByVal hdc As Long, ByVal X As _ Long, ByVal Y As Long, ByVal crColor _ As Long) As Long '///END API FOR BITMAP & PAINT/// Public Function PaintPreview(strFile As _ String) As Integer Dim lngSeeker As Long Dim lngImgLoc As Long Dim bytCnt As Byte Dim lngFile As Long Dim lngCurLoc As Long Afstudeer opdracht AutoCAD system manager 30 Dim intCnt As Integer Dim udtRec As IMGREC Dim bytBMPBuff() As Byte Dim udtColors() As RGBQUAD Dim udtColor As RGBQUAD Dim lngHwnd As Long Dim lngDc As Long Dim lngY As Long Dim lngX As Long Dim intRed As Integer Dim intGreen As Integer Dim intBlue As Integer Dim lngColor As Long Dim lngCnt As Long Dim udtHeader As BITMAPINFOHEADER On Error GoTo Err_Control If Len(Dir(strFile)) > 0 Then lngFile = FreeFile Open strFile For Binary As lngFile Seek lngFile, 14 Get lngFile, , lngImgLoc Seek lngFile, lngImgLoc + 17 lngCurLoc = Seek(lngFile) Seek lngFile, lngCurLoc + 4 Get lngFile, , bytCnt If bytCnt > 1 Then For intCnt = 1 To bytCnt Get lngFile, , udtRec If udtRec.bytType = 2 Then 'All of the code preceding this Line 'Is identical to the code in Part 'Two of Byte By Byte. 'Now we begin the color extraction 'The start value is the BYTE BEFORE 'The BMP Header data (The RGBQUAD 'And BMP Header are contained within 'Another structure), so move the read/ 'Write marker to the next byte... Seek lngFile, udtRec.lngStart + 1 'Pull out the BMP header data... Get lngFile, , udtHeader 'Resize the Byte buffer to the full 'Length of the data... ReDim bytBMPBuff(udtRec.lngLen) 'Did you read Randall's article? If udtHeader.biBitCount = 8 Then 'Resize the array of RGBQuad's, I 'Could also have used the biClrUsed 'Value of the udtHeader... ReDim udtColors(256) 'Grab all of the color values Get lngFile, , udtColors 'Now we grab the full record by 'Moving the Read/Write marker 'Back to the start of the data. 'Don't worry about all of the data 'We already grabbed... '(If you read Randall's article, 'Remember that the data is reverse 'Scan... Seek lngFile, udtRec.lngStart Afstudeer opdracht AutoCAD system manager 31 'Fill the buffer... Get lngFile, , bytBMPBuff 'Now grab the Forms Handle lngHwnd = FindWindow(vbNullString, _ Me.Caption) 'So we can get its Device Context.. lngDc = GetDC(lngHwnd) 'I thought this was a nice touch.. Me.Caption = strFile 'Clean any old paint off.. Me.Repaint 'Begin Painting For lngY = 1 To udtHeader.biHeight For lngX = udtHeader.biWidth To _ 1 Step -1 'See, we are reading the data 'From THE END of the buffer... lngColor = _ bytBMPBuff((UBound(bytBMPBuff) _ - lngCnt)) 'Get the mapped value udtColor = udtColors(lngColor) 'Break it into Red intRed = CInt(udtColor.rgbRed) 'Green intGreen = CInt(udtColor.rgbGreen) 'And Blue intBlue = CInt(udtColor.rgbBlue) 'Get a color the API will accept lngColor = RGB(intRed, intGreen, _ intBlue) 'Paint this Pixel. The + 5 is to 'Give a little offset from the edge 'Of the form. 'But before we do, would you like 'To have Black backgrounds? Easy, 'Swap the map: '///BLACK BACKGROUND/// If lngColor = vbBlack Then lngColor = vbWhite ElseIf lngColor = vbWhite Then lngColor = vbBlack End If '////////////////////// 'If your prefer White (the true 'Value) Then just remove that.. SetPixel lngDc, lngX + 5, lngY + 5, _ lngColor 'Increment the counter... lngCnt = lngCnt + 1 Next lngX Next lngY End If Exit For ElseIf udtRec.bytType = 3 Then 'Add your message for Meta Files Exit For End If Next intCnt Else 'Add your Message for No Preview Afstudeer opdracht AutoCAD system manager 32 End If 'Close the file Close lngFile 'Return the value End If 'General Error control Exit_Here: Exit Function Err_Control: Select Case Err.Number Case Else MsgBox Err.Description Resume Exit_Here End Select End Function Afstudeer opdracht AutoCAD system manager 33