Automatiseer je eigen (bouw)systeem eenvoudig met VBA. Aan de hand van een voorbeeld, de Woning Bouwblok Generator, wordt duidelijk dat dit hele grote voordelen heeft. Met enkele klikken worden automatisch teksten, rapporten, tekeningen en berekeningen gegenereerd. Maak een volledige gewichts- en stabiliteitsberekening én een volledige invoerfile voor rekensoftware én een tekening van de fundering met een paar klikjes. In dit artikel wordt duidelijk gemaakt hoe we een systeem, elk systeem, kunnen gebruiken om te automatiseren met VBA,
Probeer de Woning Bouwblok Generator zelf, ga naar downloads.
Automatisering voor dagelijks gebruik
In ieder vakgebied zijn werkzaamheden te vinden die worden uitgevoerd met een computer en die met enige regelmaat opnieuw worden uitgevoerd, maar dan voor een ander project, een andere opdrachtgever of een andere situatie. Dit kunnen heel uiteenlopende werkzaamheden zijn, zoals het opstellen van rapportage, overzichten, een berekening of tekeningen. Het gebruik van de computer, software kan je helpen met deze repeterende werkzaamheden. Dit kan eenvoudig met het gebruik van commerciële software, maar hoe zit het met eigen geschreven software. Hele eenvoudige programma’s kunnen al heel veel bieden. Het hoeft niet direct een pakket te zijn MS Word of Photoshop. Aan de hand van een voorbeeld wordt duidelijk dat dit veel verder kan gaan dan je zou denken.
Iedereen maakt regelmatig gebruik van een rekenmachine. We weten allen dat we daar heel vaak hetzelfde mee doen; optellen van getallen, vermenigvuldigen enz. De handelingen zijn elke keer gelijk, alleen de getallen variëren. Deze werkzaamheden kunnen we eenvoudig automatiseren met behulp van de computer, met bijvoorbeeld spreadsheets. De berekening die regelmatig wordt uitgevoerd wordt één keer uitgewerkt in de spreadsheet en alle volgende keren dat we dezelfde berekening moeten uitvoeren nemen we gewoon de spreadsheet. We voeren de nieuwe getallen in en de spreadsheet levert in een oog omslag het berekende resultaat.
Een andere vorm van automatisering is het gebruik van functies in spreadsheets. Iedereen kent wel de goniometrische, statistische, financiële, datum, database en/of zoekfuncties. Als we er één functie nader bekijken, de goniometrische functie sinus, sin(x) zien we dat deze functie (zoals alle andere functies) een automatisering is van een serie berekeningen die elke keer weer hetzelfde zijn. Voor elke gewenste hoek worden deze serie berekeningen automatisch uitgevoerd. Programmeurs hebben de sinusfunctie voor ons geautomatiseerd en daar kunnen we maar wat blij mee zijn. Want de sinus x is gelijk aan:
of
Elke keer dat op een rekenmachine of spreadsheet de sinus van de hoek x wordt gevraagd wordt dezelfde reeks uitgevoerd. Denk hier eens aan de volgende keer dat je een willekeurige functie gebruikt.
Er zijn veel meer voorbeelden van automatisering van werkzaamheden die we dagelijks gebruiken. In voorgaande artikelen hebben we kennis kunnen maken met eigen functies. Eigen functies die bijvoorbeeld verschillende geometrische grootheden van profielen bepalen. Door simpel een hoogte en een breedte in te voeren worden verschillende complexe berekeningen keer op keer uitgevoerd op exact dezelfde wijze.
Een andere vorm van automatisering komt snel in beeld, de reeds genoemde spreadsheets (Excel). Velen van ons hebben al eens een berekening uitgewerkt in Excel, bijvoorbeeld een controle berekening van een constructieonderdeel. Deze spreadsheet gebruiken we dan regelmatig, misschien zelfs dagelijks.
De functies en berekeningen nemen werkzaamheden uit handen en hebben verschillende voordelen:
- Tijdswinst.
- Minder fouten, minder faalkosten.
- Gelijkheid in resultaat, uitvoer en lay-out.
- Kwaliteitsverbetering.
Een belangrijke voorwaarde is natuurlijk wel dat de uitwerking goed moet zijn. In voorgaande artikelen is hier al aandacht aan gegeven en zijn er diverse tips gegeven over de mogelijkheden om de kwaliteit van spreadsheets flink te verbeteren. Daar gaan we hier niet verder op in.
Van systeem naar automatisering
Het automatiseren van werkzaamheden met behulp van functies, eigen functies en spreadsheets is altijd gebaseerd op één basis principe; het herhalen van een vaste set werkzaamheden. Voor de sinusfunctie is dit het optellen en aftrekken van enkele breuken. Voor de berekening van de wapening in een betonbalk zijn dit verschillende formules zoals weergegeven in Eurocode 2. Of dit nu één optelling is of een hele waslijst aan verschillende wiskundige berekeningen of andersoortige bewerkingen, het blijft altijd één set met handelingen die keer op keer worden uitgevoerd.
Een dergelijke beschouwing kan ook worden toegepast op grotere en complexere systemen, zoals:
- De dimensionering van een poer in een fundering van een gebouw.
- De dimensionering van de wapening in een tandverbinding aan een betonkolom.
- De bepaling van hoeveelheid wapening in prefab betonelementen, zoals balken en kolommen.
- De engineering van een complete prefab fundering voor grondgebonden woningen.
- De dimensionering van prefab houten kapconstructie.
- De gewichts- en stabiliteitsberekening van grondgebonden woningen.
- De dimensionering van een specifieke staalverbindingen.
- De engineering van prefab garages.
Dit zijn een paar voorbeelden. Voor alle voorbeelden geldt dat er een beperkt aantal opties zijn en dat een vast systeem beschikbaar is. Het systeem van elk voorbeeld kan worden omschreven in een soort optielijst met een lijst van mogelijke uitwerkingen. Als dit bekend is kan het systeem worden omgezet in een stukje software, VBA-code.
Tip, begin met een beperkt aantal mogelijkheden en uitwerkingen. Gebruik de 80-20 regel. Dit betekent dat het beter is om een systeem te formulieren dat 80% van de situaties goed kan uitvoeren. De overige 20% komen later. De overige 20% kosten vaak een onevenredig hoeveelheid tijd om te realiseren. Laat de overige 20% uitzonderingen zijn die dan handmatig opgelost worden. Uitzonderingen komen over het algemeen minder vaak voor.
Als de eerste 80% gereed is kan men daar al gebruik van maken. Dit is al winst op zoveel fronten.
De woning generator
Als voorbeeld van het automatiseren van een systeem is een woning generator opgesteld voor het samenstellen van een bouwblok van grondgebonden woningen bestaande uit vier bloktypen; een woning, woning met uitbouw, garage en een erker. Met een beperkt aantal blokken kan een groot aantal willekeurige samenstelling worden opgebouwd. Naast het aantal en volgorde van de bloktype kan ook de afmeting van de blokken worden gewijzigd, het aantal lagen en de uitvoering van het dak. Zo is default een plat dak toegepast, maar een zadeldak is ook mogelijk. Voor een zadeldak is vervolgens gekozen voor een noklijn evenwijdig aan de voorgevel of een noklijn evenwijdig aan de voorgevel. Andere varianten kent het systeem niet.
In navolgende figuren zijn vier voorbeelden gegeven van mogelijke bouwblokken. Tijdens het samenstellen van het bouwblok wordt direct een preview gegeven, zodat je weet wat je doet. De preview wordt op schaal weergegeven en het is mogelijk om door de plattegronden te lopen en de verschillende verdiepingen te bekijken.
In navolgende plattegronden zijn van het laatste bouwblok een verdieping en de daklaag zichtbaar gemaakt. In dit geval loopt de noklijn van het zadeldak loodrecht op de voorgevel.
Als het gewenste bouwblok is samengesteld kan er allerlei informatie worden samengesteld. Dit kan op uiteenlopende manieren. In het navolgende zijn enkele voorbeelden gegeven.
Externe bestanden
Van elk bouwblok kunnen verschillende externe bestanden worden gegenereerd. Deze bestanden kunnen vervolgens voor uiteenlopende doeleinden worden gebruikt. De gebruiker van de Woning Bouwblok Generator kan zelf aangeven welke onderdelen in het bestand moeten worden opgenomen. Men heeft in dit geval de keuze uit projectinformatie, algemene informatie, specifieke informatie van de gebruikte bloktypen en informatie van het samengestelde bouwblok. Naast de afmetingen per blok wordt ook het oppervlak en inhoud gegeven. Uiteraard kan dit in elke wenselijke vorm worden gegoten, het gaat hier alleen om een voorbeeld.
- Excel
De generator werkt volledig zelfstandig en maakt géén gebruik van Excel zelf of informatie die in cellen of werkbladen. Er is bewust gekozen voor deze vorm om de mogelijkheden te laten zien. Project informatie, bouwblok info enz kan als uitvoer wel in Excel worden verwerkt. De gegevens kunnen worden weergegeven op een werkblad. De gegevens kunnen natuurlijk worden gebruikt door Excel, er kunnen berekeningen mee worden gemaakt enz. Er zijn geen beperkingen.
De gegevens kunnen ook door Excel zelf worden vastgelegd, zoals elk Excel bestand. In dit geval is er geen optie ingebouwd dat de generator informatie overneemt uit een Excel werkblad. Uiteraard is dit wel mogelijk. - TXT-bestanden
Zogenaamde tekst-bestanden zijn bestanden die eenvoudig leesbaar zijn met bijvoorbeeld “Kladblok” of Word. Het gaat hier om bestanden waar zogenaamde ASCII-tekens in zijn verwerkt. De ASCII-tekens kunnen in elke gewenste vorm worden verwerkt in een tekst-bestand. Alle bestandstypen zijn daarmee mogelijk, als deze maar op ACSII-tekens zijn gebaseerd. Dit is de basis van tekst-bestanden (TXT-bestanden), maar ook DXF, XML, CSV en IFC-bestanden. Dit zijn allemaal formaten die gebaseerd zijn op ASCII-tekens.
- Bovenstaande figuur laat twee voorbeelden zien van tekst-bestanden die opgesteld zijn op basis van het laatste bouwblok. Beide maken gebruik van ASCII-tekens, maar de vorm van beide bestanden is verschillend. “Test.csv” (rechts) heeft de vorm, lay-out die past bij een zogenaamd Comma-Separated-Value file, geschikt voor Excel en andere software pakketten die CSV-bestanden kunnen lezen. Links heeft een willekeurige opmaak.
Een mogelijke uitbreiding zou kunnen zijn een ASCII-bestand in de vorm van een XML-format. Er zijn veel software pakketten die deze XML informatie kunnen lezen en verwerken. Dit geldt ook voor rekensoftware zoals Technosoft Balkenroosters en AxisVM. Heel veel software pakketten hebben de mogelijkheid om ASCII-bestanden (tekst-bestanden) in welke vorm dan ook te lezen en te verwerken. Hier kun je gebruik van maken. Data uitwisseling wordt hiermee erg eenvoudig. De Woning Bouwblok Generator kan zo snel complexe data generen, data die vervolgens gebruikt kan worden voor bijvoorbeeld de engineering van prefab funderingsbalken. Rekensoftware kan de wapening berekenen en met behulp van de generator (toekomstige uitbreidingen) is het mogelijk om volledige productietekeningen van prefab elementen op te stellen, productie machines aan te sturen enz. - DXF-bestanden
DXF is ook een bestandsformaat dat gebruik maakt van ASCII-tekens. Alleen is de vorm, de lay-out zodanig gekozen dat deze door o.a. AutoDesk Autocad kan worden gelezen en worden verwerkt tot een digitale tekening. In de generator is de optie opgenomen om de hartlijnen van het balkrooster onder de woningen te tekenen. De volgende figuur laat de stramienlijnen van de funderingsbalken onder het bouwblok zien in Autocad. Deze tekening is door de generator gegenereerd in het DXF formaat.
De gewichts- en stabiliteitsberekening
Na het ontwerpen van een bouwblok, het tekenen van het bouwblok is de volgende stap het genereren van een gewichts- en stabiliteitsberekening. Een berekening specifiek voor het samengestelde bouwblok. In de generator is een start gemaakt met het opstellen van een volledig uitgewerkte gewichts- en stabiliteitsberekening.
De gewichten en belastingen van de verschillende constructieve en bouwkundige onderdelen zijn opgenomen in de generator en kunnen door de gebruiker vrij worden aangepast. Eenmaal de gewenste waarden ingevoerd, stelt de generator een volledige berekening op. Door deze optie verder uit te bouwen is het relatief eenvoudig om een volledige rapportage in Word te genereren, direct vanuit de generator.
Een volgende eenvoudige uitbreiding is het opstellen van bijvoorbeeld XML-bestanden voor rekensoftware voor het berekenen van het volledige balkenrooster van de fundering. In het XML-bestand kunnen naast de afmetingen en vormen ook de belastingen automatisch worden opgenomen. Allemaal op basis van de gegenereerde gewichts-berekening.
Automatiseren van een systeem
De Woning Bouwblok Generator is een heel mooi voorbeeld van het automatiseren van een systeem, iets meer dan een controleberekening van de dwarskracht van een balk of de dimensionering van wapening in een tandverbinding. Door het formuleren van de gewenste systeemeisen kunnen deze systeemeisen worden geautomatiseerd in VBA (Visual Basis for Applications) of andere programmatalen. VBA heeft het voordeel dat het een hele eenvoudige programmeertaal is en directe aansluiting op veel software pakketten van Microsoft, waaronder Excel, Word, Acces, Powerpoint, Outlook enz. En met MS Project is het mogelijk om voor het bouwblok een passende planning te genereren.
Uiteraard is het verstandig om met een eenvoudig voorbeeld te beginnen en van daaruit onderdelen toe te voegen. Dit is prima mogelijk. Veel programmatalen, zoals VBA, zijn modulair opgebouwd.
Door allerlei “intelligentie” in de module te bouwen wordt het gebruik van de module erg eenvoudig. Het Excel document (zie downloads) is beschikbaar voor te oefenen. De VBA-code van de generator is volledig zichtbaar. Oefen met de module en kijk naar de mogelijkheden en de gekozen oplossingen. In de VBA-code is op verschillende plaatsen voorzien van commentaren, toelichting en mogelijkheden voor aanvullingen.
Tot slot
De generator met de VBA-code is beschikbaar in een Excel document. Ga naar downloads voor verdere informatie. Oefen zelf en zie de mogelijkheden van het automatiseren van een systeem. Kijk naar de VBA-code. De hoeveelheid code zal je verrassen.
Let op, de module is niet volledig getest en kan mogelijk fouten bevatten. Vullings Advies geeft geen enkele garantie op de werking, inhoud en juistheid van het document en de aanwezige VBA-code. Het document is vrij voor eigen gebruik, maar blijft eigendom van Vullings Advies. De VBA-code is beschikbaar gesteld "as-is". Het gebruik het document is alleen toegestaan voor studie doeleinden en NIET voor commerciële doeleinden.