You are on page 1of 41

1.

Introduction
The modeling of historical buildings requires a lot of ornamental details that are not or much less found in modern buildings: • Columns (including twisted columns) • Balusters • Cornices • Arches • Friezes • Towers This note is a primer for a novice user who needs to create such special components with Archicad GDL and shows how they can be parameterized. The GDL reference guide is online at http://www.graphisoft.com/ftp/gdl/manual/14/wwhelp/wwhimpl/js/html/wwhelp.htm There exists add-ons that can make things much easier but they are not really indispensable.
(ex. archiforma, archiwall from Cygraph) http://www.cigraph.it/cigraph/pagetrans.do?lang=en&action=prodotti_demo&prodotti_id=2 (ex. Objective - http://encina.co.uk/sw-download.html)

These add-ons are not explained here. The increased level of detail also requires more calculations by Archicad. Therefore it is important to keep performance in mind. We will investigate the impact of modeling on performance. Before start modeling, we explain the basic notion of “polyline” and the more advanced parameter calculations and “parameter buffer”. The concept of a polyline is used in the many object definitions. The calculation of parameters and the concept “parameter buffer” are used in parametric objects and more advanced programming. Remarks : • Do not try to make any drawing “from your head”. Start by making a clear sketch of what is important (ex. cross sections) in a coordinate system, indicate points and note coordinates. This makes it possible to easily read the coordinates. • ArchiCAD GDL is not user friendly. The error messages do not always give you a clue of what could be wrond. Typical errors are too many or not enough parameters – decimal numbers not correctly entered (the decimal sign must be zero). This can be frustrating – do not give up. • If you do not see the problem, try to create a more simplified model with less points – look experimenting with changes on working examples so that you better understand parameters. • The text below focuses on 3D scripts. It is however important to understand that you always need a 2D script as well so that you can position the object on a plan. The 2D script must be kept as simple as possible and does not need to have much detail. It should just make it possible to correctly position the object and to recognize what object it is. • Adopt a consistent programming style : Graphisoft has published some guidelines for professional ArchiCAD users. These are not mandatory and if you want you can choose a style of your own. It is however important that you consistenly work in the same way : • If you prefer to indicate an amount with the prefix nr (ex. nrPoints for number of points), then do it always that way. • If you write ArchiCAD keywords in uppercase (as preferred in the cookbook), always write them in uppercase. • Use meaningfull self explaining variable names – no short acronymns. • If a variable consists of 2 or more words, then it is common in programming to start the first word in lowercase and the next words in uppercase. Ex. upperLeftCorner. • Add sufficient comment so that you can later easily understand what parameters mean.

1

2

2. Concepts
b. Polyline
A polyline is nothing more than a line consisting of multiple line segments. It is defined by a series of points that are interconnected, either by straight lines or arc segments. The additional status codes allow to create arc segments. GDL Reference Guide > Status Codes > Additional Status Codes We will demonstrate the polyline in 2D using POLY2_. We neglect the fill and concentrate on the contour line. Example 1 : basic polyline with straight segments
POLY2_ 6, 1, ! The polyline is defined by 6 points ! Only the contour is displayed - there is no fill inside ! Now the points are defined with coordinates x,y ! The third parameter 1 means segment starting from there is visible ! If you specify 0, the segment that starts there is invisible ! Point 1 0,0 ! Point 2 4,0 ! Point 3 7,3 ! Point 4 7,7 ! Point 5 0,7 ! Point 6 0,0

0, 0, 1, 4, 0, 1, 7, 3, 1, 7, 7, 1, 0, 7, 1, 0, 0, 0

If we specify a zero as third parameter for point 7,3 : 7, 3, 0, ! Point 3 7,3 Then the 3th segment starting at 7,3 is omitted and invisible

3

Example 2 : Polyline with an arc segment. We will not only define points but also add information on the arc segment. As a result, we will have 7 defining lines. There are several possibilities to draw an arc segment. We will define the centerpoint of the arc and the endpoint. The startpoint is the point before we started the arc definition.
POLY2_ 7, 1, ! The polyline is defined by 7 instructions ! Only the contour is displayed - there is no fill inside ! Now the points are defined with coordinates x,y and special lines for the arc ! The third parameter 1 means segment starting from there is visible ! If you specify 0, the segment that starts there is invisible ! Point 1 0,0 ! Point 2 4,0 ! We define an arc segment : ! Use code 900 to define the centerpoint of the arc at 4,3 ! Use code 3000 to draw the arc from previous point 2 to endpoint 7,3 ! The code to draw the arc is 3000 - we add the code 1 to make the next segment visible ! Point 4 7,7 ! Point 5 0,7 ! Point 6 0,0

0, 0, 1, 4, 0, 1, 4, 3, 900, 7, 3, 3001, 7, 7, 1, 0, 7, 1, 0, 0, 0

Example 2 : Polyline with 2 arc segments. We can define consecutive arc segments.
POLY2_ 8, 1, 0, 0, 1, 4, 0, 1, 4, 3, 900, 7, 3, 3001, 7, 5, 900, 7, 7, 3001, 0, 7, 1, 0, 0, 0 ! The polyline is defined by 8 instructions ! Only the contour is displayed - there is no fill inside ! Point 1 0,0 ! Point 2 4,0 ! We define an arc segment : ! Define the centerpoint of the arc at 4,3 ! Draw the arc from previous point 2 to endpoint 7,3 ! The code to draw the arc is 3000 - we add the code 1 to make the next segment visible ! We define an arc segment : ! Define the centerpoint of the arc at 7,5 ! Draw the arc from previous point 2 to endpoint 7,7 ! The code to draw the arc is 3000 - we add the code 1 to make the next segment visible ! Point 5 0,7 ! Point 6 0,0

4

1. 4.3 ! The code to draw the arc is 3000 . we define another direction dx = -1. 1. 1. It is also possible to have it “bulging in” by defining the direction of the arc segment in point 7. 1. 7.3. the arc is bulging out. 1001. 900. 800. 3. POLY2_ 8.3 ! Draw the arc from previous point 2 to endpoint 7.Example 3 : Polyline with 2 arc segments and direction specified In the previous example. 1. 0 ! We define an arc segment by centerpoint and end point ! Define the centerpoint of the arc at 4. 0. 7. Example 4 : Polyline with 2 arc segments and direction specified As a variation on example 3. 0.3 to endpoint 7. 0. 0. -1. 0. 3001. 0.7 . 7. 4. -1. 5 . 0. 800. dy = 1 So. 3. 7. In that case we only have to specify the endpoint – the centerpoint will be automatically be calculated by ArchiCAD.we add the code 1 to make the next segment visible ! We define an arc segment by tangens in the startpoint and end point ! Define the tangens (direction) of the arc in the startpoing by dx=-1 dy=0 ! Draw the arc from previous point 7.

