Johannes Itten – “Tower of Fire”,parametric model

October 21st, 2009 by Sebastian

Having seen a rebuilt of Itten’s “Tower of Fire” at the Bauhaus exhibition, I started swcripting a parametric model of the tower in the spirit of the workshop we’re planning to do next year. The VBA script runs in Microstation and is modified by the following parameters:

  • cSize As Double = edgeLength of the bottom cube
  • cAngle As Double = rotation in plan between each cube
  • cNumber As Long = number of cubes / levels
  • cScale As Double = the bottom radii of the cones equals the diagnal conrner distance by default. This is scaled by cScale parameter
  • uSeg As Long = Number of linear panels on cone
  • vSeg As Long = Number of circular panels on cone
  • cRad As Double = Radius of panel frames

Images of rebuilts of the tower:

Examples of towers using different parameters:
tower of fire 01

tower of fire 01

tower of fire 01 top view

tower of fire 01 top view

tower of fire 02

tower of fire 02

tower of fire 02 top view

tower of fire 02 top view

tower of fire 03

tower of fire 03

tower of fire 03 top view

tower of fire 03 top view

Source code for Microstation MVBA:

‘Draw a “tower of fire”
‘Parametric approach to Johannes Itten’s design
‘Sebastian Gmelin
’19.10.2009

Option Explicit

Const cSize As Double = 60
Const cAngle As Double = 3
Const cNumber As Long = 40
Const cScale As Double = 2
Const uSeg As Long = 10
Const vSeg As Long = 1
Const cRad As Double = 0.05

Public Type cube
    height As Double
    startPoint As Point3d
    endPoint As Point3d
    direction As Point3d
    botVertex(5) As Point3d
    topVertex(5) As Point3d
End Type

