/Furniture/Backroom.foocad

Orange paint : [https://www.diy.com/departments/goodhome-durable-valencia-matt-emulsion-paint-2-5l/3663602406006_BQ.prd] Lacquer on top? [https://www.diy.com/departments/goodhome-durable-clear-satin-furniture-lacquer-0-5l/3663602578512_BQ.prd]
Attatch the long shelves using white brackets : [https://www.screwfix.com/p/hi-load-bracket-120kg-white-250-x-250mm-10-pack/34119]
A neutral floor color? [https://www.wickes.co.uk/Aspen-Light-Oak-Laminate-Flooring---2-22m2/p/138652]
A cloth front around the bases? [https://www.ebay.co.uk/itm/253520457207?var=552707176383&_trkparms=ispr%3D1&hash=item3b06ff2df7:g:dJYAAOSwWCFbuJxq&amdata=enc%3AAQAGAAACkPYe5NmHp%252B2JMhMi7yxGiTJkPrKr5t53CooMSQt2orsSg3Ye8yTWgOW7pmE1t838dqh%252FxL2f%252BnNu35LFmpbHg0Av8mY72QvdfM%252BD5SGR39wFDgtJ6nE0aSDcSB8%252Bvu5o1pRhRmXqOWX%252BEEa6B929MgGe5b1Hm4DHHSbHnXXjJfCuDJ1ioRjly1w%252B7DOjAzG7fVqpiw9aqjWb3xvf6a%252BJFwixce1TqBAWKGYTlE9My8s%252BwKwbHEAfYhqpTBp24ucOetZAqTHkSfXWkSGnBhrqhFHUAKyFbxz5asOUQKXJkdWbD%252FG7BFIk%252BLplbEQMCPFct5pCjkf67oezwHV242rwWqZyQGvXX3n1Xeq0UE5DERBTq%252Bp%252FgMHIs80pZ60rpPUzmmHXDWUH4t8FW1xRhzZk8bIxtwBZ3E%252FMUTjKbWzxojny1EB7oDgy7spV35D3di1kwWvPs1fW06MIsFT2O34jRfphhD55v%252FX4eSoElFiKrBgmv%252F5sg5OZW2%252BrBc7U%252BSsXzjp%252F3lpJFENDAjotwGFsqCYMyq3ynUdYyCCGrSe9h%252FD7DbIqbeaVk5uu1Ke8bpqTD0rM9SBao6SE7dL9PEWxOW%252ByG6eTUpGsNmN%252BipTJnn%252B%252Fqv49rg0XMV5lNugp%252FBudm2k9mjCCi9cozCkIIQyYfE4txf%252Bq6nDamc7LKhij2YsaqAiONDeIUhIuiB67re%252FQav7lfEz45BSFQ71gM5XItYZpTcjia2%252FRwmEh%252BB3d7VXrEglfb8t3OF1Bx5bNcBIvBRXOj%252BofYOlZM4C4gi2ozj19BcFvgnwXNDuWETgiET8Hb%252BYXfmEIGkMg1j148jbn2UEVhUbxrwN0l74D97XT4AN%252Fn8cB0dq3gdZkLz1RclIJ%7Campid%3APL_CLK%7Cclp%3A2334524] [https://www.ebay.co.uk/itm/165002765899?_trkparms=aid%3D1110002%26algo%3DSPLICE.SOI%26ao%3D1%26asc%3D20201210111451%26meid%3Deaac6e69f5e4400081517d9485716fad%26pid%3D101196%26rk%3D3%26rkt%3D12%26sd%3D164836308730%26itm%3D165002765899%26pmt%3D1%26noa%3D0%26pg%3D2047675%26algv%3DPromotedSellersOtherItemsV2WithMLRv3&_trksid=p2047675.c101196.m2219&amdata=cksum%3A165002765899eaac6e69f5e4400081517d9485716fad%7Cenc%3AAQAGAAACEGi%252BoskHs8LtVBhKbFrs%252FncKW9sPcrKc%252FhrrfM7XuS1zd0f75AwdB%252Bf8qGIr%252FIYF5ekIDi7KsuBHpNelmBLkzUJVQ7wiUh0Sa8BFeajH1D6WH98pTE%252BtpN2eCx3yybQ3QISDzIa0vKBvmAAD9DxTV6SJS0ZocLlsNsrF2MxbS%252FXaoGIpXxHxQmBFbnCrO9znPCDvtrDoiv1dMlWAL2eCCeZB26fnIcULIbD%252FgW%252FTp0RuuGoBeKaRgdM5NOj8I%252BeZ8uAR6NcrXCz5EKidsADF3MQ%252FFGZNejsS8phcv37fpEW5YiwmZApUXWu2YucCcy4zgE17I79b8XaydQA75A3sYBPsDn0waOshADuri2AzIoYqM6WBUkEdEnhMuTKM8yADKvVqPSpAv4%252BMDCGRHP9TFt4Y3WOb0x618rb2ztr78UHJom87CojIgacxnvpRvnQq%252BssMCOpqhaUE3YskFCStbywHPMaGyteyfqlgj7JYJ8ulKbpOPP7pu%252BS4EExoFEuL0NZsKeDHru1LZg0i1I3a5Ef%252F%252FR6D5MpWw989wnuG7kFCLOnd7ZwFAuZQ7Lx1GSaxgLFCrgkBaPoUYlLcU60mRmgmax%252FQi4y4uteyuOwTZqf6jeinuoK6mEpu9ZclGgRKEyGqDOBxQj8QrRslG3I7B%252Fr%252B%252F8YwBe03zSCWgGMdeCwUUxQGLHVJofqzDf8DpBf%252Bgw%253D%253D%7Campid%3APL_CLK%7Cclp%3A2047675]
Attach using magnets in a stiff triangular rod inside the top hem. Either another magnet in the worktop, or a piece of metal. Each piece can then be ripped off easily. The interal corner has extra on the alcove part, so that there's no gap. Could use a 3D printed piece of plastic to form a curve for where the worktop is deeper than the alcove.
import static uk.co.nickthecoder.foocad.layout.v1.Layout2d.* import static uk.co.nickthecoder.foocad.layout.v1.Layout3d.* class Backroom : Model { val alcove1 = Vector2(820,360) val alcove2 = Vector2(860,360) val room = Vector3(820+860+1420, 3660, 2580) val baseThickness = 30 val base = Vector3(600, 2500, 737) val alcoveBaseDepth = 500 val alcoveChimneyOverlap = 100 val shelfDepth = 300 val shelfShorterBy = 100 // The height of the bottom of the first shelf val shelf1Height = 517 + 737 // The distance from the bottom of one shelf to the bottom of the next. // Enough for a bottle of Galliano. val shelfDelta = 390 // val shelfThickness = 15 @Piece( printable=false ) override fun build() : Shape3d { val wallE = Cube( 100, room.y, room.z ) .backTo(0) val wallN = Cube( room.x, 100, room.z ).frontTo(0).rightTo(0) val chimney = Cube( room.x - alcove1.x - alcove2.x, alcove1.y, room.z ) .backTo(0).rightTo( -alcove2.x ) val walls = (wallE + wallN + chimney).color( "MediumSlateBlue" ) val floor = Cube( room.x, room.y, 10 ).topTo(0).backTo(0).rightTo(0) .color( "LightGrey" ) val baseP = Square(base.x, base.y-alcoveBaseDepth) .backTo(-alcoveBaseDepth-10) .roundCorner(0, 200) val surface = baseP.extrude(baseThickness).rightTo(0) val alcove1SurfaceP = Square( alcove1.x + alcoveChimneyOverlap, alcoveBaseDepth ) //.roundCorner(1, 70) val alcove1Surface = alcove1SurfaceP.extrude( baseThickness ) .backTo(0) .leftTo(-room.x) val alcove2SurfaceP = Square( alcove2.x + alcoveChimneyOverlap, alcoveBaseDepth) //.roundCorner(0,70) val alcove2Surface = alcove2SurfaceP.extrude( baseThickness ) .backTo(0) .rightTo(0) val surfaces = (surface + alcove1Surface + alcove2Surface) .bottomTo( base.z ) .color( "Chocolate" ) val end = Cube( base.x - 20, 15, base.z ) .rightTo(0) .frontTo( -base.y + 300 ) .color("GhostWhite") val post = Cylinder( base.z, 30 ) .leftTo( -base.x + 30 ) .frontTo( - alcoveBaseDepth - 40 ) .tileY(2, -1000 ) .color( "Grey" ) val units = surfaces + end + post val shelf = Cube(shelfDepth, base.y - shelfShorterBy - shelfDepth, shelfThickness ) .rightTo(0) .backTo(-shelfDepth-10) val alcove2Shelf = Cube( alcove2.x, shelfDepth, shelfThickness ) .rightTo(0) .backTo(0) val alcove1Shelf = Cube( alcove1.x, shelfDepth, shelfThickness ) .leftTo(-room.x) .backTo(0) val singleLevel = (shelf + alcove1Shelf + alcove2Shelf).bottomTo(shelf1Height) val shelfEnd = Cube( shelfDepth, 15, shelfDelta * 2 + shelfThickness) .rightTo(0) .bottomTo( singleLevel.bottom) .backTo( singleLevel.front ) val shelves = (singleLevel.tileZ(3, shelfDelta-shelfThickness) + shelfEnd ) .color("Chocolate") val door = Cube( 770, 40, 2000 ) .rightTo(0).rotateZ(-70) .translate(-60, -room.y, 0) // Make sure the shelves are tall enough for a bottle of Galliano (to scale!) val galliano = PolygonBuilder().apply { moveTo(0,0) lineTo(0,350) lineTo(16,350) lineTo(18, 260) lineTo(35, 5) lineTo(32, 0) }.build().revolve().rightTo(-100).bottomTo( shelf1Height + shelfThickness ).frontTo(-1000) //println( "Rough floor area ${room.x /1000 * room.y / 1000} m^2" ) //println( "Length of Surface ${surface.size.y + alcove1Surface.size.x + alcove2Surface.size.x}" ) //println( "Shelves ${shelf.size.y} ${alcove1Shelf.size.x} ${alcove2Shelf.size.x}" ) return (walls + floor + units + shelves + door + galliano) // I rotate it, just so that the auto-generated image & thumbnail look better. //.rotateZ(90) } }