1. 1 In the simple example above. let GDL remember each point in a memory buffer and then let GDL pass all results as parameters. 1*scale. cos θ y = 2. 0. 1*scale. After the call of GET.2 Parameter and parameter buffers The creation of GDL objects exists in calling “GDL-functions” with a series of parameters.1. sin θ We can easily program the calculation of 36 values . 0. Take a simple example : POLY2_ 5. 1 For really complex objects. 0. 1. we only used a small number of fixed parameters. 1. 0. The parameters need not be fixed but can be calculated. Fortunately GDL offers a more easy way. The call to POLY_2 then becomes : POLY2_ 108. 0. 1.0. 0. 0. 1. GET (108) Using this technique we do not have to note down 108 points one by one. 1. 1.1. 1. for i = 1 to 36 PUT 3*cos(10*i) PUT 2*sin(10*i) PUT 1 next i ! calculate x coordinate and PUT it in a memory buffer ! calculate y coordinate and PUT it in a memory buffer ! PUT also the 3th parameter on each line in the POLY_2 After this operation. 1. the memory buffer contains the 36*3=108 parameter values for the POLY2_ command. 0*scale. 0*scale.and store them in a memory buffer using the command PUT. 0. 1*scale. If we want to make the object scalable we can introduce a parameter scale and write POLY2_ 5. 1.1*scale. we use POLY2_ to draw an ellipse defined by x = 3. We can now pass them all 108 to POLY_2 by retrieving them from the memory buffer using the command GET (108). 1.one each 10° . It is also possible to read values from the buffer while keeping them in the buffer. 6 . 1. We can calculate the points before. the 108 values are no longer available in the memory buffer. a large number of points need to be calculated. We could just calculate the points beforehand and then introduce the results one by one them as parameters to the GDL-function. 1. This item is presented in the GDL reference in paragraph GDL Reference Guide > Control Statements > Flow Control Statements As an example of this. 0. 1.

Ex. 1. 0. 2. PRISM (several variants) • by defining the cross section with EXTRUDE. PRISM is limited to polylines with straight line segments. Columns c. Colums with fixed diameter Columns with a fixed diameter of any form can be created by • using basic shapes like CYLIND. 0. PRISM 7. 2. 2. 1. PRISM With PRISM and its more complex variants. In example below the polyline is defined by 7 points. 1 BRICK 1.3. 1. 1. • by defining the outline of the column with REVOLVE. 0 ! 7 points for the polyline of the cross section ! Height 5 The resulting cross section and column : 7 . 5 ! Height ! Radius ! width ! depth ! height Ex. we can define arbitrary cross sections. BRICK. The contours of the cross section are defined with a polyline. CYLIND and BRICK CYLIND 5. -1. 2. 0. 0. 5. TUBE. 0.

0 ! The cross section is a polyine described by 6 instructions ! The height of the column is 5 ! First point of the polyline cross section ! Second point of the polyline cross section ! We define an arch with centerpoint at 1.5. The resulting cross section and column : Imagine that we do not want to see the first face starting at 0.1 ! Next point ! Next point Next to each x. PRISM_ PRISM_ is an extension of PRISM where additional status codes allow to • Create arc segments • Control the visibility of edges and surfaces • Define holes An example of use of arc similar to the examples of polylines. The result is : As can be seen in the picture. 1. the rounded face approximated by a number of straight surfaces. 15. 15. 0. 3015.0. 8 . The smoothness of the rounding can be enhanced by increasing the resolution using the command RESOL. 900. 1. RESOL 128 results in a much smoother surface.0. PRISM_ 6. y coordinate we now specify status code 15 in order to : • Display the contour line at top and bottom for the segment starting at that point • Display the side faces for the segment starting at that point • Display the vertical edges for the segment starting at that point The different possible values for status codes are described in the reference guide. 5. 1. 15. 1. 0. 0. 1.Ex. 0. 0. 1. 0. We define a status code 0 for point 0. 0.5 ! The arch is drawn with endpoint 1.

! 32: top edges are visible 0. ! 4: side (closing) surface is present. ! Next point 0. ! Flags that dermine visibiity ! 1: base surface is present.y. 1. ! Second point of the polyline cross section 1. 1. 5. ! The arch is drawn with endpoint 1.z coordinates of displacement . ! First point of the polyline cross section ! The additional parameter 1 means that edge is not drawn ! but only used to display the contour 1. 0. ! The cross section is a polyine described by 6 instructions 0. ! 2: top surface is present. we specify 0 as third parameter for each point . 1 ! Next point The resulting column : If we want to explicitly display the lateral edges. 3001. 0. The other variants allow to specify top and bottom surfaces and are not interesting for columns. We can define a displacement of bottom and top surface EXTRUDE 6. ! We define an arch with centerpoint at 1.5. 1.1 0. 0. ! The x. 901. 0. EXTRUDE We can use EXTRUDE in a similar way as PRISM in order to define the cross section. side.height of the column is 5 1+2+4+16+32.There are still a large number of variants to PRISM. 1. 1. The usage of flags and status to control visibility is different.5 1. bottom. CPRISM_ for example allows to define the materials of top. Ex. 1. 0. 9 . ! 16: base edges are visible.

5*sin(0). 900. 3001. located at -30° on a radius of 4. 5 sin 0°. ! Define startpoint 1 on circle at radius 4 and angle 30° In order to define an arc segment to point 2. -270° -240° -210° -300° 30° Point 1 -180° Point 4 -150° Point 3 -120° Centerpoint 1 Point 2 Centerpoint2 -60° -30° -90° We start at point 1 in the picture. So the coordinates are 5cos 0°. 4*sin(30). we can add an incliniation to the column although that is not required for most columns. 4 sin 30°. 1.cos(-30°). That point is located at 30° on a radius of 4. we investigate a typical Roman column.By specifying non zero values for the x and y displacement.5 As a more interesting example of fixed diameter column.1. > 4*cos(-30). So.sin(-30°). > 5*cos(0). the coordinates are 4 cos30° . 4*sin(-30). If we specify 1. The centerpoint 1 is located at 0° on a radius of 5. The coordinates of this point are 4. we first define a centerpoint for the arc. > 4*cos(30). ! Draw the arch from point 1 to point 2 located at radius 4 and angle -30° We continue by defining centerpoints and endpoints for the arches. 4. ! Define centerpoint of an arch at radius 5 and at angle 0° We then draw an arch till point 2. 10 .