Dim cubes() As cube
Sub Main()
    Dim i As Long
    Dim k As Long
    Dim p As Long
    Dim q As Long
    Dim size As Double
    Dim direction As Point3d
    Dim startPoint As Point3d
    Dim endPoint As Point3d
    Dim height As Double
    Dim cOffset As Double
    Dim conePoints(4) As Point3d
    Dim cSpans() As Point2d
   
    Dim cSurface As New BsplineSurface
    Dim cCurves(2) As New BsplineCurve
    Dim isoCurves() As New BsplineCurve
    Dim cPath As New BsplineCurve
       
    Dim line As Element
    Dim coneEdge(2) As Element
    Dim cLine(3) As Element
    Dim cArc As Element
    Dim cSurfElement As BsplineSurfaceElement
    Dim cSpline As BsplineCurveElement
   
    ReDim cubes(cNumber)
    
    size = cSize
    direction = Point3dFromXYZ(1, 0, 0)
    startPoint = Point3dFromXYZ(size / -2, size / 2, 0)
    endPoint = Point3dFromXYZ(size / 2, size / 2, 0)
    height = Point3dDistance(endPoint, startPoint)
   
    For i = 1 To cNumber
        Call createBox(startPoint, endPoint)
       
        cOffset = Atn(cAngle * 3.141 / 180) * height
        height = Point3dDistance(endPoint, startPoint)
       
        ‘store data
        cubes(i).height = height
        cubes(i).startPoint = startPoint
        cubes(i).endPoint = endPoint
        cubes(i).direction = direction
        cubes(i).botVertex(1) = startPoint
        cubes(i).botVertex(2) = endPoint
        cubes(i).botVertex(3) = Point3dSubtract(endPoint, Point3dCrossProduct(Point3dSubtract(endPoint, startPoint), Point3dFromXYZ(0, 0, 1)))
        cubes(i).botVertex(4) = Point3dSubtract(startPoint, Point3dCrossProduct(Point3dSubtract(endPoint, startPoint), Point3dFromXYZ(0, 0, 1)))
        cubes(i).botVertex(0) = cubes(i).botVertex(4)
        cubes(i).botVertex(5) = cubes(i).botVertex(1)
        For k = 0 To 5
            cubes(i).topVertex(k) = cubes(i).botVertex(k)
            cubes(i).topVertex(k).z = cubes(i).botVertex(k).z + height
        Next
       
        ‘draw testpoints
        CadInputQueue.SendCommand “ACTIVE STYLE 1″
       
        Set line = CreateLineElement2(Nothing, cubes(i).botVertex(1), cubes(i).topVertex(3))
        ActiveModelReference.AddElement line
        line.Redraw
       
        Set line = CreateLineElement2(Nothing, cubes(i).botVertex(2), cubes(i).topVertex(4))
        ActiveModelReference.AddElement line
        line.Redraw
       
        Set line = CreateLineElement2(Nothing, cubes(i).botVertex(3), cubes(i).topVertex(1))
        ActiveModelReference.AddElement line
        line.Redraw
       
        Set line = CreateLineElement2(Nothing, cubes(i).botVertex(4), cubes(i).topVertex(2))
        ActiveModelReference.AddElement line
        line.Redraw
       
        ‘change data for next cube
        startPoint = Point3dSubtract(startPoint, Point3dScale(Point3dNormalize(Point3dCrossProduct(direction, Point3dFromXYZ(0, 0, 1))), cOffset))
        endPoint = Point3dSubtract(endPoint, Point3dScale(Point3dNormalize(direction), cOffset))
        direction = Point3dSubtract(endPoint, startPoint)
        startPoint.z = startPoint.z + height
        endPoint.z = endPoint.z + height
    Next
       
    For i = 2 To cNumber
        For k = 1 To 4
            SetCExpressionValue “tcb->symbology.color”, 0, “MGDSHOOK”
            CadInputQueue.SendCommand “ACTIVE STYLE 2″
            conePoints(0) = cubes(i).topVertex(k)
            conePoints(1) = cubes(i – 1).topVertex(k)
            conePoints(2) = cubes(i).topVertex(k + 1)
            conePoints(3) = Point3dScale(Point3dAdd(conePoints(1), conePoints(2)), 0.5)
            conePoints(4) = Point3dAdd(conePoints(3), Point3dScale(Point3dNormalize(Point3dCrossProduct(Point3dSubtract(conePoints(3), conePoints(0)), Point3dSubtract(conePoints(2), conePoints(1)))), cubes(i).height * cScale))
            
            Set coneEdge(1) = CreateLineElement2(Nothing, cubes(i – 1).topVertex(k), cubes(i).topVertex(k))
            ActiveModelReference.AddElement coneEdge(1)
            coneEdge(1).Redraw
            Set coneEdge(2) = CreateLineElement2(Nothing, cubes(i).topVertex(k), cubes(i).topVertex(k + 1))
            ActiveModelReference.AddElement coneEdge(2)
            coneEdge(2).Redraw
           
            Set cLine(1) = CreateLineElement2(Nothing, conePoints(1), conePoints(2))
            ActiveModelReference.AddElement cLine(1)
            cLine(1).Redraw
            Set cLine(1) = CreateLineElement2(Nothing, conePoints(0), conePoints(3))
            ActiveModelReference.AddElement cLine(1)
            cLine(1).Redraw
            Set cLine(1) = CreateLineElement2(Nothing, conePoints(3), conePoints(4))
            ActiveModelReference.AddElement cLine(1)
            cLine(1).Redraw
           
            Set cArc = CreateArcElement3(Nothing, conePoints(1), conePoints(4), conePoints(2))
            ActiveModelReference.AddElement cArc
            cArc.Redraw
           
            Call cCurves(0).FromElement(coneEdge(1))
            Call cCurves(1).FromElement(coneEdge(2))
            Call cCurves(2).FromElement(cArc)
           
            SetCExpressionValue “tcb->symbology.color”, k, “MGDSHOOK”
            CadInputQueue.SendCommand “ACTIVE STYLE 0″
            Call cSurface.FromRailsAndSweptSections(cCurves(0), cCurves(1), cCurves(2), Nothing)
            Set cSurfElement = CreateBsplineSurfaceElement1(Nothing, cSurface)
            ActiveModelReference.AddElement cSurfElement
            cSurfElement.Redraw
           
            ‘create Network U
            For q = 0 To uSeg
                isoCurves = cSurface.ExtractIsoparametricCurve(cSpans, q / uSeg, msdBsplineSurfaceU)
                For p = LBound(isoCurves) To UBound(isoCurves)
                    Set cSpline = CreateBsplineCurveElement1(Nothing, isoCurves(p))
                    ActiveModelReference.AddElement cSpline
                    cSpline.Redraw
                    Call createTube(cRad, isoCurves(p))
                Next p
            Next q
           
            ‘create Network V
            For q = 0 To vSeg
                isoCurves = cSurface.ExtractIsoparametricCurve(cSpans, q / vSeg, msdBsplineSurfaceV)
                For p = LBound(isoCurves) To UBound(isoCurves)
                    Set cSpline = CreateBsplineCurveElement1(Nothing, isoCurves(p))
                    ActiveModelReference.AddElement cSpline
                    cSpline.Redraw
                    Call createTube(cRad, isoCurves(p))
                Next p
            Next q
        Next k
    Next i

