Pagina's op IkLeerBIM

vrijdag 9 november 2012

Random patronen in Revit


Eindelijk een eerste post over dit onderwerp. Zelf volg ik al een tijdje Blogs zoals Shades of Grey waar slimme mensen fantastisch onvoorstelbare 'dingen' doen met Revit. Wat mij al die tijd nog wat tegenhield was het feit dat ik nog geen toepassing zag voor die geweldige ‘dingen’. Maar daar is wat verandering ingekomen! Eindelijk mocht ik van mezelf ook ‘dingen’ gaan doen. En wel een Random Patroon.. nou ja, plaatje maken voor gebruik in Revit.


Onderweg naar huis zat ik een tijdje terug met mijn collega te brainstormen over hoe we een kleuren en materialen staat konden (laten) maken in Revit. In grote lijnen is dit een fluitje van een cent, maar het venijn zit’m in de staart. Namelijk de uitzonderingen op de regel. Als een ruimte een afwerking heeft is er net 1 wandje wat anders is. En deze uitzonderingen gaan steeds meer regel vormen.
Het toppunt hiervan zijn wel de random patronen. Want hoe geef je een random wandafwerking aan? Yes! Tijd voor SuperExcel om eens te laten zien wat die kan.
Ik had natuurlijk eerst even kunnen Googlen of er al iets was te vinden, maar kon niet wachten om te beginnen. Overigens de reden waarom ik direct aan Excel dacht waren meerdere Post van Andy Milburn op zijn blog Shades of Grey. Waarin hij mogelijkheden van Revit Excel Link laat zien. Ideate BIMLink is een alternatief programma. Maar eigenlijk wilde ik het gewoon eerst ‘zelf’ proberen. En met goedkope huis- tuin- en keukenprogramma’s. Excel Starter 2010, Paint en mijn Revit Viewer. (is dat eigenlijk een huis- en tuin- en keukenpakket? Ach whatever)

De eerste stapjes gingen goed. Het is bijna kinderlijk eenvoudig om een random formule te maken in Excel, daar een voorwaardelijke opmaak aan te hangen en die ten slotte door te kopiëren. Voor de schoonheid van het plaatje kan je de cel opmaak aanpassen naar ‘Aangepast’ en daar een spatie gebruiken om Excel erin te laten lopen. Deze laat dan geen getal (lees niks) zien in de cel. 
Wat betreft het herberekenen van de sheet kan bij berekeningsopties deze op handmatig zetten. Als je een nieuw patroon wil zien kan je op F9 drukken om de sheet te laten herberekenen. Let op dat je deze optie weer terug op automatisch zet voordat je het bestand afsluit!



Het bleek goed mogelijk om een bereik in Excel te selecteren, te kopiëren en te plakken als plaatje in Excel. Of direct naar bijvoorbeeld Paint. En als het naar Paint lukt moet het zeker naar een Photoshop kunnen om de ene Excel kleur te vervangen voor Exacte RAL kleuren ofzo. 


Hier is makkelijke een JPEG van te maken die in een materiaal opgenomen kan worden of als Raster Image op een vlak geplakt kan worden. De eerste is te zien bij een rendering of bij een Realistic view. De tweede is altijd zichtbaar mits je er recht op kijkt.


Helemaal lekker is zo'n aanzicht niet. De Raster Image dekt alles af. Ik heb eerst een Filled Region getekend over de elementen die voor het tegelwerk uit moeten komen. En die Regions dan voor het Image gehaald.

De verhouding van de cellen in Excel en wat je wil maken in Revit zijn natuurlijk van belang. Maar ook dit bleek goed oplosbaar. Als je trekt aan een kolom of rij kan je het aantal Pixels zien. En zo kan je hoogte en breedte gelijk maken. Een kolom van 13,43 breed is 100 pixels. En een rij van 74,75 is ook 100 pixels.



So far so good.
Nu word het tijd om de random patronen wat te sturen. In de eerste plaats door het minimum of maximum van het random patroon naar een Naambereik te laten verwijzen. Dit werkt stabieler van een relatieve of absolute verwijzing, zeker bij het door kopiëren van de formules.



Vervolgens wilde ik cellen gaan groeperen en daardoor een tegel breedte en tegel hoogte te kunnen laten bepalen. Hier begint de uitdaging al langzamerhand vorm te krijgen. In eerste instantie gebruikte ik rij 1 en kolom 1 als referentie, om te bepalen of een cel een nieuwe random kleur mag kiezen of de kleur naast / boven hem moet overnemen. 



Dat ging goed. En dit heb ik vervolgens omgebouwd zodat de voorwaardelijke formule naar zijn eigen coördinaten kijkt en op basis daarvan de keuze maakt.