3001. 1+2+4+16+32.endpoint and centerpoint ! To define a centerpoint . 4*sin(30). 900 ! Go angleStep degrees further and PUT 3 parameters for the arc end point on the memory buffer angle = angle . The advantage is that we can choose another value for the number of Sides. 5*sin(-180). height =40 nrSides =6 ! we will shift each time with 360/(NrSides*2) . 4*sin(angle). Ex. 5*sin(-60). 11 . 0. 4*cos(-150). 4*cos(-270). 16 sides gives us a more realistic Roman column. 4*sin(-30).3001. 900. 5*sin(-300). 1+2+4+16+32. 5*sin(-120). 4*cos(30). 0. 3001. 4*cos(-90).use code 3000 EXTRUDE 13. Each point is shifted by 30°. 5*cos(-120). 4*sin(-330). height.use code 900 ! To draw an arch from previous point to a new point x. we have defined 7 points (with startpoint = endpoint) and 6 centerpoints. 900. 3001. 5*cos(-60). 5*cos(-300). we will shift each 30° angleStep = 360/(NrSides*2) ! we start the first point at angleStep angle = angleStep ! PUT the parameters for the startpoint on the memory buffer PUT 4*cos(angle). 5*sin(-240). 5*cos(-180). 5*sin(0). 900. 1. 4*cos(-210). 4*sin(-90). 4*sin(-270). 1 FOR nr=1 TO nrSides ! Go angleStep degrees further and PUT 3 parameters for the Centerpoint on the memory buffer angle = angle . When we are back to the start. 3001 NEXT nr ! We have 1 defining line for the startpoint + 2 defining lines per side (centerpoint and arc andpoint) ! Each defining line has 3 values nrDefiningLines = 1+2*nrSides nrDefiningValues = 3*nrDefiningLines ! Call EXTRUDE and retrieve parameters from memory buffer EXTRUDE nrDefiningLines. 900.in case nrSides=6. 5*sin(angle). 0.angleStep PUT 5*cos(angle). 0. 900. 40.angleStep PUT 4*cos(angle). 4*sin(-150). 900. 5*cos(-240).y . 4*sin(-210). ! Example of extruded polyline using arches defined by startpoint . 4*cos(-330). 5*cos(0). 4*cos(-30). We first need to define a starting point and then use a loop to create 6 centerpoints and arc endpoints. 3001 ! Define startpoint 1 on circle at radius 4 and angle 30° ! Define centerpoint of an arch at radius 5 and at angle 0° ! Draw the arch from point 1 to point 2 located at radius 4 and angle -30° ! Define centerpoint of an arch at radius 5 and at angle -60° ! Draw the arch from point 2 to point 3 located at radius 4 and angle -90° ! Define centerpoint of an arch at radius 5 and at angle -120° ! Draw the arch from point 3 to point 4 located at radius 4 and angle -150° ! Define centerpoint of an arch at radius 5 and at angle -180° ! Draw the arch from point 4 to point 5 located at radius 4 and angle -210° ! Define centerpoint of an arch at radius 5 and at angle -240° ! Draw the arch from point 5 to point 6 located at radius 4 and angle -270° ! Define centerpoint of an arch at radius 5 and at angle -300° ! Draw the arch from point 6 to point 7 located at radius 4 and angle -330° The resulting cross section and column : We can easily generalize this by programming the calculations and use put/get commands to store/retrieve elements from a memory stack. 3001. GET (nrDefiningValues) This script has exactly the same result.Centerpoints and endpoints follow each other by 30°. 4*sin(angle).

25 nrSides=20 !Start object creation ! we will shift each time with 360/(NrSides*2) . radiusCenterpoints*sin(angle). The factor 1.angleStep PUT radiusPoints*cos(angle). We will generalize this as radius R for the defining points and radius R*1. 900 ! Go angleStep degrees further and PUT 3 parameters for the arc endpoint on the memory buffer angle = angle .8 nrSides=6 Delivers the following cross section. radiusPoints=2 radiusCenterpoints=radiusPoints*0.25 for the centerpoints. 0. 1+2+4+16+32.The only thing that we still have to parameterize is the radiuses of the defining points and centerpoints. 0. radiusPoints*sin(angle). 12 .angleStep PUT radiusCenterpoints*cos(angle). radiusPoints*sin(angle). height.25 is arbitrary choosen and somehow determines the depth of the notches. we will shift each 30° angleStep = 360/(NrSides*2) ! we start the first point at angleStep angle = angleStep !Startpoint put radiusPoints*cos(angle). Ex. In our example we had taken respectively radius 4 and radius 5. The final script then becomes : ! Parameters that can be changed height=40 radiusPoints=2 radiusCenterpoints=radiusPoints*1. 1 FOR nr=1 TO nrSides ! Go angleStep degrees further and PUT 3 parameters for the Centerpoint on the memory buffer angle = angle .GET(nrDefiningValues) We can easily derive an interesting variant of this type of columns by putting the center points on a radius smaller than the defining points.in case nrSides=6. 3001 next nr ! We have 1 defining line for the startpoint + 2 defining lines per side (centerpoint and arc andpoint) ! Each defining line has 3 values nrDefiningLines = 1+2*nrSides nrDefiningValues = 3*nrDefiningLines EXTRUDE nrDefiningLines.

! Simpliest column with revolve Roty -90 REVOLVE 2. 1. 0 ! Polyline of 2 points ! Revolve 360° ! Flag 1= base present Flag 2 = bnd present. 1+2. 1. 1. 1. 10. ! Point 1 ! Point 2 13 . then the columns is standing up. 0. 0. 1+2. 0 ! Polyline of 2 points ! Revolve 360° ! Flag 1= base present Flag 2 = bnd present. 0. This line is revolved around the x-axis and generates a flat lying column ! Simpliest column with revolve REVOLVE 2.Ex. 0. 360. REVOLVE With revolve we can turn a line around an axis so that it generates a surface. 360. The simpliest example is where the line only exists of 2 points with x. 10. ! Point 1 ! Point 2 If we rotate this by -90° around the y-axis (roty -90°).y coordinates.

