Professional Documents
Culture Documents
Graphisoft
Visit the Graphisoft website at http://www.graphisoft.com for local distributor and product availability information.
Trademarks
ArchiCAD and ArchiFM are registered trademarks and PlotMaker, Virtual Building, StairMaker and GDL are trademarks of Graphisoft. IFC
and IAI are trademarks of the International Alliance for Interoperability. Artlantis and PhotoCAD are trademarks of Abvent. Piranesi is a
trademark of Informatix. ArchiFacade is a trademark of Cigraph. Lara Croft is a trademark of Core Design. Lightworks is the trademark of
Lightwork Design. All other trademarks are the property of their respective holders.
Printing Note
We have provided this as a .PDF file, but we have designed it with
chapters starting on odd numbered pages. This is to enable you to
print out your own copy and run it off on a double sided photocopier
if you wish to save paper.
Acknowledgements
Introduction to Object Making with ArchiCAD: GDL for Beginners was
developed in concept by Graphisoft as a means of filling the gap
between the GDL Cookbook and the existing reference manuals. The
first edition was in 2000 for ArchiCAD 6.5 and 7.0.
This edition has been completely rewritten during 2004 to include
ArchiCAD 8 and ArchiCAD 9 thinking and techniques. It contains
easy to follow exercises in object making, and pulls together wisdom
CONTENTS
PART ONE: OBJECT MAKING WITHOUT GDL______________ 9
Chapter 1: Introduction to Object Making . . . . . . . . . . . . . . . . . . . . . . .9
1.1 About Object Making . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Library Parts in ArchiCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Sources of Library Parts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
Add-ons that make Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
1.2 Making your own Library Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Without GDL using ArchiCADs Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Making Objects with GDL Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
How do you make an Object? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Does it need to LOOK right, or BE right? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
The idea of an Investment Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Can you learn GDL?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
The ArchiCAD experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Read about Object Making . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Chapter 2: Object Making without GDL 1 . . . . . . . . . . . . . . . . . . . . . . 19
2.1 Making Objects without GDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
Getting started with Object Making . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
2.2 Lets make something in 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
2.3 Bring a file in from DXF/DWG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
2.4 Lets make a 3D Object a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
2.5 Lets Make a 3D Window with slabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
2.6 Lets make a Chair using Wall tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
2.7 Lets make a Roof Truss with Fills . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Summary of Object Making in this chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Chapter 3: Object Making without GDL 2 . . . . . . . . . . . . . . . . . . . . . .28
3.1 Using Basic Shapes from the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Make a Banana Truss or Mullion object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
3.2 Lets make an Object by Cutting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
3.3 Urban Modelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
Urban modelling entire buildings as objects . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
Urban modelling entire sites can be objects . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Urban modelling the Camera is the mightiest weapon! . . . . . . . . . . . . . . . . . . . .33
3.4 Making Objects with Add-ons and Solid Geometry . . . . . . . . . . . . . . . .33
Profiler for extrusions and lathing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
3.5 Make a Flywheel with Profiler! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
3.6 Convert Mesh to Roof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Other free Add-ons within ArchiCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
3.7 Carving Walls with the Roof tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Solid Element Operations (SEO) to the rescue! . . . . . . . . . . . . . . . . . . . . . . . . . .39
Notes on the naming of parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Why bother to make objects? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Are you using the Student version? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Summary of Object Making in this chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Introduction to Object Making
Contents
8.2 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Subroutines versus Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Complex example of Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.3 Textures the big secret revealed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
You could do Texture mapping with a Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
More things to note on textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Summary of GDL in this section. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Chapter 9: Billboard Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1 Billboard Objects use picturereality! . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.2 Make your own Billboards as accurate Cutouts . . . . . . . . . . . . . . . . . . . . 92
9.3 Make your own Billboards using the Alpha Channel with PICTURE . . 95
9.4 Rectangular cutout the combination object . . . . . . . . . . . . . . . . . . . . 97
9.5 The Billboard idea in 2D? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9.6 Billboard creation the photograph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Summary of Billboarding in this section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Chapter 10: GDL Windows and Doors . . . . . . . . . . . . . . . . . . . . . . . . 101
10.1 GDL Windows and Doors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
The Rules of Windows and Doors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
10.2 Revisit the Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
10.3 You can make Skylights too . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.4 Try a very complex window! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Note for future versions of ArchiCAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
If you have tried making objects in ArchiCAD without GDL (we will
call these Autoscripted objects), you are used to getting an object
whose only possibility for variation is stretchiness. You are not
offered a choice of materials, you have to get these right before saving
the object. This introduction to object making will encourage you to
build objects yourself, but more significantly it will encourage you to
try to make them capable of offering variations thus they could be
partially parametric.
10
You can either make a new library folder that relates to current
projects, or your objects can be stored in a personal library in the
ArchiCAD folder. The main point is that you should know where
they are, and ensure that you have loaded them. Subfolders to keep
furniture objects, building components, window objects, textures etc.,
should be logically named and organized.
11
correct place, with its new name, and looked the same in 3D view
because the GUID was unchanged (dont do this at home!).
You can see a quick sample of the IFC categories in GDL by going to
File>GDL Objects>Open Object by Subtype click open the
cascading groups and you will get a comprehensive listing of the
possibilities even animals, cars and railings are included.
Graphical Hotspots (GHs): GDL objects can now have custom
hotspots in any part of the model for editing its configuration.
Previous versions of GDL only permitted stretching of an imaginary
cuboid around the object. Now an object of some complexity can be
manipulated by the user in a piece of storage furniture, you can pull
or push the drawers, swing open or shut the doors, change the
spacing of shelves or dividers it is easy to do using hotspots in the
3D or the 2D or both, and the hotspot coding is not difficult. For the
GDL writer, GHs are very rewarding to write and get working.
This structural steel tube can be stretched and twisted and rotated in 3D space
and in 2D using graphical hotspots.
Solid Geometry Commands (SGC): We can achieve a far more
authentic 3D appearance and improved line drawing of objects by
adding or subtracting solids. Where intersecting tubes would look
acceptable in 3D render but wrong in wireframe, we can now add
them and get cleancut junctions. We can now subtract 3D outlines
out of a 3D solid surface (for example spherical indents into a slab) to
create shapes that could not be built with positive construction
commands. These are similar to the Solid Element Operations in
ArchiCAD.
12
GDL is very widely supported the web is full of sites with object making advice
and downloads.
Complementary Libraries
Several specialist libraries are available on the web or on CD from
companies specialising in object making and add-ons, such as People
and More, Theometrics, Hoshino, M.A.D., etc. If you explore the
Introduction to Object Making
13
14
Slab tool and Roof tool will produce GDL script that is relatively easy
to modify. The Wall tool creates bits of script which are harder but
not impossible to modify, but are easier to build in the first place.
Some of the most interesting possibilities are with the Mesh tool,
which makes surfaces that can be converted to roofs and saved as
objects.
Sometimes the objects you make with ArchiCAD tools are more
easily built on their side, rather than upright. Windows and doors
should be built flat on the floor and ArchiCAD will convert them to
be upright.
Sometimes you will not be able to make an object all at once. You
may have to make the legs first and save those, then make the
superstructure, save that, then make additional parts, and save them.
There are primitives such as cylinders, cones and domes in the
ArchiCAD Library that you might also use as part of your object. You
can then bring all those subsidiary parts together in the floor plan,
and save the whole result as your final library part. Later in this book
there is an exercise to demonstrate this procedure. Be warned,
though, that this final object will only work if all the subsidiary
objects can be found in the loaded libraries.
then added into a larger GDL project that the writer is working on
moved and rotated into position, amended or simplified.
Not all objects need to be 3D. It is possible to use the 2D tools of
lines, text and fills to draw standard symbols, select them, and
File>GDL Object>Save selection as... a library part. If you already
have a 3D object that you wish to use purely as 2D, you can select it,
explode it, and save the resulting lines as a new 2D library part. This
does not change the original 3D part.
All library parts are objects, but when you save them you can decide if
they are to be an Object (a piece of furniture or a building component),
a Window, or a Door. If its to be a Lamp or a special furniture object,
place the object in the plan, open it and select a new Subtype for it.
This accurate ship model for the US Coastguard was built entirely by tracing over
the DWG construction drawings in ArchiCAD with 2D fills, dragging the fill
shapes into GDL, and tidying up into 3D subroutines.
Assemblies built with the Tools palette do not have to be lost. You
may want to edit or elaborate and resave. Select your assembly and
save as a Module. This will take a fraction of the disk space, and can be
put in a folder near your Library with a filename that helps you
remember its relation to the library object that it helped you create.
With modules, you may wonder, why bother to save as objects?
The answer is, if you wish them to behave as objects (stretchy) and
allow further editing (improved materials etc.) and appear correctly in
schedules, they must be saved as library parts.
15
16
17
18
1 If the object has been made the right way up, or on its side,
view in the 3D window in plan or elevation respectively. Save
the resulting view as a library part use File>GDL
Objects>Save 3D Model as... to save it as a .GSM object,
window or door. Save it into one of your loaded libraries.
2 If the object has been made the right way up in 3D or if it is
2D, use File> GDL Objects> Save Selection as... to save it
into one of your loaded libraries.
3 If the object is 2D, use File>GDL Objects>New Object...
and when the GDL dialog appears, click the 2D Symbol
button and draw it into the 2D symbol window or paste in
something you drew earlier in the floor plan. Set the A and B
dimensions to the size of the object in your drawing.
Processes 1 and 2 are called Autoscripting. ArchiCAD creates a
GDL library part, with 3D form (if any) and either 2D scripts or
symbol, and routines to provide stretchiness. Every object, 2D or 3D,
has an imaginary size-defining cuboid around it of A for width, B
for depth and zzyzx for height. Method 1 and 2 will set this size
automatically; for 3 you have to set the size.
When you have made such objects, open them using File>GDL
Objects>Open Object... you will be able to view the scripts a
Introduction to Object Making
Setting up
Open a new ArchiCAD file, load your standard library, and load a
new folder to use as your working library and save the new file to that
folder or to somewhere convenient. Set the large grid to 12 or to 300
19
If you now Open the Object (from the File>GDL Objects menu)
you will find that the 2D view is scripted, including all the hotspots
20
scripts. All the 2D and 3D data was imported, but you may be faced
with colossal quantities of script.
You may be disappointed with the result. Nothing brought in from
DXF/DWG is solid; it seems to be a vast mass of polygons and lines,
and in no particular order. If you attempt to edit these you will need a
lot of luck and guesswork. The most you can be sure of editing
successfully is the 2D symbol, and in the 3D, some IF statements
added by you to hide or show portions; and insert some material and
pen numbers.
3D objects may come in on their side, or the wrong size due to your
not knowing if they are created in millimetres, inches, feet or metres.
If the object is the size of a pinhead or larger than your town, you
may have to duplicate the Default Translator and amend the scale
conversion of the import. It may also be many kilometres from the
Origin.
Solids may be inside-out hollow things. You may find that the lack of
control over the number of polygons leaves you with a model that has
so many polygons that your rendering times become unacceptable.
Many objects can be found by some smart searching with Google.
Check the file format before downloading. Choose the DXF/DWG
if you have a choice. Always take the opportunity (exert your
consumer power) to ask manufacturers of components to provide
objects in GDL.
side, and only 150m high. You have to be prepared to do some fixing,
e.g. rotating it upright, making a new 2D symbol and resizing it
correctly in height and plan area.
We can use the curving function in the Pet palette to soften the edges
of the object. Remember also that you need to set the materials of the
tabletop and legs using the Slab settings dialog box. A cylindrical
element like the chair leg could be made by magic wanding a slab to a
circular arc, or by bringing in a cylinder from the ArchiCAD Library.
Perhaps the best way is to use the Column tool, set to the right
dimension and materials.
This model of the Eiffel Tower comes in perfectly from DXF directly
from the Eiffel Towers own website. Unfortunately, its lying on its
Introduction to Object Making
21
To make sure that each leg is consistent, make just one leg correctly at
first. Next, Edit>Drag a Copy to the other end of the table. If this
option isnt available, use Options> Preferences>Miscellaneous to
activate the Show Element copy... button. If you use the grid, you
can make the table reasonably accurate in dimensions. Keep an eye on
the Coordinates palette as you type in your X and Y locations and you
can make the table totally accurate. This is easier if you set Grid Snap
to ON, and use a small grid of say 10mm or 3/8. Make the table
about 750mm (30) high.
When you have built the chair, select it and using 3D Projection
Settings, view it in 3D hidden line, in Plan with the camera at 270.
Save it using File>GDL Objects>Save 3D model as....
Now click on the object icon in the Tools palette and place it in the
floor plan. The result is indistinguishable from the original, but the
GDL object can be placed as often as you need, it will appear in
listings and can be used in other building models. This table will be
stretchy, but if you stretch it, the section sizes will deform so build it
the size you want from the start if you want to avoid distortion.
No matter how well you make it this way, it will never permit you to
make parametric alterations to height, leg spacing or timber sizes
unless you are prepared to dive in and do some editing in GDL.
We will cover the editing of industrial GDL in a later chapter.
22
The illustration above shows how the window should sit on the
project zero ground plane. Check that the frame/casement/glass
relationships are working correctly. Use a Section/Elevation view to
get it perfect, including the glass position.
In this case, the project origin is neatly positioned at the centre of the
sill. This is not absolutely necessary because ArchiCAD will make
Introduction to Object Making
Back in the floor plan, build a wall, and then select a window to put
into it. Select the window you have just saved. Place it into the wall,
making sure that the Eyeball cursor is clicked to the outside face of
the wall (the face with more hotspots). You can now view the result
and change its parameters of size only.
One unfortunate finding is that the textures can be perfectly aligned
in the object itself, but in the wider ArchiCAD environment, the
wood textures behave differently. The way to guarantee perfect
textures is to use Edit>Align 3D texture on each part of the frame
before you save the window object.
23
Before you move on, you would find that the 2D symbol (see figure
at right, in illustration above) is too horrid to use in a plan. The curve
in the window head produces a lot of spurious lines. You should open
the Window as a GDL object, click on the 2D Symbol button and it
will open up a drawing window, enabling you to delete the bad lines
and clean up the pen thicknesses (left side, in illustration above).
24
Many objects are easier to make lying on their side, because of their
complexity or shape. They may be far easier to build in profile than to
build as a stack of slabs or walls assembled vertically.
You can make skillful use of the Wall tool. Walls are most useful as
they can be set to a thickness and height and can be snapped to
follow lines with the Magic Wand. They are more controllable at
following curves than the Slab tool. Their only trouble is their
annoying tendency to join together and form strange spiky mitring
effects when you least want it. In the Display Options you could turn
off Clean Wall Intersections for straight lined objects. To get these
curvy walls working, we should retain Clean Wall Intersections.
This Bentwood chair illustrates the use of the Wall tool perfectly it
could be made with the Slab tool but only with more difficulty.
straight sections for the seat and back. Change their heights to start
from 150mm (6) above the deck and finish 600mm (24) high as in
the illustration.
Duplicate the seat and back walls, and make them about 90mm (3.5)
thick and change material to fabric. You can use the wall-end feature
of ArchiCAD 8.1 to get rounded ends, or get the same outline with
the Slab tool. To finish, the chair has some little black hinge bolts for
the connecting rods, which can be a small but very high slab.
Try using the Log setting in the wall, set to 30mm (1.25) log heights
to simulate bamboo for the arms. It works on the straight bits, but
not on the curves. For this effect, you will need real GDL.
Stand it upright in 3D
When you have something like the Bentwood chair in the diagram,
lying fully on its side, its time to rotate it upright. Set the 3D
projection setting in the parallel views to 90 position for camera
with elevational view selected. Save the 3D view as a library part into
your loaded library; this time, click the object icon (not the window or
door) and tick the Editable radio button, and tick the redundant
lines checkbox.
Place the chair into your project and enjoy! In this view, the finished
chair object admires its creator with satisfaction. To improve it, you
might edit the 2D Symbol (as you did for the window) to erase
extraneous lines.
25
whole truss. In this case, use a separate Fill for the Steel wires, the
Timber and the Circlebolt.
Now select the fills, copy them, move to the floor plan and paste
them. Move them to a clear space, and it would help if one end corner
of the truss is over the Origin perhaps one of the truss bearings.
The hotspots will help you. Now you can magic-wand the Slab tool to
follow the outline of the Fill, and to cut any holes you might have
(there are none in this truss).
Make sure before you use the Slab tool so that it is centered on the
ground plane in this case, for the timber set the thickness to 100
mm, the top of the slab to 50 mm and the material to timber. Thus
the truss is nicely centered above and below ground zero. You will
make similar settings for the Steel wires and the circle bolt.
You may have a bit of trouble with the Magic Wand. Snap-click to the
outline of the fill first to get the outline of the truss. If there are holes
in the truss, select the new slab, select the slab tool again (making sure
it is the slab and not the fill by looking at the Info palette) and then
snap-click any of the holes in the fill. This will drill holes in the slab.
You should finish with a small truss like the one illustrated. If you
make a mistake, delete the waste slabs and try again with the sequence
above. Make yours more complicated if you want to, with more
members, or more varied width of members, and add extra metal
plates for extra realism.
26
Keep the two sides of the truss separate by splitting the slab at the
apex; do an Align Texture for each side for the wood grain. This will
look good in the finished object. Now select and view the truss from
Introduction to Object Making
27
Here the elbow has been placed and stretchy cylinders laid. Now save this with the
camera at 90 in elevational view.
Bring it back in to the plan, twice, and it should be upright, as in the
next illustration. The upright truss halves can be splayed at the angle
you wish to achieve, and then reviewed and resaved. Add in a column
to form the long straight tube.
For the next step, its easier to rotate it 90, so we can save it as an upright truss.
28
Save again, with the camera at the same viewpoint, in elevation. You need great
precision in placing them in relation to each other.
Bring it back in, this time laid flat on the ground. Its time to add in
linking cross tubes. You will need the sectional view to get the precise
position and height of each cross tube. In the plan make sure that the
cylinder ends are lost inside each main curving tube. View it in 3D
Plan, 270 and you can save it as a horizontal 3D Truss.
You could view it one more time in 3D Elevation, 90, and save a
version of it, upright, for use as vertical wind resisting mullions
which is what I intended to make originally.
Remember that if you ever wish to view the final object, you will
always have to be able to find the constituent parts in a loaded library.
If you alter one of the components, it may result in an error when the
final object is viewed. We have become used to seeing the Missing
objects dialog box coming up at some time or other. This is useful; if
you read it, the warnings of duplicate library objects and of missing
ones require action.
If the composite object never needs to be edited again, then you
could view it once more in 3D plan view from an angle of your choice
and then save as a Binary. This ensures that all the subsidiary objects
are included and wrapped up into a new bundle of polygons and and
you do not need to worry about missing the earlier components.
29
could make a rounded vault, and further refine it with the ability to
form a crossing a groin vault.
This is something we cannot do easily with the Slab tool, nor even
with the Roof tool. Try using the more powerful Wall tool because it
is smoother and more easily manipulated. We will draw a length of
vault on its end, using the circular wall variant of the Wall tool. If you
are more ambitious, follow this example making it as a Gothic vault
(instead of Arched) by having two sections of curved wall meeting
each other.
Set the camera at 90, viewed in 3D elevation, then save as a vault
object. Call it vault_part1.GSM if you like.
Bring it into the floor plan and you now have a stretchy vault. You
can change its length, width and height. So it may have been round
when you first built it, but it could now be elliptical if you wish. Drag
a copy of your vault object, and be careful not to change its width
change only the length. We are going to cut (or mitre) the vault at 45
angles to make it usable as a groin vault for the crossing.
The plan shows the basic wall curved to form a flattened circular vault; above it,
the resulting library part stretchy in three dimensions
The marquee is mostly used as a rectangle but it can be very powerful
when used as a polygonal shape, like a fill. First draw one 2D line
down the centreline of the vault, using the half point tickmarks. When
you hover the cursor over the end of the vault, you should get a little
tick mark to indicate the half width of the vault. Now draw two 2D
lines from this half point at 45 angles to indicate the line you wish to
cut along. By using the Shift key, you can ensure that these lines are at
exactly 45.
Toolbox icon of the Marquee tool with the polygon and rectangle variants. And the
Elements to Show in 3D allows you to select the way that the Marquee operates.
Now, using the Marquee tool in polygonal mode, Magic wand the
Marquee tool to the 2D lines so that it encircles most of the vault that
you intend to retain.
30
Plan of the shimmering marquee over the vault object. The thin 2D lines ensure
that your cutter is at exactly the right angle. Use the Coordinate Box if you like to
type the angle in. Now you see the groin vault part in 3D.
View this in 3D axonometric and you will find that you have a groin
vault mitred at 45. If the cutting effect does not occur, close the 3D
window, use the Display> Rebuild command, and then try 3D again.
If it is cutting correctly, use the 3D projection settings to set the
camera position to 270 and the view type to Parallel>Plan. Save this
as a library part and you can call it vault_part2.GSM.
Return to the floor plan, and place your new vault piece. Now this
object has default Bounding Box hotspots. You can make your life
easier open the 2D Symbol in the GDL dialog and customize your
hotspots. Place your own 2D hotspots at the corners, including one in
the middle. Zoom in real close and place one at the pointy apex of the
groin-vault.
Personalised hotspots will remove the bounding box. The hotspot at
the pointy corner can now be used as a hinge around which to
Edit>Multiply>Rotate.
Place the result next to a piece of straight vaulting and you can now
group these two. Now use Edit>Multiply to Rotate yourself another
three and you have the complete groin vault!
31
Picture of the final structure, with the groin vault, and some columns made with
Profiler, and a window made with little walls.
marquee, and view it in 3D in plan view. Either way, you will get all
stories showing. If you had a basement that you wished to omit, then
use Image>Elements to Show in 3D... dialog and you can decide
which stories to omit. Save as an object.
If you save it as Editable, you are in danger in the long term of losing
the subsidiary library parts (such as windows) that it was built from. It
may also fail to render due to spurious errors such as missing parts or
bad polygons. Save as Binary, and you can safely export it to your
urban model; place it anywhere and at any height and it will work.
You would need a copy of the original if you wish to go back and
modify any part of it, as the only editing you can do to a binary is to
make it stretchy so store the layer combination.
If you do not want the binary building object to be stretchy (to help
with selection), open the 2D symbol window of the GDL object, and
place 2D hotspots wherever you think would be most appropriate
corners, turrets, entrance canopy, ridges, etc. and then save again.
That will turn off the bounding box hotspots.
32
Proposal for a 43 storey tower for Central London by Robert Luck. You can just
see Tower Bridge in the far distance. the entire central area of London is a low
polygon count object.
Introduction to Object Making
If you only need facades, you can build an entire facade on the
ground, using the Slab, Wall and Roof tools. Then save it using the
3D view with the camera at 90 in the Parallel>Elevation view. Bring
it back into your floor plan and assemble the building from facade
library parts. Again, we advise that these are binary, to avoid any lost
subsidiary components, and to reduce the risk of rendering errors. A
disadvantage of this method is that you cannot use normal Window
and Door objects in the library but its great for areas of curtain
walling.
If the object is binary, you can change its materials at a stroke to a
single one in the object settings box untick the Use objects own
materials option. Try changing it all to Ice for the Sketchup effect!
The textured facades are so much more realistic than trying to use 3D modelling
tools (as in the foreground, above).
33
34
As you progress, read the instructions that appear at the bottom left
of the ArchiCAD window as you click. Use a horizontal 2D line to
give you a line to snap to with all these clicks. Click again at the same
point to start the hole, and the third click tells it how large to make
the hole in the middle. It cannot tolerate a zero hole in the middle.
Your next clicks are to click out the sweep angle. As you near 360, it
bounces back to nothing. You will either get a slice of 5 degrees or
you may get the full 360 sweep. Save it in the library and it will be
placed in your plan by Profiler. Mirror a copy, position it to form a
full wheel and then group, and you have a wheel.
35
Now select the wheel on its own, 3D view in Plan at 270 and save
the 3D view as Object, Editable. Place the resulting object in the
floor plan. You will get the wheel with the cutting operating in the
GDL, but by calling cylinders from the ArchiCAD library in the
GDL.
If you save it as Object, Binary, the object is completely independent
of the library.
36
If you take a quick view of the editable script of an object made with Solid
Element Operations, you will gain a quick tutorial in the syntax for Solid
Geometry Commands in GDL! They are basically the same thing.
Select the Mesh, use Tools>Convert Mesh to Roof, and the mesh will
be converted to a surface with thickness and with different materials
on top and bottom. Better still, you can suspend groups and then edit
the collection of joined roofs select them individually to delete,
punch holes, or change the materials as you wish.
Try this hyperbolic saddle shape. One trick is to make it flat at first
and apply a curve to the edges before you set the altitude of the
corners. This will have the effect of interpolating the points of the
triangles that will be formed at a later stage along the edges. Putting in
the simple inner ridge is easy and you find that the heights of the new
points are interpolated too.
You can profit by having a play with some of the other tools. The
Battered and Canted walls and Roofmaker and the Roof accessories
give opportunities for object making.
Trussmaker is a great benefit, providing incredible versatility. You
can create small structures using different pen lines in 2D for this
the continuous line tool is very helpful. The example here can be
made without Trussmaker. With the 2D lines drawn, you could use
the Magic Wand and get a small Wall tool to run along the line
building rectangular tubing. Save this from the 3D view in Elevation,
90 and its pretty good. Trussmaker will make circular or rectangular
tubing, and it has useful parametric features such as a leaning over
angle and 2D capabilities.
37
38
The illustration above shows the use of a curvy roof used to cut a
wall. If you keep the wall line and pitch lines, you get a perfect result
(rear wall). If you rotate the wall and thicken it (as in the foreground
wall, thickened to 7.5m) the cutting is all over the place.
The next example is an attempt to carve a piece of stone. Something
like this was required by a client of the author during the writing of
Introduction to Object Making
39
SEO gives you perfect cutting of the wall under the saddle.
40
and walls in the room wouldnt you would prefer the scheduler
to report a clean list of 4 chairs and 2 tables and a 3 sets of
shelves?
Using the Marquee tool, you can cut library objects into smaller
shapes, or cut bites out of them.
If you wish to place your building in a larger site model for
visualisation, you could save it as an object, but make sure you hide
the layers containing complex interiors.
You can take object making to the other extreme of having entire
surrounding buildings or landscapes as objects and bring them
into your main building model.
Textures mapped to facades of extremely simple building shapes
produce better results than over elaborate 3D modelling.
Take a close look at the Add-ons and special modelling functions
available to ArchiCAD users, particularly Profiler, Trussmaker,
Solid Operations and Mesh to Roof.
Roofs cut walls, but do not try to use them to carve walls. Solid
Operations do it better.
Take care with the naming of library parts avoid using generic
names for objects but make sure the name is descriptive.
Save your assemblies of slabs and walls etc. as modules in case you
need to remake an autoscripted object.
41
The GDL Dialog: the list of parameters and their descriptions, types and values
are the Parameter Table.
42
43
3D Entities
The dimensions you are writing here are in metres. The native
dimensioning system of GDL is always metres, no matter what you
set your main project to be using. In your project, you could be
working in feet and fractional inches, centimetres, millimetres. But
GDL is hard coded so you need to work to one dimensional system.
If you wish to script with feet and/or inches, you can, but you must
write them with punctuation, e.g. BLOCK 1,2,3-0. It
reduces a risk of confusion (for humans) if you write dimensions with
a decimal form, as 2.0, not as 2. If a dimension is smaller than a
single metre, foot or inch, write it with a leading zero e.g. 0.55. If you
must work in non metric, write mostly in Decimal Inches we all
know that 54.25 is 4-6 1/4, and its so much easier to write. When
you get further you will write in parameters, and dimensions may not
matter.
44
3D View
Click the 3D View button (of the library part, not the project) and
you will see this. These objects all exist in the same space and overlap
each other, so we need to find a way to separate them. The wireframe
view shows each of the objects and the shaded view shows you how
well GDL permits objects to collide like this in the shaded view
without harm.
Check Script
If, when you click the 3D window, it refuses to draw because of an
error, return to your script and click the Check Script button. This
will point to the line where the error occurred, usually because of a
wrongly placed comma, or a spelling error. Do this often when
writing GDL.
The three-pointed object that you can see in a GDL 3D view reminds
you which ways are X, Y, or Z. This is like a 3D Cursor. When you
word process, you are used to the idea of a cursor wherever you
place the cursor, you can begin typing, and whatever you type
appears. In GDL, there are two of these, one at the origin, and one
where you have moved to. The one labelled G is the Global Origin
of the GDL model. The one labelled L is the Local Origin, referred
to here as 3D cursor, for short. Wherever this is, your next 3D
Introduction to Object Making
command will happen. Using the ADD command, you can move the
3D cursor about in 3D space in a single XYZ move. ADDX, ADDY, or
ADDZ move the 3D cursor in those axial directions, in one direction
only.
2D Cursor movement
When you are writing GDL in 2D, you have a similar concept of X
and Y based 2D space. You do not have to worry about height. Using
the ADD2, ROT2 and DEL commands, you can move about in 2D
space providing you specify both the X and Y distances.
Unfortunately, you do not have a visible cursor.
45
46
Finally, when you save the GDL model, and bring it into the project
floor plan, you will be dismayed to find that it does not display it
has no symbol, and at best you will have nothing more than a
hotspot. So for now, open the object again, open the 2D script
window and write a single line:
PROJECT2 3,270,2
The Legs
Start in the 3D Script with a CONE command for one leg of the
chair, so that the legs appear to taper from 60mm to 30mm (2.4 to
1.2). Later we can introduce more subtleties of form and size.
Starting from the left-hand front corner, use the ADD commands and
work your way around the chair, planting legs as you go. Lets assume
the seat height is 500mm (20).
!Simple Chair Example, 3D script
PEN 1
RESOL 12
!---All the legs----------MATERIAL "Wood-Pine, shiny"
CONE 0.5, 0.015,0.03, 90,90
ADDx 0.45
CONE 0.5, 0.015,0.03, 90,90
ADDy 0.55
CONE 0.5, 0.015,0.03, 90,90
ADDx -0.45
CONE 0.5, 0.015,0.03, 90,90
DEL 3
Now for the Back. Note that we are working with CONE and BLOCK
on this chair. As your experience increases, you will expand the range
47
2D Script
To complete this, you will want to see it in your floor plan. You must
write a short 2D Script. Open the 2D script window and write the
single line PROJECT2 3,270,2. Save and close the object, return
to the floor plan. Click the Object tool in ArchiCAD Toolbox, click in
the plan, and your chair will appear, with its own hotspots provided
by ArchiCAD. It will not be stretchy we did not write in this
capability.
The chair may not win a design award, but it is your first GDL object
so reward yourself and then move on with GDL.
48
The popup parameter type palette permits 12 types of parameter. Select the
appropriate type.
49
MATERIAL framat
ADD 0,B,sthit
CONE bhit,lsec/2,lsec/3, 90,90
ADDx A
CONE bhit,lsec/2,lsec/3, 90,90
DEL 2
ADD 0,B-0.01,sthit+bhit*0.3
BLOCK A,lsec/2,bhit*0.6 !Back panel
MATERIAL seatmat
ADD lsec/2,-0.01,lsec/2
BLOCK A-lsec,0.01,bhit*0.6-lsec
DEL 2
When you multiply or divide, note that Star (*) means multiply, Slash
(/) means divide.
Error checking
As you work your way through the script, keep clicking in the 3D
view window of the GDL object to see if the logic of your
arithmetical expressions are making sense. If they are not, it may be a
bad spelling, or a misplaced comma. A wrongly spelled parameter will
result in a value of zero, or could produce an error message. Click on
the Check Script button and read the error message if you get one.
Make sure that dimensions are dimensions and not angles or
something else.
50
Although you may prefer to work in Hairline much of the time, it is essential you
see how your work appears with True Line Weight.
0,0
!4 Corner stretch spots
A,0
A,B
0,B
A/2,B/2 !Pick up Centre spot
If you have used ArchiCAD, you will know that hotspots have three
main purposes: allowing objects to be picked up; making them
stretchy; and giving them gravity (helping them to snap against wall
surfaces or each other). Decide where you will need them most
corners, centre, intersections, etc.
51
Selecting Objects
Normally, you can only select objects by clicking on the hotspots of
the 2D symbol in the plan. If your hotspots are in an illogical place, or
52
are on the bounding box, you may have to drag the mouse in a small
marquee in your attempts to find those elusive hotspots.
In ArchiCAD 9 you can make the job easier for users of your object.
In the 2D drawn symbol, you should provide a fill over the area of
your object. In a 2D Script, you should provide a filled POLY2. If
you do this, your user can click anywhere in the fill and they can select
the object easily.
Another AC9 idea is that of making specific lines sensitive to your
mouse. In a 2D Script, you can duplicate instances of LINE2 and
ARC2 with HOTLINE2 and HOTARC2 (using the same syntax)
and the mouse will detect the object anywhere along the line. Even in
an object with PROJECT2 as the main way of drawing the symbol,
you can inject a few HOTLINE2 commands to make it easier to pick
up.
53
54
S
Show or hide the braces
In the same way we could add a new routine for the leg braces and
could provide an additional boolean parameter to the 3D options
group to control the braces.
The braces will be double cones. We could have used cylinders but
they would not look authentic the ends have to be smaller so that
they fit to the legs, mortice and tenon style. Follow the logic of the
script below, and you see its simply a matter of moving and rotating
the 3D cursor to the right place, and pushing out those cones. CONE
can only go vertically, so the cursor has to point horizontally. We
return the cursor to the origin as each brace is installed, with a DEL
command.
!Braces
IF brace THEN
MATERIAL framat
ADDz sthit/3
ROTx -90
CONE B/2,lsec/4,lsec/3,90,90
ADDz B/2
CONE B/2,lsec/3,lsec/4,90,90
DEL 3
ADD A,0,sthit/3
ROTx -90
CONE B/2,lsec/4,lsec/3,90,90
ADDz B/2
CONE B/2,lsec/3,lsec/4,90,90
55
DEL 3
ADD 0,B/2,sthit/3
ROTz -90
ROTx -90
CONE A/2,lsec/4,lsec/3,90,90
ADDz A/2
CONE A/2,lsec/3,lsec/4,90,90
DEL 4
ENDIF
56
down in a setting dialog the same way that we get Materials, Pens,
Lines, etc.
A typical ValueList for a text parameter called font would be:
VALUES font Times New Western, Arial,
Verdana, Courier
Note that there is no comma after the parameter name (in quotes),
but the list of menu choices are in quotes with commas. A ValueList
of this form is best put in the Parameters Script.
Simple ValueLists are best built in the Parameters Script, but ones
involving a lot of decision making are best built in the Master Script
GDL prefers it, and it also permits joined-up thinking on your part.
You build the menu and you write the IF statements that follow as a
result. This way of writing ValueLists is an authors special and is
called the Variables Method. It works far better than the standard
syntax.
!Add to the Master Script
!-------Pop down Menu----------bv0="No leg braces"
bv1="O brace"
bv2="H brace"
VALUES "bracetyp" bv0, bv1, bv2
IF bracetyp=bv0 THEN
brace=0
ELSE
brace=1
ENDIF
ROTz -90
ROTx -90
CONE A/2,lsec/4,lsec/3,90,90
ADDz A/2
CONE A/2,lsec/3,lsec/4,90,90
DEL 4
ENDIF !brace=bv2
ENDIF !If brace
57
DEL 4
ENDIF
58
throttle and a speedometer in your car. You cannot make the car go
faster by swivelling the speedometer needle!
We want to transform this object to a MultiObject. To do this, we can
simply use the Master Script to define a new value for the parameters
for each of the standard versions of the chair: for seat height, leg
section, etc, overriding the choice in the parameter table.
You can use the colon to include more than one short GDL
statement on the same line of text. Its a help for compacting code,
but can sometimes lead to your overlooking bugs.
Use the Variables method to build the menu. This example shows
abundantly how good and how easy the method is.
!Cookbook Chair: Master Script
!------Menu for Chair------cv0='Customised chair'
cv1='Foot stool'
cv2='Nursery chair'
cv3='Piano stool'
cv4='Dining chair'
cv5='Dining armchair'
cv6='Kitchen stool'
cv7='Bar stool'
VALUES 'chairtyp' cv0,cv1,
cv2,cv3,
cv4,cv5,
cv6,cv7
IF chairtyp<>cv0 THEN
!Grey out custom parameters
LOCK 'A','B','sthit'
LOCK 'lsec','frsec'
LOCK 'bakon','bracetyp',
'bhit','arms'
ENDIF
IF chairtyp
A=0.35:
lsec=0.04:
bakon=0:
ENDIF
IF chairtyp
A=0.30:
59
You can also put a small note into the Comment window, including
your internet address. Precede the internet address on the first line
with a hash symbol. The rest of the Comment could be instructions
or a copyright notice.
60
61
62
If you made this in a random location, you will find the numbers for
the XY locations to be quite high, or perhaps negative. It all depends
where you clicked. In a future chapter, we will look at the
housekeeping, but for now try another idea.
Instant GDL
The code for many prisms can also be stolen from ArchiCAD. Now
draw out a slab yourself of roughly the same shape. As a regular
discipline, try to draw slabs in the counterclockwise direction, because
GDL is happier working that way. Mathematically, counterclockwise
is a positive direction if you start trying to curve edges later. Draw it
so that one of the points coincides with zero the global origin.
Usually, GDL seems to remember the order in which you clicked the
points.
All Slab tool objects are converted into CPRISM_ this is a prism in
which the top, bottom and side surfaces are specified by name or
number. The next line contains the number of nodes and the
thickness, and then follows the list of XY locations. Each one ends in
the number 15, and the final node ends in a -1. The 15 is a masking
code and simply tells the slab to be drawn as a Solid and tells all the
edge lines to be drawn. The -1 tells GDL that the slab is finished (and
also that the end point is the same as the start point). This is the
default, so leave these as they are unless you want to omit nodepoints.
Note that the slab in the illustration was started 24 metres from the
from the main origin of the project your numbers will be wrong.
Move the object so that one node is on the Main Origin. Do the
drag-trick again and you will see that the first node listed is 0,0 like it
appears in the sample script, above.
63
Normally, the value of the masking code is always 15. The power of
masking in the underscore version of PRISM is that you can omit
faces and lines of the prism and you can curve corners and edges and drill
holes through the prism. The curved corners are made using the
technique of the Polyline. It is too early to lead you through all these
possibilities now, but you need to know that they are available.
CPRISM_ topmat,botmat,sidemat,
number of nodes, thickness,
X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1
Simple A-B based rectangular prism. Left, the origin is at the near left. Right, the
origin is at the centre.
To illustrate how prisms work, the nodes have been numbered in the
order in which they were clicked. In this example, there are 5 points if
you include the first point twice the idea being that you fully close
64
CPRISM_ is what you get when you make instant GDL with the
Slab tool. This has all the powers of PRISM_ but it also allows you to
change the colours of the top, bottom and side faces. These material
parameters are included in the statement.
You also have the following types of prism which are suitable for later
study check the syntax in the ArchiCAD Help menu:
BPRISM_ is an extension of CPRISM_ but allows you to bend
the prism by adding a radius of curvature. It bends downwards,
but if you precede it with a mirroring routine (MULZ -1), it will
bend upwards.
Introduction to Object Making
BPRISM_ topmat,botmat,sidemat,
number of nodes, thickness, radius,
X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1
FPRISM_ and HPRISM_ are extensions of CPRISM_ but allows
you to have curved or chamfered top edges (hills) by specifying the
angle, height and material of the hill. This is useful for suggesting
softness, e.g. upholsery in furniture. However, they create a lot of
polygons and lines in 3D view. FPRISM_ is almost obsolete
because HPRISM_ does the same but better.
HPRISM_ topmat,botmat,sidemat,hillmat,
number of nodes, thickness,
hillangle,hillheight,hillstatus,
X1,Y1,mask,...... Xn,Yn,mask, X1,Y1,-1
The Hill is visible in the illustration if the hill angle is 0, the hill will
be rounded. Hill material and height have to be included. Hill status is
0 or 1 (invisible or visible edges).
If you are doing a very simple solid one-color prism, you can remove
the c and the material definitions to make it simpler. One single
material definition is enough for the whole prism. You can use the
GDL text editors Find and Replace function to remove some of the
surplus spaces to make the code look more compact. So you are left
with simpler PRISM_ :
MATERIAL slabmat
Introduction to Object Making
65
using A and B as parameters for width and depth with the origin at
the near left corner.
!Alternative Codes for the Seat frame....
!BLOCK A,B,frsec-0.002
!Simple Prism
PRISM 5,frsec-0.002,
0,0,
A,0,
A,B,
0,B,
0,0
Comma confusion?
In some countries, it is common to write decimal points as commas,
e.g., 1,25. In other countries it is common to write thousands with
commas for example, a million is 1,000,000. If you have a localized
ArchiCAD, this is how numbers may appear in the parameters box.
But in GDL, the scripts are hard coded so only one convention can
be followed. Dots are used to form the decimal point, and commas
are used to separate numbers. Many of the errors in your early efforts
in creative prism writing with GDL will be with misplaced dots and
commas. Pay strict attention to them. Use a monospaced font in
scripting, so that you can get all the commas and dots to line up
vertically.
66
Progress from the simple block to a frame that looks more authentic. The frames
can be centred to the legs.
We shall drill a hole in the prism. The first requirement is that you
have the underscore type, with the masking codes. Keep them all as
15 for the moment.
!Same prism with drawing codes
PRISM_ 5, frsec-0.002,
0,0, 15,
A,0, 15,
A,B, 15,
0,B, 15,
0,0, -1
The way to cut the hole is to write the Prism statement for the outline
of the solid, using 15s for masking. When you repeat the first point as
the last point, the prism needs to be told that its the last point by
using a masking code of -1. Continue on with the XY points for the
inline of the hole , using 15s again for the masking. Again, you use a
-1 to indicate that you have completed the inline.
Make sure that that the number of points is written correctly with
the hole, we have gone from 5 points to 5+5, i.e. 10. Lets make a
temporary parameter of ft for frame thickness, and give it a value of
30mm or 1.25. let this be a manufacturers parameter, so do not put
it in the Parameter Table.
!Prism with hole, for frame effect
ft=0.03 !Frame thickness
PRISM_ 5+5, frsec-0.002,
0,0, 15, !start of outline
A,0, 15,
A,B, 15,
0,B, 15,
0,0, -1, !end of outline
ft, ft,
15, !start of inline
A-ft,ft,
15,
A-ft,B-ft, 15,
ft, B-ft, 15,
ft, ft,
-1 !end of inline
With this code, you get the chair as in the illustration (centre). We can
add a cushion later.
A+f2,
A+f2,
-f2,
-f2,
f2,
A-f2,
A-f2,
f2,
f2,
-f2,
B+f2,
B+f2,
-f2,
f2,
f2,
B-f2,
B-f2,
f2,
15,
15,
15,
-1,
15, !Hole inline
15,
15,
15,
-1
See the right hand illustration on the previous page. Its a small
change, but worth doing for authenticity.
Another way to do this would be to keeping the theme of a frame, but
build 4 prisms, one for each side of the frame. The benefit of this
would be to be able to control the woodgrain in each piece. We will
do this later in the book.
As in the illustration we have a chair with a frame and nothing in the
frame very uncomfortable! We can now make a prism to fill the
empty space, and make it of upholstery on top, with an undersurface,
perhaps of the same material as the frame.
67
You can see how the seat upholstery is chamfered to give a soft look.
Lets try to curve the back now!
68
!Modify 3D Script
!Back Legs, panel and upholstery
IF bakon THEN
MATERIAL framat
ADD 0,B,sthit
CONE bhit,lsec/2,lsec/3, 90,90
ADDx A
CONE bhit,lsec/2,lsec/3, 90,90
DEL 2
!Back panel
ADD A/2,B-lsec/3+bbulg,sthit+bhit*0.9
ROTx -90
BPRISM_ framat,framat,framat,
5,lsec/3,brad,
-bcirc,0,15,
bcirc,0,15,
bcirc,bhit*0.6,15,
-bcirc,bhit*0.6,15,
-bcirc,0,-1
Introduction to Object Making
In the 3D Script, we built the back legs, as before, but for the back
panel, we have to do some 3D manoevres. We use ADD to get to the
centre of the chair. Because BPRISM_ curves downwards, we have
to get behind the chair and use ROTx so that the Z axis is facing
backwards (away from the chair). Play with the script of the chair
changing the ROTx from -90 to 90. The height of the prism will be
from the topmost part sthit+bhit*0.9. Try changing the values to
see where the back moves to. We made the half-width of the prism
the half-circumference, so that whatever the bulge value, it will always
fit perfectly.
The back cushion by adjusting the Z height, we can shift a small
distance and issue another BPRISM_ for the upholstery, using soft
fabric. DEL 3 takes us right back to the origin.
You may wonder why we cannot chamfer the edges of the upholstery
on the back as we did for the seat. We cannot have both a curve. You
have the choice of BPRISM_ or HPRISM_ so you choose. For me,
the curved back takes priority.
69
You can shorten the time of building prisms with Instant GDL
using Drag and Drop.
Instant GDL is best built from slabs placed on the main origin. It
is best used if prism shape is not going to change much.
Otherwise, define the prism with parameters.
A common cause of errors when writing prisms is confusion with
commas.
Drilling holes write the XYs of the hole immediately after the
outline XYs.
Soft edge effects can be achieved with HPRISM.
Curved solids can be made with BPRISM. This may require some
calculation to get it the correct size and position.
If the object gets too complex, use a PROJECT2. If you can still
manage the code, write the 2D with a proper script.
70
71
making sure that you tick the Editable button. Place the object again,
now open the GDL and view the scripts.
First thing you can do it to view the table in 3D and paste a nice small
square image into the Preview Window.
The 3D script starts out with some titling. Its good to have date and
objects name and author at the start of the script. Do likewise when
you write creative scripts.
! Document name:
!
!
Name
: table_2_iomwac.gsm
!
Date
: April 2004
!
Version : 8.10
!
Written by ArchiCAD
!
MULXA/2.25753262639
MULYB/1.001325786114
MULZZZYZX/
0.75
ADDX
0.4849148094654
ADDY
0.5064862370491
BODY
-1
MODEL SOLID
RESOL
36
72
objects from ArchiCAD 5.0 (and earlier) already used Z for other
purposes and might no longer work. The GDL development team
chose zzyzx after a small town overlooking a dried salt lake in
California near Las Vegas, the last town in the US directory of
placenames.
Because the autoscripted units are accurate to a million millionth of a
metre, you get a vast number of trailing decimals. You will wish you
had built them with a small snap grid working.
Now you can see how stretchiness works in autoscripted objects. If
you shrink the table to a A value of 1.8 metres, the MULX command
will multiply everything in the X direction by A/2.25753262639 (i.e.
1.8/2.25753262639). This will make it slightly shorter. If you stretch
the height to be 1.2 metres, the vertical components will all be
multiplied using MULZ by 1.2/0.75. The MULY command works in
the same way. Retain (if you want it to be stretchy).
If you want the table NOT to be stretchy, delete the 3 MUL
commands, and replace the 2D Symbol with a PROJECT2
3,270,2 in the 2D Script. Youll get bounding box hotspots.
These GLOB items are called Global Variables. They are not doing
anything here except recording the conditions that prevailed when the
object was made. At the time the table was made the North point was
at 90, there was no animation taking place (Frame number is set to
-1), the camera eye and target positions were noted, the drawing scale
was 1:50. These are not commands, they are a historical record. You
can find out more about Global Variables in Appendix A of the GDL
Reference Manual. There are a few more BODYs here. Meanwhile,
you can Delete ALL the GLOB s! ...throughout the script.
!!Slab-062
PEN
GLOB_LAYER = "Floors"
GLOB_ID = "Slab-062"
GLOB_INTID =
667
BODY
-1
ADDZ
0.6
cPRISM_ "Surface-Whitewash", "Surface-Whitewash",
"Surface-Whitewash",
5,
0.1,
0.04300407447266, 0.01376101330492, 15,
1.259910825444, 0.01376101330492,
15,
1.259910825444, -0.02340206237996,
15,
0.04300407447266, -0.02340206237996,
15,
0.04300407447266, 0.01376101330492,
-1
DEL
1
BODY
-1
This is the first real 3D element in the script. It is obviously the beam
under the tabletop as it is only 100 mm deep and is 0.57 metres off
the floor. This and the tabletop were made with a Slab tool, and these
always translate into a CPRISM_. The syntax for CPRISM_ was
explained in chapter 5. The prism is lifted by 0.6 and drawn; then the
DEL command returns the cursor to the origin.
!!Slab-059
GLOB_ID = "Slab-059"
GLOB_INTID =
651
BODY
-1
ADDZ
0.7
cPRISM_ "Surface-Whitewash", "Surface-Whitewash",
"Surface-Whitewash",
49,
0.05,
-0.004326136003042, 0.4919763397133,
15,
-0.03992947334826, 0.490650560281,
79,
-0.1100340105909, 0.4778922240699,
79,
-0.1776092841723, 0.4552868334455,
79,
-0.2412796563933, 0.4232945689723,
79,
-0.2997489820857, 0.382566700897,
79,
-0.35182699439, 0.3339323311641,
79,
-0.3964535351562, 0.2783815152915,
79,
-0.4327201367068, 0.2170451076949,
79,
etc, etc, etc ...
73
!!Slab-061
GLOB_ID = "Slab-061"
GLOB_INTID =
655
BODY
-1
ADDZ
0.05
cPRISM_ "Surface-Whitewash", "Surface-Whitewash",
"Surface-Whitewash",
15,
0.05,
-0.02400049266183, 0.3960784971471,
15,
-0.036711189204, 0.31606425849,
79,
-0.05203414774601, 0.154755338342,
79,
-0.1691548391012,
-0.3304777709065,
-0.4128433470601,
-0.4128433470601,
79,
79,
15,
15,
74
Materials and Pen, but note in so doing that GDL has now given you
a load of ready made parameter names for some of these which you
can use. It will also give you ones you do not intend to use, perhaps,
so click the Hide button next to the ArchiFM title and all the other
parameters will be hidden from the users view. New parameters you
make will be put at the bottom, annoyingly. Move them up.
Selecting the right subtype is more than a way to save you typing. The
object will conform with some of the internal routines of ArchiCAD
(for example the wall cutting of window or the roof cutting of the
skylight). For most objects, the main advantage is that they will show
up correctly in Interactive Schedules. The common parameters are
the key to group editing and group reporting. For example if you use
gs_top_mat and gs_leg_mat for the top and leg materials, you
could select a whole host of different tables (of subtype table) and
update materials in all tables simultaneously.
Simplify A and B to exactly 2.25 m and 1.0 m, the dimensions we
wanted in the first place when building the eyeballed table. Here, the
parameter box is in millimetres. Do not forget to keep strictly to
metres when writing anything into the actual script. Make a new
parameter tthik for tabletop thickness.
75
table that you believe it to be. Change the materials at the start of each
CPRISM to the parameters you made.
! Name
: table_2_iomwac.gsm
! Date
: April 2004
! Version : 8.10
! Written by ArchiCAD modified for iOMWAC
MULX
A/2.25753262639
MULY
B/1.001325786114
!!Centre Beam
PEN
gs_cont_pen
ADDZ
zzyzx-0.1-tthik
cPRISM_ botmat, botmat, botmat,
5,
0.1,
0.04, 0.01376101330492,
15,
1.21, 0.01376101330492,
15,
1.21, -0.02340206237996,
15,
0.04, -0.02340206237996,
15,
0.04, 0.01376101330492,
-1
DEL
1
!!Tabletop
ADDZ
zzyzx-tthik
cPRISM_ gs_top_mat, botmat, edgmat,
49,
tthik,
-0.004326136003042, 0.4919763397133, 15,
-0.03992947334826, 0.490650560281,
79,
-0.1100340105909, 0.4778922240699,
79,
-0.1776092841723, 0.4552868334455,
79,
-0.2412796563933, 0.4232945689723,
79,
-0.2997489820857, 0.382566700897,
79,
-0.35182699439, 0.3339323311641,
79,
-0.3964535351562, 0.2783815152915,
79,
-0.4327201367068, 0.2170451076949,
79,
-0.4598885156183, 0.1511717407535,
79,
-0.4774056020433, 0.08210240625503, 79,
-0.4849147986173, 0.01124315667042, 79,
Delete the ADD offsets, but remember to delete the equivalent offset
command in the 2D script or the symbol and the actual table will
not coincide in location.
Put in a parametric PEN command, provide a new title for the
tabletop, and remove all the redundant GLOBs and BODYs and all
later PENs. Now label each part in the 3D script with the part of the
76
If you wish, you can also clean up some of the million millionth of a
metre decimals to clean rounded dimensions, but here it is only worth
doing it in the case of the beam under the tabletop we can ensure
that it centres nicely on the cylindrical legs. As the CPRISM allows
you to specify top material, bottom material and side material within
the command, replace all that Whitewash with your new material
parameters. Because we selected the table Subtype definition we
have gs_top_mat, and gs_leg_mat given to us. We can also put in
the other parameter values like botmat and edgmat etc. Note that in
the script they must NOT appear with quote marks they are
material indices, not names.
Although it takes a bit more thinking about, you should do the same
thing to all the leg parts under the table top. Once you have embarked
on this, you have to finish. Think it out and work it through, guessing
which parts they all are and how the heights need to be adjusted.
Provide a label for each part. Do it all the way to the end of the 3D
Script.
!!Foot element under leg
ADDZ
0.05
cPRISM_ footmat, footmat, footmat,
15,
0.05,
-0.02400049266183, 0.3960784971471,
-0.036711189204, 0.31606425849,
-0.05203414774601, 0.154755338342,
-0.05719819902872, -0.007197412027317,
-0.05218296290095, -0.1691548391012,
-0.03700823220845, -0.3304777709065,
-0.02400049266183, -0.4128433470601,
0.04732645894257, -0.4128433470601,
0.05966670786791, -0.330388076719,
Introduction to Object Making
15,
79,
79,
79,
79,
79,
15,
15,
79,
0.07424769749459, -0.1642796538628,
0.07867493665818, 0.002408716924311,
0.0729319557382, 0.1690569439548,
0.05704011900087, 0.3350450848787,
0.04732645894257, 0.3960784971471,
-0.02400049266183, 0.3960784971471,
DEL
1
!!Little circular pad under foot
cPRISM_ footmat2, footmat2, footmat2,
39,
0.05,
0.0410091477233, 0.3437969914738,
0.0410091477233, 0.3463603485633,
0.04011890314868, 0.3514091764344,
0.03836546363036, 0.3562267119174,
0.03580210654081, 0.3606665766344,
etc, etc, etc.
79,
79,
79,
79,
15,
-1
15,
79,
79,
79,
79,
77
ADDx 1.25
GOSUB 100:!Single leg
DEL 1
END:!=======================================
DEL 1
RETURN
78
DEL 1
ENDIF
There are lines containing 900 and 4001 status codes which are
beyond the scope of this chapter. For the moment, just use the
POLY2 as it comes, and change only the Pen parameters.
79
Note that if you have tried to use Profiler for lathing, it works around a
vertical axis. Here we have to use a horizontal axis.
Create a New Library Part from the File menu, and position the 2D
window to the right of the screen, so that it is next to the project floor
plan. Drag and drop the 2D fill into the 2D Script window do the
drag over very fast. You should get something like this:
There is not time to go into all of these, but lets try one REVOLVE.
Look up REVOLVE in the GDL Reference Manual. This method
makes it easy beyond your expectations to make a lathed object. This
liberates you from the polecat of Profiler.
For a lathing operation, you only have to draw a 2D profile in the
Positive-Y zone that means all points above the X axis and you
can revolve it. When you draw the profile, you do it with the continuous
Line tool.
80
PEN
1
SET FILL "25 %"
POLY2_B{2} 13, 1, 0, 0,
0,
0,
0,
0, 0.3760557831815,
1,
0.06592689450963, 0.3760557831815,
1,
0.1013692707986, 0.258191153049,
1,
0.142621891345, 0.2282009802147,
900,
0, -107.9665730337,
4001,
0.1838745118913, 0.258191153049,
1,
0.6645848017343, -0.6870353976553, 900,
0, -47.59681179421,
4001,
1.038393080352, 0.305337005102,
1,
1.380200507736, 0.163899448943,
1,
1.556751901622, 0.02393520066069,
900,
0, -60.68649776848,
4001,
1.592356841974, 0.2464046900357,
-1
HOTSPOT2
0, 0.3760557831815
HOTSPOT2 0.06592689450963, 0.3760557831815
HOTSPOT2 0.1013692707986, 0.258191153049
HOTSPOT2 0.1838745118913, 0.258191153049
Introduction to Object Making
Now, copy only the list of XY points and paste it into the 3D Script,
noting that there were 13 lines in the POLY2.
When the list is in the 3D Script, leave all the status codes as they are
except the last one which is an ArchiCAD error. This should be 1,
not -1.
Now add the REVOLVE command above the list of points. The word
REVOLVE is followed by the number of points (was 13), the angle
through which the profile should be revolved (360) and finally a
masking value, which you can assume to be 61. You need to precede
the REVOLVE command with a ROTy 90 because the lathed
object is turned around the X-axis, and is therefore horizontal.
Things which need to stand upright should be rotated minus 90
around Y.
PEN 1
MATERIAL 18 !Temporary values for pen & material
RESOL 16
ROTy -90
REVOLVE 13,360,61,
0, 0.3760557831815,
1,
0.06592689450963, 0.3760557831815,
1,
0.1013692707986, 0.258191153049,
1,
0.142621891345, 0.2282009802147,
900,
0, -107.9665730337,
4001,
0.1838745118913, 0.258191153049,
1,
0.6645848017343, -0.6870353976553, 900,
0, -47.59681179421,
4001,
1.038393080352, 0.305337005102,
1,
1.380200507736, 0.163899448943,
1,
1.556751901622, 0.02393520066069,
900,
0, -60.68649776848,
4001,
1.592356841974, 0.2464046900357,
+1
DEL 1
The Chesspieces are made entirely using this Drag and Revolve technique.
Masking codes and Curvature control
The key to knowing the masking code here is thus:
60 will give you a lathed object open at both ends, with pen lines
top and bottom.
61 will give you an open object with pen lines and a flat bottom.
63 will give you a solid closed object, with pen lines.
81
Whatever value you give RESOL here, the vase will look smooth
because we are using Open GL rendering. With ArchiCADs 3D
engine, you will see the polygons. The RESOL command tells GDL
that you only want 16 polygonal faces to the shape. You can ruin your
model with too many polygons. Multiply these vases by a few
hundred and your computer may not have enough memory to render,
and you may have an unrealistic number of polygons if you wish to
export to DXF/DWG or an external renderer. The benefit of being a
GDL user is that you can control the number of polygons with a
simple RESOL (or TOLER) command.
These curved 3D lattices can be made with Profiler and require only the smallest
amount of GDL tweaking to make them 3D. See the GDL Cookbook for a
thorough explanation.
82
8.1 Subroutines
Subroutines are pieces of GDL code that we want to repeat. Even if
we only want to use them once, we can package the code into a
discrete bundle. We store subroutines at the end of the script, after
the END statement, and give them a label number just like a piece
of luggage. We must never allow the script to run accidentally into the
subroutines they must only happen when required. Subroutines are
at the heart of complex GDL scripting. Subroutines can be used in all
the scripts except the Master Script (in which case if you used the
END statement, the entire object would obey!)
!Chair
GOSUB 100:!All the Legs
GOSUB 200:!Draw the Seat
GOSUB 300:!Build the Back
END !----------------------------100:!All the legs
GOSUB 110:!One single leg
ADDx A
GOSUB 110:!One single leg
ADDy B
GOSUB 110:!One single leg
ADDx -A
GOSUB 110:!One single leg
DEL 3
RETURN
110:!One single leg
CONE sthit, lsec/3,lsec/2, 90,90
RETURN
In this case, you could refer to the first part of the script as the
executive script, with most of the actual work being done by the
subroutines that follow the END command.
Subroutines can be hierarchical, and can be moved or rotated like
objects (see the ROTx command for the window below). This is
moving towards what we mean when we talk about object oriented
programming. We make every part of the model a discrete package
that can be identified and made to perform or locate itself according
to rules.
In a human figure, the entire Arm object (which hinged at the
shoulder) could GOSUB a subroutine for the Forearm (hinging at the
elbow), and that could GOSUB the Hand (hinging at the wrist), and
the hand could GOSUB each of the Fingers (each of which is
correctly sized and hinging according to the rules). As the Fingernails
are largely the same (with minor variations on size), each finger would
83
In this case the drawers can be in subroutines which get told their width, depth and
height. Graphical hotspots which open and shut the drawers can also be put into
subroutines.
84
you can issue a GOSUB command that includes the flag in the line
number. For example:
!Window object
ROTx -90
GOSUB 100+ws !Window
DEL 1
END:!----------------------------------100:!Rectangular window
...........
RETURN
101:!Round topped window
...........
RETURN
102:!Gothic window
...........
RETURN
8.2 Macros
Macros are separate small GDL files which can be somewhere in your
library and can be called in, like a subroutine, but exist outside the
object you are currently writing. These are essential in manufacturing,
for example kitchen and door design they are much more powerful
than subroutines.
If you look at the kitchens or doors in the ArchiCAD library you will
realise that if every kitchen unit had to carry identical subroutines for
taps and inserted sinks, there would be an impossible maintenance
problem. Everytime you updated the range of taps, you would have to
open every kitchen cabinet and update the tap subroutine.
Think about doors. There are a huge variety of doors and a huge
variety of door ironmongery items, and the permutations of both
become uncountable all of which can fit into a door frame
900x2100mm. What happens when the range of doors needs to be
updated? The mind boggles at the workload.
The solution is to be found by making the primary GDL object a user
interface with the main parameters offered to the user, much of it in
the form of popdown or pictorial menus. A door object will do
nothing much more in real GDL terms than cut the hole in the wall
the WALLHOLE command. It will then use the CALL command to
call in a suitable door frame, call in architraves if they are required, call
in a door (from a library of door types), call in the handle.
Macros can be hierarchical so the frame can call the architrave, the
door can call the handle, the door can call the glazed panel. In each
case information is passed down the chain to the macros, for example
how big to be, and which material to use. If you do not pass
information to the macro, it comes in using the parameters with
which it was saved.
Introduction to Object Making
Macros can be placed in the plan like any other object or if the
author wishes, they can be made unplaceable using the little
checkbox in the GDL dialog.
!Bathroom fitting
!Parameter Script
85
If you set the Subtype to drawing symbol, you will not be asked for a
zzyzx value. If the objects have been saved with the correct A and B
values, there is no need to specify further information they will
come in the correct size. In the case of the WHB, we can send it the
correct sizes.
In this case, it would be difficult to make the final object stretchy as
they all have different A and B. Also, in listings, you would get 4 of
the same object in one room whereas you might be better to keep
them separate but it is a fast drawing aid. Your choice.
86
method for making ValueLists ensures that the language can easily be
changed.
Wood is to Norwegians what leather is to Argentinians or wine to the
French. It has to be just right. Every small piece of wood has to have
the correct texture direction, every mitred joint has to look authentic.
The texture direction is calculated by every piece of timber every
macro containing a tiny piece of beading knows which way to push
the woodgrain.
You can see all the macros sitting in a tidy little heap in the distance, the
architraves, grilles, casement, even the glass.
Even in the 2D, the window uses macros, the same section outlines
that are used to draw the 3D timbers. The window is scale sensitive
if the drawing is 1/50 this is how it will draw. It has other 2D outlines
for when the drawing is 1/100, or 1/20. This is essential in good
GDL or the object will just be a dense mass of ink if the 2D symbol
has too much detail at 1/100.
Earlier in this chapter, it was said that you could use a subroutine like
an object swivel it, relocate it. Well this toothpaste tube can be
Introduction to Object Making
87
pointed and squirted. After you have written an object, you rotate as
required, issue the texture GOSUB command, and it will be done.
BLOCK A,B,zzyzx
ROTy -90:GOSUB 999:DEL 1 !Texture vertical
Above you can see an example of combining several statements on
one line separated only by a humble colon.
This worked in 3D form, but the texture would be the same on the
side seat frames and on the front and back seat frames. Use the 999
subroutine that was printed earlier, and do 4 separate frames these
always come after the 3D statement.
88
Everything here is getting the texture right leg braces, arms, legs,
seat frames. We cannot change pen lines at joints between cones. You
need REVOLVE to control pen lines.
!Chair with frame and textures
200:!The Seat and upholstery
ADDz sthit-frsec
!Do four prisms for seatframe
ft=0.03
f2=ft/2
GOSUB 210:!Front to Back frame
ADDx A
GOSUB 210:!Front to Back frame
DEL 1
GOSUB 220:!Left to Right frame
ADDy B
GOSUB 220:!Left to Right frame
DEL 1
!Seatcushion
HPRISM_ seatmat,framat,seatmat,seatmat,
5,frsec+0.010, 30,0.01,1,
f2, f2, 15,
A-f2, f2, 15,
A-f2,B-f2, 15,
f2,B-f2, 15,
f2, f2, -1
GOSUB 999:!Paint Texture
DEL 1
RETURN
210:!Front to Back frame
PRISM 5,frsec-0.002,
-f2,0,
f2,0,
f2,B,
-f2,B,
-f2,0
ROTz 90
GOSUB 999:!Paint Texture
DEL 1
RETURN
220:!Left to Right frame
PRISM 5,frsec-0.002,
-f2,-f2,
A-f2,-f2,
Introduction to Object Making
A-f2, f2,
-f2, f2,
-f2,-f2
GOSUB 999:!Paint Texture
RETURN
89
90
Piranesi and Artlantis (third party renderers for ArchiCAD) work well
with cutouts, or you can use their own library of billboard objects for
people and trees.
But they are not your people and your signs, and you may want to do
your renderings in ArchiCAD. The new Lightworks renderer will
encourage people to use ArchiCAD for renderings and save you the
worry about the wrinkles of exporting to third party renderers.
91
oblivion). Save this cropped image into a loaded library and reload
libraries.
If you havent got a straight-on view of your subject, you will first
have to use Photoshops Edit>Free Transform>Perspective and
Distort to adjust and straighten the image.
Here you see the ArchiCAD Carpet and Picture objects. To the left we see the
Picture object adapted to allow a silhouette effect with alpha channels, and no back
panel. You can also see two Icepeople, another good way of populating scenes.
Anybody who has played computer games knows that the urban
environments are mostly very simple in 3D but are made complex by
having photographs mapped onto simple block shapes and trees are
usually planar cutout objects.
Lets look at three techniques for making our own objects, the
Cutout Billboard, the Picture Billboard, and combination of the
two. This chapter includes instructions on making the Alpha channel.
92
Now, back in the plan, select the Slab tool, set it to 10mm (3.8) high
and trace closely around the image as in the illustration. Trace
another rectangular slab over the cropped image. Set the material of
both slabs to be matthew_cutout.
Initially, you will find the texture will be starting from a random
position, but at least you have the comfort of knowing its the right
size in fact its coming from the main origin of the project, a long
way away. We need to use Align Texture to get this starting from the
bottom left corner. Open GL is a great help here because you get
instant display to changes of the texture alignment in the 3D View.
If your cutout fitted the Figure closely (to within one pixel) the 3D
Script will have been written so that the bottom left corner is the
origin of the new object. So if you set the texture to the bottom left,
you will get a perfect alignment.
If the Align Texture routine worked, 3D Script will end with:
If you have a problem with Align Texture, just save the object. Open
the 3D Script and have a look....
! The CPRISM will end, something like this.....
-35.36420271267, 12.94639198852,
15,
-35.35731157426, 12.90504515807,
15,
-35.30677655926, 12.88720216694,
-1
93
DEL 1
BODY -1
Now, the Open GL view works with the Cutout perfectly with the
Picture based billboard it betrays a telltale rectangle, and does not use
transparency. In the Photorender, the shadows work, but not in the
same way.
94
This illustration shows the comparison, left, an Open GL 3D View, and right, a
Photorender with shadows, and below, the Plan, with the original slab and the
billboards. Starting from the left, you have the author in a Cutout, Matthew in a
rectangular cutout (casting shadows), then in a Picture object (casting a
rectangular shadow), then two versions of the Cutout object both casting shadows.
95
Now hit the Select menu>Inverse, and the lasso will now be
surrounding the image. Now Save that selection from the Select
menu the job is done, the Alpha channel is now created. You can
see it in the illustration, added to the list of channels, under the Red,
Green and Blue.
!!Billboard.gsm
!!2D Script
PEN cont_pen
HOTSPOT2 0,0
HOTSPOT2 A,0
HOTSPOT2 A/2,0
CIRCLE2 0,0,A/100
CIRCLE2 A,0,A/100
CIRCLE2 A/2,0,A/100
LINE2 0,0,A,0 !AC8 and earlier
!AC9 - use HOTLINE2 0,0,A,0
96
!!Billboard.gsm - 3D Script
PEN cont_pen
Introduction to Object Making
A note on Shadows
Alpha channel based material textures, if applied to ArchiCAD
elements or objects will cast shadows correctly cut around the outline
of the alpha channel. Picture based objects will cast only rectangular
shadows in the ArchiCAD rendering engine, but cast shadows
correctly in the Lightworks rebndering engine.
To be sure of the best results, go to Image>Photorendering Effects>
Options, use transparency in shadow calculation.
f you want to cast perfect shadows, the Cutout billboard is the way to
get the best result in both renders and 3D views if you are prepared
to make a material for each one. Open GL and the 3D view do not
use transparency in the Picture object.
If you want to control shadow casting, make a Boolean parameter
shad and start the 3D Script with the line:
IF shad THEN SHADOW ON ELSE SHADOW OFF
A compromise of the two types is that you can save yourself all that
tracing around objects in ArchiCAD and use a rectangular cutout (ie a
thin upstanding wall) and apply a texture to it which uses alpha
channels. This will look like a rectangle in 3D but look OK in
Photorender, and will cast shadows correctly.
In its use (parameters and stretchiness) this is indistinguishable from the Picture
object but its better.
We need to adapt the Master Script from the Cutout object.
!Billboard Object rectangular Master Script
DEFINE TEXTURE 'biltexture' picture_file,
97
A,zzyzx,1,0
DEFINE MATERIAL 'bilmat' 24,
1,1,1,
0,61,IND(TEXTURE,'biltexture')
The small difference here is that the name of the picture file is now a
parameter and the dimensions of the picture are dynamically resized
by the A and zzyzx dimensions.
!Billboard Rectangular.gsm
!3D Script
PEN cont_pen
IF shad THEN SHADOW ON ELSE SHADOW OFF
MATERIAL bilmat
ROTx 90
POLY_ 5,
0,0,1,
A,0,1,
A,zzyzx,1,
0,zzyzx,1,
0,0,-1
BASE
VERT 0,0,0
VERT 0.1,0,0
VERT 0,0.1,0
VERT 0,0,0.1
COOR 258, -1,-2,-3,-4
BODY -1
DEL 1
We are not using a PRISM here. A POLY_ is one simple surface that
will not reveal tell-tale edges showing in a render. We are using the
texture mapping routine that was used in the previous chapter. Copy
and paste!
For the 2D Script copy the script from the Picture object in the
previous section of this chapter. Thats all!
This is useful mostly for placing trees and plants into ArchiCAD in
the floor plan. You can also place elevations of people, cars and trees
into sections and elevations, giving the impression of upright
billboard objects all you need to do is whiten the background.
98
You can now use the Display Order menu option to organise how
the figures will overlap.
Introduction to Object Making
talents extend to making the billboard object for you including the
GDL texture routines!
By giving ArchiFacade the required height and width of the facade, you will see it
perform the Perspective and Distort action quickly and accurately, saving you
much time.
You can also look at the facade, and if you can get clean images of the
entrance and some typical windows and cornice details, you might be
able to reconstruct a facade by copying and pasting the bits that you
managed to capture even if the rest was obscured with trees! But
this is going to be hard labour!
99
This view of West Bridgford Central Avenue near the authors home was done by
Bite Design in Nottingham. It uses billboard surfaces for the building elevations,
3D street furniture and a few billboard trees to fill in the spaces.
100
101
The third rule is that A governs the width and B governs the height.
It is possible to override this later, but start this way. If you author a
Window/Door from new, you write a WALLHOLE command which
determines the wall cutting. If you fail to write a WALLHOLE
command, you will get a default hole A wide and B high.
It would be good if there were just three rules. Look at the parameters
and try to imagine how many more rules there must be!
Door and Windows can present such a variety of choices that they need a
multipage visual User Interface.
102
MULXA/0.8775315255826
MULYB/1.249817627345
MULZZZYZX/
0.16
ADDX
35.0009371729
ADDY
-7.002659943499
At this point, we had to add in the parameters for the oversizes from
the Parameter Table. If you do not want to do this, dont bother with
the WALLHOLE and hit the Hide button to the title of the group in
the Table. Leave the MUL and ADD commands at the start
otherwise the window will not position or stretch correctly. The
WALLHOLE is similar to a PRISM statement except that instead of
thickness, we past in the parameter for the side material.
WALLHOLE is very powerful it can be repeated many times to
make complex shapes, or it can be complex in its own outline. It can
also be give the ROTx or ROTy treatment to make interesting
chamfering effects to the wall.
We could have remade this window over the main origin, but here we
have accepted the window as it comes, to show that even if you lost
the original slab parts, you can still tweak the script. It only causes
problems if you want to write a script to drive a hole through the wall.
We want to write in a WALLHOLE command as this will allow us to
conform to one quality requirement, that of allowing oversize
dimensions around the hole. It would have been so-o-o much easier
to do this if the window is built symmetrically over the main Origin.
!
Name
: windo_2_omwac.gsm
!
3D Script
PEN
gs_frame_pen
Introduction to Object Making
!!Glass
ADDZ
0.04
cPRISM_ gs_glass_mat, gs_glass_mat, gs_glass_mat,
12,
gs_glass_thk,
-35.39981876463, 8.160415405712,
15,
-35.38268901762, 8.166515355645,
79,
-35.2645803879, 8.193436940666,
79,
-35.14463324159, 8.210381032486,
79,
-35.02368892174, 8.217228780474,
79,
-34.90259576587, 8.213932152599,
79,
-34.78220315544, 8.200514272335,
79,
-34.66335555813, 8.177069256472,
79,
-34.60512108129, 8.160415405712,
15,
103
DEL
-34.60512108129, 7.075050087223,
-35.39981876463, 7.075050087223,
-35.39981876463, 8.160415405712,
1
15,
15,
-1
-34.56217141011, 7.047220207262,
15,
-34.56217141011, 7.002659943499,
15,
-35.43970293569, 7.002659943499,
15,
-35.43970293569, 7.047220207262,
-1
DEL
1
!!Horizontal Window head
cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat,
14,
0.1,
-34.56217141011, 8.160415405712,
15,
-34.56217141011, 8.252477570844,
15,
-35.43970293569, 8.252477570844,
15,
-35.43970293569, 8.160415405712,
15,
-35.39981876463, 8.160415405712,
15,
-35.38268901762, 8.166515355645,
79,
-35.2645803879, 8.193436940666,
79,
-35.14463324159, 8.210381032486,
79,
-35.02368892174, 8.217228780474,
79,
-34.90259576587, 8.213932152599,
79,
-34.78220315544, 8.200514272335,
79,
-34.66335555813, 8.177069256472,
79,
-34.60512108129, 8.160415405712,
15,
-34.56217141011, 8.160415405712,
-1
Sorry about all this script its the usual autoscripted stuff. But its
useful to see how the parameters can be inserted and the texture
managed. You could try to insert gs_frame_thk for the frame
thickness, but you would need to script the 2D and it would get so
complicated you might wonder why you didnt make it parametric in
the first place.
Note that we just have to hide the parameters we cannot make use of.
If we script parametrically, we could design a window with frame
thickness and width, and with sash details and make full use of all the
parameters. If we leave them showing but inoperable, your poor user
will be confused.
!!Overhanging Sill
ADDZ
-0.06
cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat,
5,
0.06,
-35.43970293569, 7.047220207262,
15,
104
!!Horizontal Sill
cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat,
7,
0.1,
-35.43970293569, 7.002659943499,
15,
-34.56217141011, 7.002659943499,
15,
-34.56217141011, 7.075050087223,
15,
-34.60512108129, 7.075050087223,
15,
-35.39981876463, 7.075050087223,
15,
-35.43970293569, 7.075050087223,
15,
-35.43970293569, 7.002659943499,
-1
GOSUB 999:!Texture
!!Vertical Jambs
cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat,
5,
0.1,
Introduction to Object Making
-35.39981876463, 7.075050087223,
15,
-35.39981876463, 8.160415405712,
15,
-35.43970293569, 8.160415405712,
15,
-35.43970293569, 7.075050087223,
15,
-35.39981876463, 7.075050087223,
-1
cPRISM_ gs_frame_mat, gs_frame_mat, gs_frame_mat,
5,
0.1,
-34.56217141011, 7.075050087223,
15,
-34.56217141011, 8.160415405712,
15,
-34.60512108129, 8.160415405712,
15,
-34.60413858807, 7.075050087223,
15,
-34.56217141011, 7.075050087223,
-1
ROTz 90
GOSUB 999:!Texture
DEL 1
DEL TOP
END:!========================
999:!Texture
BASE
VERT 0,0,0
VERT 1,0,0
VERT 0,1,0
VERT 0,0,1
COOR 258,-1,-2,-3,-4
BODY -1
RETURN
Left, with texture control, right without control. It is a pity that the Open GL
implementation in ArchiCAD 8.1 makes the glass disappear or look totally
solid.
105
You can see how the Skylight API cuts the roof (left), better than 'vertical' hole
cutting (right). If you want to modify the holeshape, build back parts of the roof,
using the correct materials and thicknesses.
We are going to use a smart little trick here. Skylights are usually wood
framed with a metal top and outer surface, and the timber should be
visible on the underside and inside edge. We cannot do this with a
CPRISM_ or any other GDL statement directly. So we make the
frame flat and solid on the floor. Work out the size of the glass, and
drive a hole through the frame the same size as the glass. CUTPOLY
is a wonderfully useful command similar to a PRISM (if you wish for
holes with curved edges, you need CUTPOLYA). CUTPOLY will cut,
leaving behind the material you specify so we can state the frame
material and get the authentic look!
!Glass
MATERIAL gs_glass_mat
ADDz fdep-gthk
PRISM_ 5,gthk,
-A/2+fwid,fwid,15,
-A/2+fwid,B-fwid*2,15,
A/2-fwid,B-fwid*2,15,
A/2-fwid,fwid,15,
-A/2+fwid,fwid,-1
DEL 1
!Frame
MATERIAL gs_frame_mat
CUTPOLY 5,
-A/2+fwid,fwid,
-A/2+fwid,B-fwid*2,
A/2-fwid,B-fwid*2,
A/2-fwid,fwid,
-A/2+fwid,fwid
!Actual frame
cPRISM_ gs_upper_mat,gs_frame_mat,gs_upper_mat,
5,fdep,
-A/2 ,0,15,
-A/2 ,B,15,
A/2 ,B,15,
A/2 ,0,15,
-A/2 ,0,-1
CUTEND
DEL 1
106
One reason you may make a window is because its too unusual to be
likely to be found in any of the existing libraries. Lets built a window
that could go up alongside a staircase. It would be unlikely that you
would need it to be parametric in dimensions unless you had many
similar but slightly different. But you can go some way to tune up the
window with a bit of GDL knowledge, as with the table in the
previous chapter.
Lay it out as carefully as you can using small walls for the window
sections and slabs for the glass. Build it over the main origin bottom
right in this example. The easiest method is to use the Fill tool to
draw out the outline first. This might be drawn out in a section view
through the stair, copied, then pasted into the ground floor plan.
Move it to the origin.
107
For the window sections, walls have the benefit of having a constant
width and height, and in some way relate to actual window sections if
you are computing the lengths.
For the outer window sections, make sure the walls follow the Fill
perfectly, touching the edges of the opening. You can flip the wall
reference line if you need to. You make a judgement now as to
whether the internal mullions and transoms are centred or referenced
to the edges. It also pays to set a small grid in this example, I set it
to 10mm (0.625). Using the Wall tool, your textures will line up
nicely along the frames.
Do the glass for the window by applying the Magic wand to the
whole fill there is no harm in taking the glass right to the edge. If
you have to be pedantic and make each piece of glass separately, then
magic wand a dumb piece of Floorslab over the fill, make it Concrete
and 300mm thick, Give it an object ID of Wallhole in the settings
dialog. When you are in the script later, you will know its not the glass
and you can change it to a Hole cutting outline for the wall.
108
Unmodifed, the window will create a rectangle of A x B. The task is to shape the
wall around the window frame.
To make the window, you view it in 3D, in Plan, from 270. Save as a
Window, editable. Now place into the plan a new wall about 6m (20)
high, and place the window.
This finished window is 6500x 4271mm and would be used in a 2
storey height wall. When it comes in, it will cut a rectangle of A and B
of that size. We can tidy it up somewhat as we did for the table its
easier to identify the parts if all the frames are walls and the glass is a
slab. Either the glass or that extra slab will act as your cutting outline.
!
Name
: window_complex2.gsm
!
Date
: May 2004
!
Version : 8.10
!
Written by ArchiCAD, modified by DNC
MULXA/ 6.5
MULYB/4.271227780756
MULZZZYZX/0.08
ADDX
3.25
BODY
-1
MODEL SOLID
RESOL
36
Introduction to Object Making
Many sections of window frames appear after this.. but all have
been omitted for clarity. You only need to change the materials. You
could change the thickness of the frame and the depth if you wish to,
but in this situation, you are better advised to get it right in the
original plan and only make the materials parametric, and to cut the
wallhole. Lets pick up the 3D script near the end...
!!Typical Window frame section up the side
elevation
ADD -4.055, 3.686666666667,
0
ROTZ 270
xWALL_{2} gs_frame_mat, gs_frame_mat,
gs_frame_mat, gs_frame_mat,
0.08, 0.04342585459107, 2.256574145409,
2.289907478742, 0.0767591879244,
7.976936617858E-018, 4.145122554509E-016,
0.05, 0.05, 0.05, 0,
0, 0,
15, 15, 15, 15,
0, 0
DEL 2
BODY -1
!!Window and hole
PEN
gs_glass_pen
ADDZ
0.04
cPRISM_ gs_glass_mat, gs_glass_mat, gs_glass_mat,
24,
0.02,
0,
0,
15,
-0.5,
2,
15,
Introduction to Object Making
-1.5,
-4.5,
-4.561310905493,
-4.688716060937,
-4.820255333372,
-4.955258428817,
-5.093037402443,
-5.232890164181,
-5.374104056416,
-5.515959485522,
-5.657733588747,
-5.79870391776,
-5.938152120077,
-6.075367599624,
-6.209651137769,
-6.340318456382,
-6.46670370476,
-6.5,
-6,
-5,
-2,
0,
2,
15,
4,
79,
4.035715090578,
4.098215535982,
4.151467757689,
4.195200394584,
4.229190595175,
4.253265153189,
4.267301390198,
4.271227780756,
4.265024316876,
4.248722609987,
4.222405729853,
4.186207781261,
4.14031322066,
4.084955916211,
4.020417956049,
4,
15,
2,
15,
2,
15,
0,
15,
0,
-1
79,
79,
79,
79,
79,
79,
79,
79,
79,
79,
79,
79,
79,
79,
79,
The trick here is that you have a prism for the glass that exactly fits
the desired window opening point by point. So Copy and Paste a
duplicate of it, exactly as done here, and retitle the start of the pasted
prism statement with a WALLHOLE statement. Use the
AC_Holesidematerial parameter instead of the prism thickness.
Have the two commands immediately next to each other.
WALLHOLE 24, AC_Holesidematerial,
0,
0,
15,
-0.5,
2,
15,
-1.5,
2,
15,
-4.5,
4,
79,
-4.561310905493, 4.035715090578,
-4.688716060937, 4.098215535982,
-4.820255333372, 4.151467757689,
-4.955258428817, 4.195200394584,
-5.093037402443, 4.229190595175,
-5.232890164181, 4.253265153189,
-5.374104056416, 4.267301390198,
-5.515959485522, 4.271227780756,
-5.657733588747, 4.265024316876,
79,
79,
79,
79,
79,
79,
79,
79,
79,
109
-5.79870391776,
-5.938152120077,
-6.075367599624,
-6.209651137769,
-6.340318456382,
-6.46670370476,
-6.5,
-6,
-5,
-2,
0,
DEL
DEL TOP
4.248722609987,
4.222405729853,
4.186207781261,
4.14031322066,
4.084955916211,
4.020417956049,
4,
15,
2,
15,
2,
15,
0,
15,
0,
-1
79,
79,
79,
79,
79,
79,
110
Use a new trick with a roof outline to do the same cutting in future
versions.
Windows are sometimes objects if they are freestanding and not
to be placed in a wall.
111
112
ADD 0,0,0.6
ROTy 90
CYLIND 5*(pspac),0.03
DEL 2
Top, Open GL makes it look smooth, no matter what you set for RESOL.
Note that a trick is used to improve the look of the capping rail. By
making it slightly longer (by one diameter) than the sum of the
distances of the poles, it looks more authentic in the welded joint.
We take advantage of Z-buffering here. The Cylinders are actually
colliding with the handrail although Open GL and the ArchiCAD 3D
drawing engine makes them look as if they are joining smoothly.
We can improve the way the loop is coded in two small ways. The first
one worked fine, but we had to DEL all the cursor moves after the
loop was complete. We also specified the stepping value. This method
includes the DEL inside the loop, so that the loop is cleanly
self-contained.
FOR k=1 TO 6
ADDX pspac*(k-1)
CYLIND 1.0,0.05
DEL 1
NEXT k
113
Now we place the ADDX command before the cylinder. The first
time, the value of (k-1) is zero, so if you multiply pspac by zero, the
distance added is zero. So it plants the first pole. Then it DELs back
to the origin. When k is equal to 2, the distance moved is pspac*1
so it draws the next pole, then returns to the origin.
Notice that in the first case, we specified the stepping rate to be 1. If
it is 1, you can omit that STEP value, but if it is anything else at all,
you must specify the STEP, or GDL will assume a value of 1 which
could be misinterpreted as 1.0 metres, or 1.0 degrees!
114
Loop by Angle
There are many occasions when your object has interesting circle
geometry. Here is a similar handrail, but now its enclosing a curved
running track. We use the FOR... NEXT loop to distribute the
posts at an angular spacing of 15.
This brings the opportunity to introduce you to two more GDL
commands: ELBOW and TOLER. ELBOW is like a cylinder but it is a
cylinder which curves at a defined radius, to a defined sweep angle.
ELBOW curve radius, alpha angle, tube radius
Because elbows always grow upwards, you have to precede the
command with a ROTX -90 and lift it to the height of the top of the
posts.
Curvature control
We want to control the number of polygons in the model, or the
renderer will be too slow if there are too many of these rails. Open
GL and Photorendering can smooth curved surfaces so it is not
necessary to have a lot of polygons to get smooth effects. RESOL is
code for Resolution of Curvature and allows you to define how
many polygons you want on a typical curve. RESOL 10 gives 10
polygons to all the cylinders. If you use this for something like the
curved handrail, you will get a polygonal not curved rail, so you need
something more sophisticated TOLER.
Poor old RESOL is too simple for complex objects. In any elbow, we
have two curves, the main curve and the tubing curve. If we have a
large resolution (we need at least RESOL 36) so that the rail looks
Introduction to Object Making
right, and if we have a lot of rails in the project, the tubing will have
too many polygons, and the computer could be crippled trying to
shade all those surfaces.
TOLER 0.005. This command sets the error to 5mm (3/16)
If you issue a TOLER dimension command, curvature is
controlled in both small and large 3D shapes. TOLER stands for
tolerable error so you need to provide a dimension, like a few
millimetres, a fraction of an inch, whatever you think is right. As the
curve is traced, GDL measures the difference between the curve and
a tangent to the curve. So small tubing will have only 6 or 8 faces
(which is smoothed by Open GL), and on the large curve it will
follow the curve smoothly. It is a very useful command.
115
From the centre, you can run a FOR NEXT loop in which for each
iteration you move out the the edge of the circle and draw an upright,
and rotate slightly each time before the next upright. By using DEL
within the loop, you have a nice tidy loop.
For the rail, we start from the centre of the circle and move out to
build the uprights and handrail. Rotate the rail slightly using the
ROTZ command, move to the first upright with the ADD command,
lay the ELBOW over on its side (with a sweep slightly longer than the
required sweep angle) and draw the rail. In this case, we had do use a
trick to make sure the weld detail would look good at the end posts.
We calculate what fraction a single radius of the post would be of the
total circumference. That becomes an internal parameter ovra
(overhanging angle) and its easy to get a good weld detail by rotating
and extending the rail slightly.
116
This steel tube can be stretched and twisted and rotated in 3D You get the changes
display visually as you work, both in the object and in a small dialog box above.
Graphical hotspots (GHs) can control distance and angle. It seems
that most objects can be manipulated successfully with these two. If
you can think of another mode of action, put it on the Graphisoft
wishlist.
You can use GHs in 2D or 3D. The general rule is to use GHs that
control X and Y dimensions in the 2D and use the 3D for heights or
twisting motions. Another rule is that you should write all the hotspot
routines before the bulk of either 2D Script or the 3D Script. This is so
that the parameters resulting from the hotspot manipulation are
swiftly passed on to the rest of the script.
There is not space to cover the topic of GHs fully here, but lets alert
you to the possibilities of GHs here and try a simple exercise. You will
Introduction to Object Making
117
find GHs very thoroughly covered in the ArchiCAD Help menu and
the GDL Cookbook theres a lot more to them than this brief
mention permits.
Using the hotspots above, you can safely use the ABzzyzx cuboid.
Lets try the GHs method instead. The syntax for a graphical hotspot
is:
HOTSPOT x,y,z, uniqueID, parameter, code !3D
HOTSPOT2 x,y, uniqueID, parameter, code !2D
118
ROTy 90
CYLIND 5*(pspac) +0.1,0.05
DEL 2
!Mid rail
ADD 0,0,0.6
ROTy 90
CYLIND 5*(pspac),0.03
DEL 2
ENDGROUP
handrail=ADDGROUP('uprights','rails')
PLACEGROUP handrail
Here you can see the finished object near to. Behind you see the spheres which have
been subtracted from the cylinder.
Introduction to Object Making
The earlier chair on the right looks messy at the joints. SGC cleans it all up!
Even subcomponents are tidied up, such as the junction of the braces relative to
each other. We cannot get rid of the pen lines on the cone-ends except by using a
REVOLVE instead of a CONE.
!Chair 3D Script - With Solid Geometry
!to improve the look of the joints
PEN cont_pen
TOLER 0.001
GROUP 'legs'
GOSUB 100:!All the legs
ENDGROUP
GROUP 'seat'
GOSUB 200:!Seat and upholstery
ENDGROUP
GROUP 'back'
GOSUB 300:!Back
ENDGROUP
GROUP 'braces'
GOSUB 400:!Braces
ENDGROUP
119
GROUP 'arms'
GOSUB 500:!Arms
ENDGROUP
chair=ADDGROUP('legs','seat')
chair=ADDGROUP( chair,'back')
chair=ADDGROUP( chair,'braces')
chair=ADDGROUP( chair,'arms')
PLACEGROUP chair
KILLGROUP chair
END:!____________________________
120
Defining style is done in the form of the script here. The 1,0 mean
that it is to be left-justified and normal (i.e. not bold or italic). See the
Help Menu or GDL Cookbook for a more extended discussion of
defining style.
You must also SET STYLE before the text will recognise it. The
TEXT2 statement includes the XY position of the text (just below
the left chair leg) and the string. A normal string is in quotes, or in this
case is a parameter from the ValueList.
121
122
INDEX
Numerics
2D Full View 43
2D Hotspots 51
2D Script 43
2D Symbol 25, 27, 31, 43, 79
2D symbol 24, 50
3D 112
~ View 45
3D Cafe 13
3D Cursor 45
3D Cutaway 19
3D projection setting 25
3D Projection Settings 19, 22
3D projection settings 31
3D Script 43
3D script 72
3D View 43
3DS 13
3NF 14
A
Abvent 99
AC_Holesidematerial 109
ADD 45
ADD2 45
ADDGROUP 119, 120
Add-on 99
Add-ons 13, 14, 19, 33, 37, 41, 82, 91
Adobe Photoshop 95
ADT 17
Align Texture 26, 93
Align texture 19
Alpha channel 91, 92, 97
animation 121
ARC2 52, 69, 122
ArchiCAD 9 12, 52, 110, 120, 122
ArchiCAD Library 13, 14, 20, 21, 40
ArchiCAD library 28, 36, 85
ArchiCAD Reference Guide 9, 18
ArchiCAD University 92
ArchiCAD-Talk 92
ArchiFacade 91, 99
ArchiFM 52, 75
Introduction to Object Making
ArchiForma 28, 34
Archiforma 14
ArchiPaint 91
ArchiRadar 13
ArchiTerra 10
Architerra 91
Arkiklub 13
Artlantis 91, 100
AutoCAD 13, 17
Autoscripted 10, 27
Autoscripted GDL 71
Autoscripting 19
autoscripting 101
C
CADCAM 16
CALL 71, 85
Carpet 91, 96
Chair 24, 47
Check Script 45
Chesspieces 81
Chris Jones 38
Cigraph 13, 99
CIRCLE2 50, 71
Clean Wall Intersections 24
CNC 58
Column tool 21
Comma 66
Comment 43, 46, 60
CONE 44, 47, 52
Convert Mesh to Roof 33
Convert Roof to Mesh 37
COONS 121
COOR 87
Coordinates palette 19, 22, 27, 45
counterclockwise 63
CPRISM_ 62, 64, 71, 73
cPRISM_ 102
CSLAB_ 71, 79
curtain walling 110
Curvature 115
curvature control 81
CUTFORM 121
Cutout 91, 97
CUTPLANE 65, 121
CUTPOLY 106, 121
CUTPOLYA 106
CYLIND 44, 52
D
David Sutherland 42
Default Translator 20
DEFINE MATERIAL 98
DEFINE TEXTURE 97
Defining Text 120
DEL 45
DEL TOP 46
Design Workshop 13
Dimensions 44
Display Options 24
Display Order 98
DNA 58
DO... WHILE 116
Door 15, 33
door 24
Doors 101
DXF/DWG 13, 18, 20, 82
123
Index
G
GDL Adaptor 13
GDL adaptor 17
GDL Alliance 13
GDL Central 13
GDL Cookbook 9, 61, 87, 97, 112, 121
18
124
J
Jodrell Bank 38
L
label 84
Lamp 15
Lara Croft 33
Las Vegas 72
Le Corbusier 9
Libraries 10
Library Manager 40
Lightworks 12, 91
Line tool 26
line weight 20
LINE2 50, 52, 71, 74, 96, 122
loaded library 29
LOCK 61
Log setting 25
London 32, 116
London Millennium Wheel 116
Loops 112
Lovell Radio Telescope 38
M
M.A.D. 13
Macro 89
Macros 85
Magic Wand 19, 24, 26, 27, 37
Magic wand 17, 30, 95, 108
magic wand 21
Manufacturers Rules 50
Marks Barfield 116
Marquee 17, 19, 30, 41
masking code 63
Masking codes 81
MASS 71, 121
Master Script 43, 54, 56, 58, 68, 77, 83
MATERIAL 44
Material 46, 92
Materials 75
materials 15
Matthew Lohden 92
Melbourne 42
Mesh tool 14, 37
Missing objects 29
MODEL SOLID 73
Module 15, 40, 41
MUL 45
MultiObject 58, 85
MULX 72
MULY 72
MULZ 72
N
Naming 122
naming 40
Norwegian window 86
Nottingham 100
Introduction to Object Making
Index
O
Object Genome 58
Object Genome Project 54
Object Making 9
Objects On Line 13
Open GL 12, 33, 87, 91, 93, 94, 97, 113
Options menu 87, 92
Orcutt Winslow 16
Origin 20, 21, 26, 44, 45, 47, 71, 77, 93, 101, 103
P
PARAGRAPH 120
Parameter arrays 121
parameter naming 49
Parameter Script 43, 56
Parameter Table 42, 48, 49, 54, 60, 67, 78
PARAMETERS 54, 60, 61, 69, 77, 86
Parameters button 43
Parametric 74
parametric 10, 17, 34, 48, 66
PEN 44, 102
Pen 75
People 91
people 98
People and More 13
Pet Palette 19
Pet palette 21
PhotoCAD 99
Photorender 97
Photoshop 91, 92, 95, 100
PICTURE 95
Picture 91
picturereality 91
Piranesi 91, 100
PLACEGROUP 119, 120
POLY_ 98
POLY2 52, 74, 122
POLY2_B{2} 71, 79, 80
Polylines 80
Popdown Menus 56
Popdown menus 52, 60
popdown menus 54
Preview Picture 25, 41, 43, 60
primitive forms 16
PRISM 52
Prism syntax 64
Profiler 10, 14, 16, 19, 31, 33, 34, 35, 38, 41, 80,
Introduction to Object Making
82
Programming 112
Project Framework 18
PROJECT2 43, 46, 50, 69, 72, 74, 78, 81, 118
Property Script 43
PUT & GET 121
PYRAMID 80
R
racecourse rail 115
rapid prototyping 16
ray-tracing 12
RECT2 50
reflection 12
Rendering 12, 74
REPEAT... UNTIL 116
REQUEST 120, 121
RESOL 47, 53, 73, 82, 113, 115
Resolution of Curvature 47
RETURN 77, 84
REVOLVE 64, 80, 81, 112, 119
Rhino 13
Rich Text 120, 122
RICHTEXT 120
RICHTEXT2 120
Robert Luck 32
Roof tool 14, 19, 38
Roof Truss 25
RoofMaker 10, 14
Roofmaker 37
ROT2 45
RPC 91
RULED 80
Schedules 40, 75
Section/Elevation 23, 25
SEO 35, 36, 39
SET STYLE 120
Settings dialog 19, 98
SGC 12, 90, 118
Shadows 97
Silicon Graphics 12
Sketchup 13, 33
Skylights 105
Slab tool 14, 21, 23, 24, 26, 62, 92
Solid Element Operations 12, 19, 34, 35, 36, 39
121
Solid Operations 41
spaghetti 46, 84
SPHERE 44
SPLINE2A 71
SPRISM_ 62, 65
StairMaker 10
status codes 79
STEP 114
Stretchiness 19, 49, 72
students 41
Studio Arkada 13
STYLE 120
STYLE{2} 120
Subroutine 77
subroutine 102
Subroutines 58, 83, 85
Subtype 12, 15, 43, 101, 105
Subtypes 11, 52, 75, 101
SWEEP 64, 80
T
Table 21
template 75
TEXT2 71, 120
TEXTBLOCK 120
Textures 41, 87
textures 16, 23
Theometrics 13
TOLER 53, 82, 115
Tools menu 35
Tools palette 10, 14, 15, 16, 17, 19, 22, 40
transparency 98
trees 91, 98
trigonometry 121
Trim to Roof 38
True Line Weight 51
Trussmaker 14, 16, 19, 27, 28, 34, 37, 38, 41, 82
TUBE 64, 73, 82, 112
typographical discipline 46
U
Urban modelling 32
User Interface 61, 102, 121
User Interface Script 43
User Interface script 86
125
Index
X
XWALL 79
XWALL_{2} 71
126