End Sub
Sub createBox(startPoint As Point3d, endPoint As Point3d)

    CadInputQueue.SendCommand “ACTIVE STYLE 0″
    SetCExpressionValue “tcb->symbology.color”, 0, “MGDSHOOK”
   
‘   Start a command
    CadInputQueue.SendCommand “MODELER BLOCK”

‘   Set a variable associated with a dialog box
    SetCExpressionValue “tcb->ms3DToolSettings.block.axisMode”, 0, “FEATURESOLID”
    SetCExpressionValue “tcb->ms3DToolSettings.block.length.value”, (ActiveModelReference.UORsPerMasterUnit * Abs(Point3dDistance(startPoint, endPoint))), “FEATURESOLID”
    SetCExpressionValue “tcb->ms3DToolSettings.block.width.value”, (ActiveModelReference.UORsPerMasterUnit * Abs(Point3dDistance(startPoint, endPoint))), “FEATURESOLID”
    SetCExpressionValue “tcb->ms3DToolSettings.block.height.value”, (ActiveModelReference.UORsPerMasterUnit * Abs(Point3dDistance(startPoint, endPoint))), “FEATURESOLID”
    SetCExpressionValue “tcb->ms3DToolSettings.block.height.locked”, 0, “FEATURESOLID”
    SetCExpressionValue “tcb->ms3DToolSettings.block.width.locked”, 0, “FEATURESOLID”
    SetCExpressionValue “tcb->ms3DToolSettings.block.length.locked”, 0, “FEATURESOLID”

    CadInputQueue.SendDataPoint startPoint, 1

‘   Send a keyin that can be a command string
    CadInputQueue.SendKeyin “AccuDraw Rotate Top”

    CadInputQueue.SendDataPoint endPoint, 1

    CadInputQueue.SendDataPoint Point3dSubtract(startPoint, Point3dCrossProduct(Point3dSubtract(endPoint, startPoint), Point3dFromXYZ(0, 0, 1))), 1
   
    CadInputQueue.SendDataPoint Point3dAdd(startPoint, Point3dFromXYZ(0, 0, Abs(Point3dDistance(startPoint, endPoint)))), 1

    CadInputQueue.SendCommand “CHOOSE ELEMENT”

    CommandState.StartDefaultCommand
End Sub