0. 0.0] 0. 0. 0.1.0.5.5. 15.0.5. REVOLVE offers much more possibilities and allows to create any round column with varying diameter of cross sections. 0. 90. 1. diffuse. DEFINE MATERIAL "Concrete" 1. ! shining [0.2 Columns with variable diameter Columns with a variable diameter are created with the commands CONE. 0. RADIUS height=10 radiusBottom=3 radiusTop=2 CONE height. FPRISM FRISM makes it possible to define a PRISM where the top cross section is smaller than the bottom cross section. radiusBottom. "Concrete".. nrPoints.5. 1.5. inclination_height. 15. 0.0. Using CONE and FRISM we can create simple columns were the diameter of the cross section varies linearly from bottom to top.0. ! Here follow the 7 points of the polyline of the cross section 0. 0. ! ambient.0. 15. -0. inclination. 0.1. 15 14 . ! surface RGB [0. radiusTop.8.4] nrPoints=7 height = 5 inclination_height=4 inclination=85 ! Number of points defining the polyline of the cross section ! The total height of the column ! The surfaces at the top are inclined over a height of inclination_height ! The inclination angle of the top is 85° FPRISM_ "Concrete". 15.0. 0. 0.0. "Concrete". 15. 15.100] 0 ! transparency attenuation [0. height . specular.8.. 1. FPRISM and REVOLVE. -0. 90 ! parameters 90 are inclination of top and bottom surface compared to z-axis.5.. Ex.0. ! The cross section is a hexagon. 0. -0. -0.5. Ex.5.8.3.. ! The extra parameter 15 determines visibility of edges and surfaces -1.0. "Concrete".0.0] 1.transparent ! coefficients [0.0.

0. 0. 0.0. 1. 1. REVOLVE With REVOLVE we define the outline (shape) of column as a polyline – the top and bottom must not be specified.y plane and then rotated around the x-axis REVOLVE 4. 1. 0 ! Polyline of 4 points ! Revolve 360° ! Flag 1= base present Flag 2 = bnd present.4.0.0. 1. 10.0.0. ! Point 1 – bottom point ! Point 2 ! Point 3 ! Point 4 – top ponit The resulting column with varying diameter lies flat : 15 . 1.The column seen from side and top : Ex. 2. 1+2. The outline is drawn in the x. 0. 0. 360.4.

0.0. 1. 1. 10. 10.0. 2.We can draw the polyline of the outline with a mixture of straight and arc segments. 1. 1.4. 10. 0. 1. 0. This makes it possible to create a wide variety of columns.0.0.4. A simple example with 1 arc segment at the top.0.0.4. 0.0. 0.2. 1+2. REVOLVE 6. 900. 3000 ! Polyline of 6 defining lines ! Revolve 360° ! Flag 1= base present Flag 2 = bnd present. 1.centerpoint ! Define arc .0. 1. ! Point 1 ! Point 2 ! Point 3 ! Point 4 ! Define arc .endpoint 16 . 360.

5.y surface. 14 ! the polyline of the cross section is a rectangle and exists of 4 points ! we will sweep the cross section along a sweep path consisting of 6 points ! between each of these 6 points. 20. 2.5. 0. so we sweep upwards on the z-axis This example in itself is not very useful but the idea can be extended to much more interesting forms. -0. It is also possible to define a scaling factor that is applied to each consecutive point on the space path the crossection. -1.3.3 Twisted columns Twisted columns are created with the command SWEEP. 0. 0. 6. The cross section in x.y and the first step upwards the z-axis are shown below : Cross section moved one step upwards on z-axis and rotated by 20° Polyline of cross section in x. 0. 1. 0. 8. We define the polyline of the cross section in the x. we will SWEEP across a space path parallel with the z-axis.show the existence of the bottom .0. 12.z while at the same time it can be rotated. 1+2+4+16+32. 0. 10.y surface – sweep it along the z-axis while at the same time rotate the rectangle with 20° each time we move upwards on the z-axis. -0.0.top . We will move upwards 6 times. 0. 0.it is possible to scale the cross section for each of the sweep path ! Mask . 0.y. 1.0. 6.y of the polyline of the cross section ! Here are the 6 points x. 0. the cross section will be rotated over 20 degrees ! scale factor .5. 0. 0. -1.y SWEEP 4. 0. We will draw a simple rectangle in the x.y.0. 0. The concept can best be demonstrated with an example that is not too complicated. It is the rotation that results in a twisted form.z of the polyline sweep path ! Only the z coordinate is different from 0. 1. In the case of straight upstanding columns. 0.5. 0. 0. 17 . 0. This cross section can be swept on a space path in x.edge surfaces ! Here are the 4 points x.

4*cos(-150). 5*cos(-60). 5*cos(0). 4*sin(-30). 5*cos(-300).use code 900 ! To draw an arch from previous point to a new point x. 3001. ! Example of extruded polyline using arches defined by startpoint . 900. 4*sin(-150). 4*sin(-90). 4*cos(-30).An interesting form appears if we rotate the “Roman column” -270° -300° -240° -210° 30° Point 1 -180° Point 4 -150° Point 3 -120° Centerpoint 1 Point 2 Centerpoint2 -60° -30° -90° The first simple model was described as. 1+2+4+16+32. 3001. 5*cos(-180). 4*cos(-270). 4*cos(-210). 5*cos(-120). 4*cos(-330). 4*sin(-210). 5*sin(-180). 900. 4*cos(30).3001. 900. 3001. 4*sin(-330). 3001. 0. 1. 900.use code 3000 EXTRUDE 13. 5*sin(0). 4*sin(30). 5*sin(-240). 4*sin(-270). 900. 0. 5*cos(-240). 5*sin(-120). 900. 5*sin(-300). 3001 ! Define startpoint 1 on circle at radius 4 and angle 30° ! Define centerpoint of an arch at radius 5 and at angle 0° ! Draw the arch from point 1 to point 2 located at radius 4 and angle -30° ! Define centerpoint of an arch at radius 5 and at angle -60° ! Draw the arch from point 2 to point 3 located at radius 4 and angle -90° ! Define centerpoint of an arch at radius 5 and at angle -120° ! Draw the arch from point 3 to point 4 located at radius 4 and angle -150° ! Define centerpoint of an arch at radius 5 and at angle -180° ! Draw the arch from point 4 to point 5 located at radius 4 and angle -210° ! Define centerpoint of an arch at radius 5 and at angle -240° ! Draw the arch from point 5 to point 6 located at radius 4 and angle -270° ! Define centerpoint of an arch at radius 5 and at angle -300° ! Draw the arch from point 6 to point 7 located at radius 4 and angle -330° 18 . 4*cos(-90). 5*sin(-60).y . 40.endpoint and centerpoint ! To define a centerpoint .

3001. 0. 0.0. 0.6. ! Draw the arch from point 5 to point 6 located at radius 4 and angle -270° 5*cos(-300). 0. 900. 20.0. 5*sin(-300).0.24.0. 0.28.34. 900. 0.3001. 0.helical/spiral form SWEEP 13.0.8.10.0.0. ! Draw the arch from point 4 to point 5 located at radius 4 and angle -210° 5*cos(-240). so cross section does not change in size ! Mask determing visibility : base . ! Define centerpoint of an arch at radius 5 and at angle -60° 4*cos(-90).30.0.0.26.0. ! Define centerpoint of an arch at radius 5 and at angle -300° 4*cos(-330). 0. ! Draw the arch from point 2 to point 3 located at radius 4 and angle -90° 5*cos(-120).0.0. 1 ! Define startpoint 1 on circle at radius 4 and angle 30° 5*cos(0).36.22.We can re-use the description of the cross section for the twisted column and add the description of the sweep path along the z-axis. 18.0. 900 ! Define centerpoint of an arch at radius 5 and at angle 0° 4*cos(-30).y. 0.4. 5*sin(-120). 0.0. ! Draw the arch from point 6 to point 7 located at radius 4 and angle -330° ! Now follow the 20 points x. ! Draw the arch from point 1 to point 2 located at radius 4 and angle -30° 5*cos(-60). 1+2+4. ! Define centerpoint of an arch at radius 5 and at angle -240° 4*cos(-270). we rotate over 18° ! The scale factor between each step up is 1. The form that we become is called solomonical column named after king Solomon who constructed the temple in Jeruzalem.12. 5*sin(-60). 0. 5*sin(0). 900.20. 4*sin(-30).32. 4*sin(30). 900. 0.0. 0. 5*sin(-240). ! The polyline of the cross section is described by 13 lines ! We will sweep the cross section upwards along the z-axis over 20 points ! With each upwards step.0.16. 0.z of the sweep path along the z-axis 0.38 19 . 0. 5*sin(-180). 4*sin(-210). 900. ! Define centerpoint of an arch at radius 5 and at angle -120° 4*cos(-150). 3001.0. 4*sin(-90). 3001. 0. ! Draw the arch from point 3 to point 4 located at radius 4 and angle -150° 5*cos(-180).0.18. 0. no edges ! Now follow the 13 lines of the polyline of the cross section 4*cos(30).0.14.0. 0. 3001. 4*sin(-330). 4*sin(-150).2. 4*sin(-270).top .side surfaces visible. 1. ! Define centerpoint of an arch at radius 5 and at angle -180° 4*cos(-210). 3001. ! Solomonical column . 0.0.

in case nrSides=6.z of the sweep path along the z-axis GET(nrDefiningValues+ 3* nrSweepPoints) 20 . we will make the number of points along the sweep path variable : nrSweepPoints. we will shift each 30° angleStep = 360/(NrSides*2) ! we start the first point at angleStep angle = angleStep !Startpoint put radiusPoints*cos(angle). Over the total height of the column. we will have (height/heightOneRotation) rotations. Because one rotation is 360°.y. radiusCenterpoints*sin(angle).We can derive a parametrical script as described in the paragraph of the Roman column. so per sweep point. radiusPoints*sin(angle). we rotate over 18° ! The cross section does not change in size ! Mask determing visibility : base . this means an angle per sweep point of (height/heightOneRotation)/ nrSweepPoints * 360°. 1+2+4. 1. (nr-1)*heightPerPoint NEXT nr SWEEP nrDefiningLines.angleStep PUT radiusPoints*cos(angle). For the rest. we have (height/heightOneRotation)/ nrSweepPoints rotations.25 nrSides=6 heightOneRotation=40 nrSweepPoints=20 !Start object creation ! we will shift each time with 360/(NrSides*2) . 1 FOR nr=1 TO nrSides ! Go angleStep degrees further and PUT 3 parameters for the Centerpoint on the memory buffer angle = angle . 0. ! The polyline of the cross section is described by nrDefiningLines lines ! We will sweep upwards along the z-axis over nrSweepPoints points ! With each upwards step. This is spread over “nrSweepPoints” points. ! Parameters that can be changed height=40 radiusPoints=2 radiusCenterpoints=radiusPoints*1.angleStep PUT radiusCenterpoints*cos(angle). 3001 NEXT nr ! We have 1 defining line for the startpoint + 2 defining lines per side (centerpoint and arc andpoint) ! Each defining line has 3 values nrDefiningLines = 1+2*nrSides nrDefiningValues = 3*nrDefiningLines ! We now calculate the sweep path totalNrRotations =height/ heightOneRotation anglePerSweepPoint = (totalNrRotations/ nrSweepPoints)*360 heightPerPoint = height/nrSweepPoints FOR nr=1 to nrSweepPoints PUT 0. There is one extra aspect that we need to parameterize : the rotation. no edges ! Now follow the nrDefiningLines lines of the polyline of the cross section ! and the nrSweepPoints x. nrSweepPoints. What really is important is the “speed of rotation” : does it spiral up slowly or fast? We will therefore define the parameter heightOneRotation : the height needed to get one full rotation. anglePerSweepPoint.top . This allows to control the resolution. radiusPoints*sin(angle).side surfaces visible. The parametrical script then becomes. 900 ! Go angleStep degrees further and PUT 3 parameters for the arc endpoint on the memory buffer angle = angle .

If we lower the height for one rotation to 10 meter. If we lower the height for one rotation too much. we can increase the number of sweep points from 20 to 100 : The same with only 4 sides for the cross section : 21 .We can now easily change height. we will need to increase the number of SweepPoints to increase the resolution. cross-section number of sides. height for one rotation. we get : To get a better resolution. cross-section diameter.

particularly if the diameter of the cross section is not constant. 22 .Another example : We can become all sorts of good looking twisted columns by choosing different cross sections.

0.8. -0. 5. SIN(345).8. 0.2.4. 0. 4. SIN(30). 1. SIN(330).0. SIN(210). SIN(270).8. 1.0. 0. 1. SIN(360). 1. SIN(375). 27. 0. COS(330). COS(90).4. 3.6. 0. 0. SIN(255).0. 2. SIN(240).2. 0. COS(375).8 END "PUTSEGMENT": CYLIND 4.6. SIN(285).0. COS(360). COS(270). COS(180). 0. COS(210). 1. 3.0. COS(15).0 TUBE 4. 0. COS(120). COS(345). SIN(90). 0. 0. SIN(315). 0. 0. 0. COS(75). COS(315). 0.8 GOSUB "PUTSEGMENT" ADDZ 4.3. 1.4. 2. SIN(0). 4. 0 RETURN 23 . 0. COS(135). 4. SIN(165). SIN(75). 2. 2. SIN(105). COS(225). COS(285). COS(60).8. COS(165). 0. COS(255). 1. SIN(15).0.0.8 GOSUB "PUTSEGMENT" ADDZ 4. COS(0). 0. 2. 0. 0. 2. 1+2+16+23.4.2.6. COS(240). SIN(225). COS(105). COS(-15). 1. 4. COS(30). 1.0 .8 GOSUB "PUTSEGMENT" ADDZ 4. 0. 0.0. 0. SIN(-15). 0. 1. 0. COS(300). 3.8 GOSUB "PUTSEGMENT" ADDZ 4. COS(195). SIN(180).2.0. 1.4. SIN(60).8. SIN(150).6.0. 0. 0. 0. 0.8.6.8.4 Special columns GOSUB "PUTSEGMENT" ADDZ 4.0.8 GOSUB "PUTSEGMENT" ADDZ 4.0. 3. 1. SIN(120).2. 0. 2.0 . 3. SIN(45). SIN(135).4.8 GOSUB "PUTSEGMENT" ADDZ 4. SIN(300). 0. COS(45).8 GOSUB "PUTSEGMENT" ADDZ 4. 0. 4.2. COS(150). SIN(195).

24 .

4. They can be modeled with REVOLVE or SWEEP. 25 . Balusters Balusters are similar to complex columns.

With TUBE it is possible to define the angle of the first and last surface. therefore. With TUBE we can easily create a tube with a constant cross section. The tube is defined by its cross section (a two-dimensional polyline contour) and the path that the tube follows (a 3 dimensional polyline in x.). The intersection with the first and last segment. The TUBE command is can best be demonstrated by some simple example where the 3D polyline remains in 2 D: z=0. existing of one or more segments. Imaginary segment after last segment.y. The definition of these extra 2 imaginary segments is made by 2 extra points. Last surface First surface Bisector plane Bisector plane It is easy to understand how 2 segments meet and in mathematical language. we define two extra imaginary segments : one before the first and after the last. To that purpose. Cornices 5. SWEEP however offers the additional possibility to have a not constant cross section. the cross section of the second segment makes an angle of 90° with the horizontal.5. Imaginary segment before first segment. teh cross section makes an angle of (90+45)/2=67. define the angle of top and bottom surface. Therefore TUBE is basically is similar to SWEEP : a two-dimensional polyline swept across a 3D path. Same cross section of each segment.5°.z. this is described as “the cross section where two segments meet lays in the bisector plane” : The cross section of the first segment makes an angle of 45° with the horizontal. A simple straight tube : 26 .1 The command TUBE Cornices are most easily modeled with TUBE. Below an example with 3 segments – each segment has the same cross section.

3 and 5.3 0. 0. 1.3 0. 3 0. y 0. 3 5. The last real point is 5. 0.0. 5. 7. 0. 0.0.3 make a 90° turn with respect to the tube. 0.0 5. 0.0. 1.0. 0. 0. 0. 0. 0. 1. 0 x 27 . the first and last surfaces are orthogonal with the tube path. 1. ! The first point only is there to define the imaginary section ! that determines the rotation of the first surface ! The first real point of the tube segment ! The last real point of the tube segment ! The last point only is there to define the imaginary section ! that determines the rotation of the last surface As you can see from the picture.0.TUBE 5. 0.0 x As a result the first and last surfaces lay at 45° angles.0 and 7.0. 0. The imaginary first and last extra segments defined by points -1. the imaginary first and last extra segments. 0. -1. 0. 1. 4. 0. 0 5. 1+2+16+32. the first real point of the tube path is 0. 0. 2. y 5. 0. 2. 1.0 lay in the same direction as the tube. 0 ! The cross section is described by 5 points ! The path is described by 4 points ! Mask that determines the surfaces that are visible ! The definiton of the 2D polyline of the cross section ! The 3th parameter 1 indicates that edges are not visible ! The definition of the 3D polyline of the cross section ! The 4th parameter 0 indicates the angle that the surface makes. defined by extra points 0. In the next example. 1. Therefore.

1. 0. 0. 0. 0. ! The 2D polyline has 5 points 5.y. 0. 0. 3. 0. 0. 0. 0. 0. ! Mask defining visibility of surface ! Points defining the 2D contour – the contour must be closed. 0. 0. 0 Result : A simple tube with a 90° elbow TUBE 5. 0. 0 28 . 2. 0. 0. the edges are displayed. 0. ! The 3th parameter defines if lateral edges are visible or just used for displaying the contour ! If 0. 0.TUBE 5. ! Points (x. 0. 0. 0. ! Points (x. the edges are displayed.z) defining the 3D sweep path ! The fourth parameter defines an angle. 0. 0. 0. 0. ! The 3D polyline has 5 points 1+2+16+32. 0. 0. 0. 0. 0. 0. 0. 5. 5. 2. 0.z) defining the 3D sweep path ! The fourth parameter defines an angle. 1. 7. 0. 0. 5. 7. 0. ! The 2D polyline has 5 points 4. 0. 5. 2. 0. 3. 0. 0. 2. 1. 1. 0. 0. 0. ! The 3D polyline has 4 points 1+2+16+32. 0. 0.y. ! The 3th parameter defines if lateral edges are visible or just used for displaying the contour ! If 0. ! Mask defining visibility of surface ! Points defining the 2D contour – the contour must be closed. 0. 0. 0.

0. 2. 0.0. 0. 0. 1. 0. 0. 0.0. 0. 0. 0. We can extend this example to 5 segments. 7.0. 1.0. 0.0.0. 0. 0.0. 0.5.0. 0. 0. 0.0.5. 4. 0. 20. 1+2+16+32. 0. 1. 0. 0. 0. 0. 1+2+16+32. 1. 10. 0. 2. 0. 0.0. 0.0.5.0. 4. 3000.0.0. 0.0. 0.0. 0 ! The 2 D polyline of the cross section is described by 7 lines ! The path is described by 4 points ! Mask that determines the surfaces that are visible ! The definiton of the 2D polyline of the cross section ! The 3th parameter 0 indicates that edges are visible ! Define the centerpoint of the arc ! Define the end point of the arc ! The definition of the 3D polyline of the path ! The first point only is there to define the imaginary section ! that determines the rotation of the first surface ! The first real point of the tube segment ! The last real point of the tube segment ! The flast point only is there to define the imaginary section ! that determines the rotation of the last surface It is clear that we can draw cross sections with multiple arcs and straight lines and therefore can create cornices of any complexity. 0. 1. TUBE 7. 0. 5. 0. 1. 0. -1. 0. 0. 0. 0. -1. 0.0. 0. 0. 3000.0. 0. 0. 0. 1.5. 900. 1. 0. 0.0. 0.0. 0. 0.5. 0. 0.0. 1. ! 5. 1. 0.2 Corniches and frames with TUBE We can also use special status codes as 3th parameter of the 2D polyline points to create arc’s in the 2 D polyline of the contour. 0.0. 0. 900. The most simple example : TUBE 7. 0. 0. 15. 0. 0. 10. 0.0. 0 ! The 2 D polyline of the cross section is described by 7 lines ! The path is described by 4 points ! Mask that determines the surfaces that are visible ! The definiton of the 2D polyline of the cross section ! The 3th parameter 0 indicates that edges are visible ! Define the centerpoint of the arc ! Define the end point of the arc ! The definition of the 3D polyline of the path ! The first point only is there to define the imaginary section ! that determines the rotation of the first surface ! The first real point of the tube segment ! The last real point of the tube segment ! The last point only is there to define the imaginary section ! that determines the rotation of the last surface 29 . 0. 0. 0. 5. 0. 0.

10. 0. 0. 0. 0. 0. 0. 0. 1.0. 0. -1. -1.0.0.0. 1+2+16+32.0. 0. 3000.0.0. 0. 0. 0 ! The cross section is described by 7 lines ! The path is described by 7 points ! Mask that determines the surfaces that are visible ! The definiton of the 2D polyline of the cross section ! The 3th parameter 0 indicates that edges are visible ! Define the centerpoint of the arc ! Define the end point of the arc ! The definition of the 3D polyline of the path ! The first point only is there to define the imaginary section ! that determines the rotation of the first surface ! The first real point of the tube segment ! ! The last real point of the tube segment ! The last point only is there to define the imaginary section ! that determines the rotation of the last surface . 1. 0. 7. 0. 10. 0. 1. 0.0. 0. 10. 0. 0. 0. 0. 0.5. 1. 0.0. 0.0. 30 . 0. 900. 0.TUBE can also be used to draw frames. 0. 1. TUBE 7. 0. 0. 0.5. 0. 0.0. 10. 1. 0.0. 0. 0.

0. 17. 0. 2. 1.0.1. 0. 0. 0. 0.4. 6+4*SIN(165). 4 . 0.4*COS(120).5. 0. 6+4*SIN(60). 0. 6+4*SIN(45). 1. 6+4*SIN(15).0.0. 0. ! The path of the tube is defined by 17 points -1. 0. 1. 6+4*SIN(150).4. 4 . 0.4*COS(15). 0.5. 1.0.4*cos(165). 4 . 16+32.4*COS(75). 0.4*COS(135).0. 4 . 0.4*COS(150). 8. 0.5. 6+4*SIN(105). 4 .4*COS(60). 0. 0. 0. 0. 0. 8. 0. 0. 0. 0. 1.0.5. 0. 0. 6+4*SIN(135). 0. 6. 4. 0. 1. 0 ! The polyline of the cross section is defined by 12 lines ! The path of the tube is defined by 17 points ! Mask that determines visibility of surfaces ! The polyline of the cross section is defined by 12 lines 31 .0. 0. 4 . 0. 0. 0.0.4*COS(105). 0.0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 4 . 0.0. Example.0. TUBE 12. 0. 0. 0. 0. 0. 0. 0.4*COS(30). 0. 0. 6+4*SIN(30). 6+4*SIN(120). 0. 4 . 1. 0. -1. 6+4*SIN(75). 0.3. 0.4*COS(45). 0. Arches Arches can easily be made with TUBE.4. 0. 0.1. 8.0. 0. 4 . 10. 0. 4 . 0.3. 0.4. 6.6. 2. 0.

0. In example below. 0. 0. -4*COS(15). 6+4*SIN(45). ! The path of the tube is defined by 17 points ! This path is now symmetrical with respect to x-axis -1. 0. 0.0. the arch is symmetrical around x-axis. 0.4. 0 32 . 0. 0.0. 6+4*SIN(60). 6+4*SIN(105). 0. 6+4*SIN(165). 0. 0. 0. 0. 6. 0. 6+4*SIN(15). 0. 0. 0. -6. ! The path of the tube is defined by 17 points 16+32. -4*COS(45).0. 6+4*SIN(120). -4*COS(150). 0. -4*COS(105). -4*COS(135).0. 0. 0. 0. 0. 6. -4*COS(120). !roty -90 TUBE 5. 0. 0. 6. 0. 1. 0. 6+4*SIN(150). 6. 0.0. 0. 6+4*SIN(30). 0. -1. ! Mast that determines visibility of surfaces ! The polyline of the cross section is defined by 12 lines 0. 0. 0.0. 1.0. 0. ! The polyline of the cross section is defined by 4 points 17.4. 6+4*SIN(90). It shows that the polyline of the cross section has no relation to the path : the cross-section is defined in a “temporary u-v” coordinate system that is dragged along the path. 0. 0. 0. 0. 6+4*SIN(135).One can complete different shapes of arches. 0. -4*COS(75). -4*cos(165). 0. 0. 0. -4*COS(60). 6+4*SIN(75). 0. 0. 6. -6. 0. 0. -4*COS(90). -4*COS(30).0. -6. 0. 0. 0.

0. 0. 0. 0. 0. 6. 0. 2-6*COS(45). 0. 0. 0.0.0.0. 2-6*COS(30). 0. 0. 0. 0. 2-6*COS(70). 6+6*SIN(70). 0. 0.4. -2-6*COS(120). -2-6*COS(150). 0. 0. 0.4. ! The path of the tube is defined by 16 points ! This path is now symetrical with respect to x-axis -1. ! The path of the tube is defined by 16 points 16+32.0. -4. ! First part of the arch 6+6*SIN(15). 0. -4. 0. 0 33 . 0. the y value becomes 0 : y=2-R cos α = 0 R cos α = 2 6 cos α = 2 α = 70. y=2 !roty -90 TUBE 5. 1.0. -2-6*COS(110). -2-6*COS(135). ! Mast that determines visibility of surfaces ! The polyline of the cross section is defined by 12 lines 0. 2-6*COS(60).0. 0. 0. 6+6*SIN(60). 0. 0. 2-6*COS(15).5° R=6 α y y=2-R cos α x=R sin α x=0. 0. -4. 0. 6.0. 0. 0. 0. 6+6*SIN(120). 0. 0. 0. ! Second part of the arch – symmetrical of first part 6+6*SIN(110). 4. 6+6*SIN(45).0. 0. 0. 0. 6+6*SIN(165). 0. 6+6*SIN(30). 0. 4. 1. 0. -2-6*COS(165).Another typical not round arch is constructed by adding 2 arch segments. ! The polyline of the cross section is defined by 4 points 16. 0. 4. 6+6*SIN(150). First arch segment x In the endpoint. 0. -1. 6+6*SIN(135). 0. 0. 0. 0.

y. These functions allow to model any 3D surface by specifying the x. 34 . the pattern can be drawn as an extruded polyline or a rather flat tube moving along a polyline. For more complex friezes you need MESH or MASS.y coordinates were estimated and noted.7. The form was first drawn on paper from which x. This shows that with some effort. Below an example by an extruded polyline. Friezes For simple friezes. a lot becomes possible. z-coordinates.

7. 0. 26. 0. 20.0.5.0.0. 20. 0.85.0. 4.0. 0. 21. 0. 0. 0. 3. 0. 0.0.0.8.15. 4. 10. 26.0 .5.0.3. 0.EXTRUDE 118.2.0.0. 0. 15.25.0. 0. 25.0. 0.7.0. 22. 21. 0. 7.0.1.0. 0.0.0. ! point 64 18. 24.0. 23. 22.0.0. 0. 0. 7. 0. 10. 22. 0. 20.0.0.6. 0. 22. ! point 35 26.0. 0. 25.2. 0. 5. 0. 24.0.0. 9.6. 0.55.2. 9. 25.0. ! point 32 27. 0. 28. 7. 20. 12. 0.9.0. 0.5. 8. 21. 20. 27. 28. 19.0. 28.1. 0.0. ! point 48 26.0.0 . 23.0.4.0.8. 0. ! point 51 24. 7. 21. 16. 4. 0.0. 4. 4.2. 3. 0. 27. 12. 25.3.0. 0.2. 0. 24. 0.0. 7.0. 24.0. 23. 0.8. 0.0 .15. 20. 26. 25.0.6.2.2.55. ! point 23 23. 0. 0. 21.5 . 22. ! point 70 21.0.0. 0.5.45.0.0. 22.4. 17.0. 20. 15. ! point 55 23. 13.2.0 . 0.0. 0.0. 25.7. 10.0. 4.8. 0.0.2. 24.0. 0. 0. 26. 23. 0.0.2. 25. 19. 0. 0.0. 24. 8.2.7. 20. 23. 24.0. 5. ! point 71 35 .2. 17. 0. 25. 20. 0. 26.7. 6. 17. 0. 0. 22.0.4. 16.15.0.6.0.0.0. 0. 0. 0.0. 5. 9. 19. 0. 21.0. 0.3. 5. 0. 24. 21.5. 0. ! point 42 27.0. 28. 29. 21.0.0. 18. ! point 59 21. 5. 14. 0. 0. 0. 0. 14.5. 20. 6. 0. 20.2. 24.0. 14. 5. 0. 20.0. 21. 0. 0.0. 24.8. 5.0. 22. 0. 1+2+4+16+32. 27. 13. 26.0.95.2.0. 6. 11.5.0.0. 11. 0. 23. 0.5.0. 0. 22. 2.0 .3.0. 23. 4.7. 0.0.0. 22.0.2. 20. 27.2. 0. 13.0. 20. 0. 18. 8. 6. 21. 26.0 .4.0. 26.

36 . 0. 7. 7. 0. 0. 0. 13. 21.4. 19. 0.0. 23.0. 0.0.0. 6.0. 25.8. 8. 8. 11.5. 0.8.0. 24. 15.7. 13.0.0.4.0.0. 0. 7. 9. 19. 7.9.20. 0.0.0. 19. 10.0. 0. 24. 12.0.0. ! point 77 24.0.2. 11.0.0.8. 8.0. 4.0. 19. 0.2.0. 8. 0.2. 0. 10.4. 7. 9.3. 0. 19. 11. 0.3. 6. 0. 17. 16. 0. 0. 0. 10. 0.0.3. 0. 5. 9. 10. 8.8.5. 22. 0.0. 0.0. 0. 9. 13. 0. 0.5 . 2. 0.0. 24.7. 0. 6.4.0. 10.1.0.0.0. 14.0. 8. 21.0. 11.7. 8.0.5.0.0. 0. 10. 17. ! point 89 22. 0. 9. 24. 0.6. 18.5.0. 15. 0. The top surface is not flat now and FPRISM allows to define immediately the material. 10.0.0.0. ! point 111 8. 0. 0.0. 11. 13. 10. 24. 8.0. 18. 0.0. 0.5.1. 11.5. 0 We can make it somewhat more beautiful by using FPRISM.0. 0.2.0. 0. 24. 19. 0.7.0. 17.0.0. 23. 7.0.0. ! point 104 11.0. 23.0. 6.0.0. 23. 9.0. 0. 16.0.5. 10. 0.2. 7.6.0. 10.8. 7. 0.0.0.0. ! point 98 15. 5. 16. 24. 0. ! point 85 24. 22. 0. 0. 12. 0.0.6. 6. 13.

4] FPRISM_ "Concrete". 0.1. diffuse. 15. 0. specular. And so on for all 118 points..0. 0.. ……. ! shining [0. ! ambient.. 37 . 13.0] 1.0. ! surface RGB [0.0.0 .0..0. 4. 15.5 .5. "Concrete". "Concrete". 0. "Concrete".transparent ! coefficients [0.1. 11.8..0. the frieze script becomes DEFINE MATERIAL "Concrete" 1. 3. …….2. 15.8.8..0] 0. 45.0. 0.0 . 10. 2. 3.8.When using FPRISM. 1. 118.100] 0 ! transparency attenuation [0. 1.

8. 15. 15.0.0] 1. cos(120). 0. sin(180). nrPoints. sin(60). cos(240). cos(300). FPRISM For towers with a ground plan that is not round. Example of a tower with hexagonal cross section.0.0. sin(120). inclination_height.transparent ! coefficients [0.8. FRISM makes it possible to define a PRISM where the top cross section is smaller than the bottom cross section. 0. "Concrete". cos(0).1. ! Here follow the 7 points of the polyline of the cross section cos(60). 1. Towers Typical towers can be made with REVOLVE – FPRISM – TUBE and SWEEP REVOLVE For round towers. 15. ! The extra parameter 15 determines visibility of edges and surfaces cos(180).. 15. "Concrete"..4] nrPoints=7 height = 5 inclination_height=4 inclination=78 ! Number of points defining the polyline of the cross section ! The total height of the tower ! The surfaces at the top are inclined over a height of inclination_height ! The inclination angle of the top is 78° FPRISM_ "Concrete".0.8. ! surface RGB [0. 15. 0. 15.. specular.0.6. sin(300).1. diffuse. height . ! shining [0. inclination. "Concrete". sin(360).. 0. 15 TUBE 38 . sin(240). DEFINE MATERIAL "Concrete" 1. ! ambient. sin(0). 0. cos(360).100] 0 ! transparency attenuation [0. ! The cross section is a hexagon.0.0] 0.

0.We can also rotate any polyline contour around the z-axis for a number of degrees. ! The definition of the 2D polyline of the cross section 0.01. 0. 1+2+16+32. 0.01. The form that we obtain in such way can then be repeated 4 times to complete the 360°.1. 0. 0. 0. ! This is one 45° part TUBE 5. ex. 1.7. 5. then we become the full tower. 0.0. The polyline of the contour can naturally much more complicated and contain also arcs. 39 .01. 0.1. 0. ! The definition of the 3D polyline of the path section -1.01.1. 0. 0. 0. -1. 90°.01. 0. -0. 0. 0.1. 0 If we repeat this 4 times and before each time write rotz +90. 0.0. 3. 0. 0.1.1.0.

SWEEP We can SWEEP a polycontour up along the z-axis while multiplying it with a scale factor < 1 at each step. 4*cos(-270). 4*sin(-150). so we sweep upwards on the z-axis By changing the points of the polyline sweep path. 0.6. so we sweep upwards on the z-axis 0. 2.z of the polyline sweep path ! Only the z coordinate is different from 0. 900. 9. 9. the cross section will be rotated over 0 degree ! scale factor – the cross section scales with 0. 5*cos(-180). 1+2+4+16+32. 0. 4*cos(-330). 5*sin(-60). 5*cos(-120). 0. 4*cos(-150). -330° 0. 1. 4*cos(-30). 7. 0. 0. 4*sin(-30). 3001. 900. 0.show the existence of the bottom . 5*sin(-240). 8.9 for each of the sweep path ! Mask . 4. 10 ! the polyline of the cross section is a roman columlike and exists of 13 points ! we will sweep the cross section along a sweep path consisting of 6 points ! between each of these 6 points. 0.25. 4*cos(-210). 0. 3001. 5*sin(-120). 0. 900. 5*cos(-240). 7. 0. 3001. 900. 4*sin(30). Ex. 0. 5*cos(-300). 6. 5*cos(-60). 3001. SWEEP 13. 0.top . 0.6.3 Leads to 40 . 4*sin(-270). 900. 3001. 6. 6. 0. 4*sin(-330). 2. 0. 4*sin(-90).0. 0. 4*cos(-90). ! Here are the 6 points x. ! Only the z coordinate is different from 0. 0.4.8.y. 7.y. 900.edge ! Define startpoint 1 on circle at radius 4 and angle 30° ! Define centerpoint of an arch at radius 5 and at angle 0° ! Draw the arch from point 1 to point 2 located at radius 4 and angle -30° ! Define centerpoint of an arch at radius 5 and at angle -60° ! Draw the arch from point 2 to point 3 located at radius 4 and angle -90° ! Define centerpoint of an arch at radius 5 and at angle -120° ! Draw the arch from point 3 to point 4 located at radius 4 and angle -150° ! Define centerpoint of an arch at radius 5 and at angle -180° ! Draw the arch from point 4 to point 5 located at radius 4 and angle -210° ! Define centerpoint of an arch at radius 5 and at angle -240° ! Draw the arch from point 5 to point 6 located at radius 4 and angle -270° ! Define centerpoint of an arch at radius 5 and at angle -300° ! Draw the arch from point 6 to point 7 located at radius 4 and angle ! Here are the 6 points x. 4*sin(-210). 0. 5*sin(-300). 5*cos(0). 0. 0.3001. 0. 0. 4*cos(30). 5*sin(0). 5*sin(-180).z of the polyline sweep path 0. we can get different shapes. The result will be a tower. 0.

Do not ask ArchiCAD to calculate projections of the 3 D model. Aspects of performance 1. Lower resolution of arcs with RESOL – RADIUS – TOL.com/ftp/techsupport/downloads/goodies14/ReadMe/PolygonCountingT ool/00_Polygon_Counting. Simplify the 2D models. lower the level of detail depending on the scale.graphisoft. Real historical buildings have a much too high complexity in ornamental details. 2. Avoid displaying too much in 3D : use layers and layer combinations to show only where you are working on. Which one you actually use can depend on global variables indicating the scale of display or the level of desired complexity. http://www. Simplify – objects must only look like and not be exactly similar as. If the number of polygons becomes too high. Use polycount to check the number of polygons. you will have problems. 6. 3. 5. 41 .7.htm Above 1 million you can start getting problems – above 2 or 3 millions. For complex objects you can write a simple and complex model. 4.