Ook dat was niet echt een probleem. Wel lukt het niet om zijn oorsprong goed te bepalen. Maar daar ben ik niet lang bij stil gaan staan want ik wilde verder met de grotere uitdaging. Namelijk een random patroon met bijbehorende random kleuren! 
Om dit te maken moest ik eerst afspraken maken over de volgorde waarin de cel zijn keuze gaat bepalen. Bovendien moesten er een paar nieuwe variabelen worden toegevoegd. Elke groep cellen heeft namelijk een random breedte met een bijbehorend maximum en dito hoogte nodig.
De afspraak die ik maakte was om links boven te beginnen. En een groep cellen van links gaat boven een groep cellen van boven. Verder moest de cel stabiel zijn aan de linker zijrand en de bovenrand. Daarnaast had ik besloten om een string samen te voegen waarin de kleur, de breedte en de hoogte stonden aangegeven. En elke cel bouwde zijn eigen string weer samen op basis van de cel links en de cel boven hem. Wanneer een cel de kleur van de cel erboven over mag nemen, neemt deze ook de hoogte van de cel erboven over maar dan -1. En voor de breedte gelijk zo.
Voor het maken van een tekst string gebruikte ik de functie ‘tekst.samenvoegen’. En voor het uitlezen van de juiste waarden van een andere cel gebruikte ik de functie ‘deel’ en ‘vind.spec’. Dit deed ik om de formule zo stabiel mogelijk te houden. Daarom maakt ik ook gebruik van Naambereiken om de scheidende string tussen kleur, breedte en hoogte te bepalen.
Je voelt hem al. Dit is een verschrikkelijke formule die niet direct goed ging maar het is gelukt!


Wel is de inhoud van de cel leesbaar geworden omdat deze geen Waarde maar een Tekst is geworden. Daarom heb ik de voorwaardelijke opmaak moeten aanpassen, want kleurschaal werkte niet meer. Dat heb ik later opgelost.
Bij het fijn slijpen van de formule moest ik wat extra controles toevoegen om ‘fouten’ te voorkomen. Sommige kleurvlakken konden zichzelf nog aan elkaar vast knopen. Na een enkele van deze fouten eruit gehaald te hebben bleek dat niet alle fouten eruit gehaald konden worden. Het is nou eenmaal zo dat Random betekend dat het ook wel eens perfect in elkaar past. Wel kunnen met bepaalde instellingen deze fouten geminimaliseerd worden of juist meer voorkomen.



Nu de basis redelijk klaar is ben ik verder gegaan. Want ik wilde ook nog een lijn om een rechthoekig kleurvlak krijgen. Hierdoor wordt het nog duidelijker dat er een random patroon gemaakt is. En worden afzonderlijke kleurvlakken met dezelfde kleur van elkaar gescheiden. Hiervoor heb ik de stukken van de formule omgebouwd en in de voorwaardelijke opmaak ingebouwd.
Ook heb ik een 2e lijst toegevoegd die alleen de kleur uit de oorspronkelijke lijst inleest. Deze (kleur)waarde kan ik dan weer verbergen op de eerder genoemde manier.


Mooi he!


Tot zover het random patroon. Na terugkoppeling met mijn collega misten we nog een paar opties die redelijk makkelijk in te bakken waren. Veel random patronen zijn namelijk beschreven als verhouding ten opzichte van elkaar. Dat was heel eenvoudig op te lossen door de kleur uit een lijst te laten kiezen waarin een kleur bijvoorbeeld 20% voorkomt, en een andere 80%. Dat was makkelijk. Wel ben ik de mogelijkheden gaan combineren in 1 bestand.. Ja kan dus nu kiezen tussen een random kleur of een kleur in verhouding tot een andere kleur. Ook kan je kiezen voor een blokverband.




Zelf wilde ik nog een mogelijkheid om het random kleuren te kunnen ‘afknotten’ voor een bepaalde kolom of rij. Dat wil zeggen het minimum kleurnummer is 2 en het maximum kleurnummer is 10. En voor een specifieke kolom knot ik deze met 1 af naar een maximum van 9.  Dit werkt natuurlijk niet als je met verhoudingen werkt. In de toekomst zou je voor die rij of kolom wel een andere lijst kunnen kiezen.. Maar dat is er nog niet.


Wat er ook nog niet is, is een mogelijkheid om de laatste kolom en onderste rij te laten aansluiten bij de eerste. Want het liefst zou ik een echt doorgaand random patroon willen maken.
Wat ik ook graag zou zien is een mogelijkheid om dit patroon in Excel  om te kunnen zetten in een Revit Hatch! Maar ik ben bang dat ik dat niet mijn kneusjes Excel Starter redt en echt wat VBA mogelijkheden nodig ga hebben.
Wie weet.




Geen opmerkingen:

Een reactie posten