Sub createTube(rad As Double, path As BsplineCurve)
    Dim Frame As Matrix3d
    Dim Curvature As Double
    Dim Torsion As Double
    Dim Parameter As Double
    Dim LinearNormal As Point3d
    Dim Normal As Point3d
    Dim cPoint As Point3d
    Dim circ As Element
    Dim Rot As Matrix3d
    Dim line As Element
    Dim x As Point3d
    Dim y As Point3d
    Dim z As Point3d
    Dim startPoint As Point3d
    Dim endPoint As Point3d
   
    Dim cSurface As New BsplineSurface
    Dim cSurfElement As BsplineSurfaceElement
    Dim cSection As New BsplineCurve
       
    endPoint = path.EvaluatePointFrame(Frame, Curvature, Torsion, 1, LinearNormal)
    startPoint = path.EvaluatePointFrame(Frame, Curvature, Torsion, 0, LinearNormal)
    cPoint = startPoint
   
    y = Point3dNormalize(Point3dCrossProduct(Frame.RowY, Frame.RowX))
    z = Point3dNormalize(Frame.RowX)
    x = Point3dNormalize(Point3dCrossProduct(y, z))
   
    Rot = Matrix3dFromPoint3dColumns(x, y, z)
   
    Set line = CreateLineElement2(Nothing, cPoint, Point3dAdd(cPoint, x))
    line.Color = 1
    ActiveModelReference.AddElement line
    line.Redraw
   
    Set line = CreateLineElement2(Nothing, cPoint, Point3dAdd(cPoint, y))
    line.Color = 2
    ActiveModelReference.AddElement line
    line.Redraw
   
    Set line = CreateLineElement2(Nothing, cPoint, Point3dAdd(cPoint, z))
    line.Color = 3
    ActiveModelReference.AddElement line
    line.Redraw
   
    Set circ = CreateEllipseElement2(Nothing, cPoint, rad, rad, Rot)
    ActiveModelReference.AddElement circ
    circ.Redraw
   
    Call cSection.FromElement(circ)
    SetCExpressionValue “tcb->symbology.color”, 6, “MGDSHOOK”
    CadInputQueue.SendCommand “ACTIVE STYLE 0″
    Call cSurface.FromRailAndSweptSection(path, cSection)
    Set cSurfElement = CreateBsplineSurfaceElement1(Nothing, cSurface)
    ActiveModelReference.AddElement cSurfElement
    cSurfElement.Redraw
       
End Sub

Share

Design Modelling Symposium Berlin, 5th – 7th October 2009

October 8th, 2009 by Sebastian

Visited the Design Modelling Symposium in Berlin. Three days of exciting lectures. The following lists only the topics and speakers that are directly related to my own studies. For a complete list please visit http://www.design-modelling-symposium.de.

  • “Designexplorations”, Axel Kilian – Axel showed a summary of his research projects. Particularly interesting was a tool to create digital chain models. The user could modify the shape by creating moment connections in between chain elements.
  • “Theverymany”, Marc Fornes – Marc showed installation projects driven by parametric processes and produced from lasercut metal sheets. The digital creation process is influenced by specific material parameters, production and transport limitations. The “learningbydoing” character of this work adds a high level of excitment. http://www.theverymany.net/
  • “Generative and Performative Design Techniques”, Andrew Marsh - Andrew is the developer of a simulation tool, called Ecotect. He presented ideas how the results of environmental analysis can drive design as direct parameters. I also took part in a masterclass lead by Andrew and learned a lot about environmental analysis through Ecotect. IMaybe we could think of a direct link from Ecotect to B-processor? http://www.ecotect.com/
  • “Paneling Architectural Freeform Surfaces”, Helmut Pottman, TU Wien – Helmut is the author of “architectural geometry” and does amazing  work on panalization of freeform surfaces. http://www.dmg.tuwien.ac.at/pottmann/
  • “Material without a Past”, Norbert Palz – Norbert is researching rapid prototyping trechnologies that do not only create complex shapes but also allow the creation of material properties. http://cita.karch.dk/
Share

Bauhaus exhibition in Berlin

October 4th, 2009 by Sebastian
091003-bauhaus-exhibit-01
091003-bauhaus-exhibit-01, image from exhibition flyer

While visiting the Bauhaus exhibition with some of the new PhD students, Niels and I came up with the idea of running a parametric design class at the school using a similar education strategy as it was done in the 1920ies at the Bauhaus. As a preparation for a design work, the students will be introduced to the methodology of parametric design and get introductions to different (parametric design) software tools. They then chose a master class – sculpture of painting. They use one or more tools to experiment in either field and design a parametric art object that might be produced with 3d printing technology of laser cutters. During this exercise a design language and working method should be established that is then taken to an architectural design project. In teams of four students, knowledge about different tools will be joined to work on a more complex project.

091004-bauhaus-project
091004-bauhaus-project

 Some Bauhaus projects might actually work as a template for the students as they might be transformed into parametric designs.

091003-bauhaus-exhibit-02
091003-bauhaus-exhibit-02, image from exhibition flyer
091003-bauhaus-exhibit-03
091003-bauhaus-exhibit-03, image from exhibition flyer

Thanks to Jorgen and Carsten for organizing this trip!

Share

research on basic elasticity calculation

September 28th, 2009 by Sebastian

Refreshed my crude knowledge on elasticity calculations…

 

090927 research elasticity 01
090927 research elasticity 01

 

 

090927 research elasticity 02
090927 research elasticity 02

 

 

090927 research elasticity 03
090927 research elasticity 03

 

 

090927 research elasticity 04
090927 research elasticity 04

 

 

090927 research elasticity 05
090927 research elasticity 05

 

 

090927 research elasticity 06
090927 research elasticity 06

 

 

090927 research elasticity 07
090927 research elasticity 07

 

 Weblinks:

http://en.wikipedia.org/wiki/Young_modulus

http://en.wikipedia.org/wiki/Poisson%27s_ratio

http://en.wikipedia.org/wiki/Hooke_law

http://en.wikipedia.org/wiki/Shear_modulus

 

 
Share

sketchup sandbox tool

September 27th, 2009 by Sebastian

Google sketchup sandbox is a free-form modeler based on a meshed surface. It can be pushed and pulled with a ‘smoove‘ tool. The diameter of the tool can be adjusted numerically. Complex surfaces can be created very intuitively. This is what I had in mind for B-processor. The deformation should then follow material properties.

Share

journals

September 26th, 2009 by Sebastian

Both journals might be the right target to publish papers about complex geometry topics as well as a research base for my PhD project.

Share

associations and conferences

September 26th, 2009 by Sebastian

eCAADe

education and research in computer aided architectural design in Europe

  • CUMICAD system, a comprehensive archive for research papers on CAAD. Is there an institutional access through Architecture School Aarhus
  • Next conference in September 2010, Zürich

acadia

Association for Computer Aided Design in Architecture

  • next conference in October 2009
  • 2010 conference not yet announced

CAADRIA

The Association For Computer-Aided Architectural Design Research in Asia

sigradi

Sociedad Iberoamericana de Gráfica Digital

ascaad

Arab Society for Computer Aided Architectural Design

CAADfutures

  • Next conference: Liège 2011
Share

Idea / Sketch

September 18th, 2009 by Sebastian
material properties driving modelling tools

material properties driving modelling tools

Share

bips conference 2009 Nyborg

September 13th, 2009 by Sebastian

On my visit to the latest bips conference in Nyborg, 7th and 8th September, I was introduced to some discussions on building information modelling in Danmark. Main topic was the co-work in digital building design . (samarbejde, digitale byggeri) The main problems of sharing 3d models in the building process seem to remain unresolved for different reasons. The old conflicts of architects and engineers are still driver for many discussions. While software companies try to offer products for information modelling, there is a fear that these specialized tools restrict processes too much. And the more information digital models contain, the more difficult becomes the exchange of these models to other software packages.
A great lecture of Torsten Vang (3XN) and Henrik Tinning (Moe & Brodsgaard) about the “Bla Planet”- project, showed that the difficult process of working with many different specialized software tools can lead to a climate of improvisation within the team, resulting in an fantastic design that might not have emerged from a simpler working method.
Henrik Christensen, project director of Femern Baelt bridge, highlighted that not only specialized software but especially a good climate of information sharing is key to sucessful co-working.
Last but not least, Jeanne Aarhus from Aarhus associates, gave great hints on AutoCad and Revit. Especially the new parametric modelling tools in AC2010 looked quiet convincing.

Share

Welcome

September 13th, 2009 by Sebastian

July 2009
Welcome to my new blog, informing about the progress on my PhD studies at the school of architecture in Aarhus.
This blog is meant to help bridging the distance from Berlin –  where I am based- and those interested and connected to my work and studies in Aarhus and worldwide. It will also serve as a logbook for my thoughts and research, becoming a collection of the work I will be doing within the next years.

Share