COMPUTER AIDED
ARCHITECTURAL DESIGN
Workshop 10 Notes,
Week of November 9, 2009
Editing by
Projection,
Fence Tools, Cutting Solids with Surfaces, GC Examples with Functions
PART
I: FENCE TOOLS
Fence tools allow
you to select a
portion of a view window and to perform
operations on it, such as editing,
deleting, moving, copying, rotating, scaling or stretching geometrical
elements. You can also render a sub-portion of a window
through
the use of a fence tools. The fence tool is projected into
the
view window to perform these various operations.
1. COPY AND CLIP OPERATION
Within
MIcrostation V8i,
start a new drawing, open the
Utilities>Auxiliary Coordinates dialog box. Use
the save ACS icon
in upper left-hand
corner and save the current default ACS plane as "base".
Turn on the ACS PLane lock by opening the padlock symbol at the lower part of the screen. Next, use the Solids Modeling, "Slab Solid" tool
to create a solid slab on the
ground plane.
Select the front view (View 3) and use the "Define auxiliary
coordinates by view" icon , highlighted in the Auxiliary
Coordinates
dialog box below (7th icon from left-hand side), to create an ACS in
the
front view window.
Save the new ACS as "front" within the Auxiliary Coordinates
dialog box.

Open the fence tools subpalette from the main task menu (#2 key).

Draw
a
"Fence" in the front view window with "Fence Mode" set to
"Clip". This mode
isolates what's inside the fence from the outside.

Select the "Manipulate Fence
Contents Icon" (second icon in the Fence palette) andnthe "Move"
option, and enter two data points in the front view with to
clip off and move upward
the geometry that is encompassed within the fence.
This is a
quick boolean operation. Here we are working from a 2D projection of
the fence onto the objects from the view plane.

Similarly, select the top view
window. Select the "base" ACS form
the
Auxiliary Coordinates Dialog box, and repeat the same move
operation on the upper "Y" axis portion of the cubes from the top view.

The
result
of the preceding two operations is to splice the slab into four slabs.
Note that the fence tool in the top view operates on upper
visible slab as well as the occluded lower slab in that view.
That is, the fence projects the operation entirely through every object
in its pathway in that view.
2.
STRETCH
OPERATION
Re-select
the front view, then select the "front" ACS in the Auxiliary
Coordinates dialog box, and place the fence over the slabs in
the
lower portion of the view window. Next use the "Manipulate
Fence Contents" and "Stretch" tool option (shown
below) to
change the
height of the cubes on the ground plane..

Once
again,
the fence projects the operation entirely through every object
in its pathway in that view and they are stretched to have a larger
"Y'" dimension. Note that a truncated cone (not shown) in similar situation would also have stretched in a tapering
way preserving its tapering geometry. Similarly, other objects will also stetch appropriate to their
geometry.

3.
NON-RECTANGULAR FENCE
Select the "Front" view and then the "front: ACS from the Auxiliary Coordinates Dialog box. Next, select
the" Fence"
tool,
change the fence type to "Shape", and
draw an
arbitrary polygon over the front view.

Zoom out of the
"Front" view
and use the "Manipulate Fence Contents/Move" option to clip the
arbitrary shape to a location above the slabs. Note that the operation
cuts the arbitrary shape out of the cubes and moves it above them.
3. RENDERING WITH THE
FENCE TOOL
In View 2, draw a "block"
Fence
over a portion of the view window. In the Visualization task, adjust
the solar lighting using the W1 tool, select the "Render"
(Q1) tool, and choose the "Fence" option. The result is that
a
smaller sample portion of the view window is rendered. This can be a
very efficient way to sample the rendering quality without having to
expend much greater time in testing the entire view window. Note that
rendering 1/4th of the view window in Ray Trace will be significantly
faster than doing the whole view.

Note that the Render
dialog box
also allows you to render individual objects in several render modes,
such as Phong or Smooth shading. This is achieved by selecting the
third icon in the "Render" dialog box as depicted below. However, this
doens't work in Ray Trace mode (since the rendering algorithm is based
on backward tracing of rays for every pixel in the rendered area).
PART
II: EDIT BY
SURFACE PROJECTION
Erase
the current elements in the
model, and place a rectangular block and a bspline curve in the ground
plane. Next, within the Solids task, use the projection tool (T1)to project the bspline
curve into the vertical direction.
Place a slab in the model so that it is fully encompassed by the new
surface.

In the Surfaces task, sleect the "Trim Surfaces" tool (S1) and select
the
"Trim 2nd" option, then pick the surface first and the slab second.
Enter an additional data point in the view window to initiate the trim
and a fourth data point to confirm it. Note that a portion of
the
slab is trimmed away.
The reverse part of
the slab is trimmed away if the "Flip 2nd' option is turned on.
The
surface trims the slab according
to the direction of its surface normal vector (the positive side of the
surface). This vector can be reversed through the use of the "Change
Surface Normal" tool(S6) in the "Surfaces" task(image at left below). Selecting the green
surface normal arrow will reverse its direction. Completing this step
and re-doing the trim surface operation will reverse the portion of the
slab that is trimmed away.
PART
III: GC FUNCTION EXAMPLES (EXTRACURRICULAR)
The
two examples presented here go slightly beyond the scope of our basic
introduction to generative components and incorporate "function" update
methods that contain "while" loops.
1. Spiral
The GC
example
spiral2.gct draws and archimedes
spriral that can be transformed into an accelerating spiral. A number
of graph variables are
defined in
the first
step of this GC file according to the methods examined in earlier
workshops. The variables determine the resolution, scope and size of
the spiral:
numsides = number of sides in each 360 degree spiral
numspirals = total number of 360 degree spirals
radius = radius of initial spiral
angleincrement = incremental angular distance between points in a given
spiral ( = 360 / numsides)
deltaradius = accelerating rate for the radius from spiral to spiral
Note that if deltaradius = 0, then the spiral is an archimedes spiral.
If delatradius > 0, then the spiral accelerates.

In the second
step, the GC file incorporates a polygon line " Function" update
method, essentially a short algorithm that handles the generation of
the spiral.

When placing the
mouse in the textbox containing the function arguements
"{angleincrement, numsides, numspirals, radius, deltaradius}", the
function arguments can be more closely examine by selecting the text
editing icon (a small rectangle next to the "fx" symbol) that appears on the right hand side of the "FunctionArguements" textbox below.

Note that the arguments are set off by a left and right curly bracket.
These are the same variables that were defined in the first step of the GC
file.

SImilarly, when placing the mouse in the Function textbox adjacent to the words "Function (double
angleincrement, double numside ... }, the function update
method can be examined more closely. The details of this function are
somewhat beyond the intentions of this quick summary, and so a brief
overview is given here only.
The arguments to the function are all given a type "double" declaration
in that they are decimal numbers. Additional integer "int"
and "double" variables are defined internal to the function. The update
method
incorporates a "while" loop that continues to repeat when "curangle" of
the radial point tracing out the spiral is less than then "maxAngle",
the maximum angle of the final point in the spiral. Note
that "maxAngle = 360 * numspirals". Inside the "while" loop,
as the point travels around the center of the spiral, the
current angle and radius is continually updated. Each new point in the
spiral is stored in a Point array named "ptLlist" . Thus, the first
point is stored in "ptList[0]", the second point is stored in
"ptList[1]" and so on. When the loop is concluded, a polyline
is created from the listing of points.

The use of
iterative loops can efficiently express a
condition in which an action is repeated continuously as is used to
draw
the spiral. Note, if the variable
"deltaradius" is equal to 0, then the result of the above function is an
Archimedes spiral.

If the variable ""deltaradius" is greater than
0, then the spiral becomes accelerating one.

2. Daisy head
Similarly, the example file daisyseedfromFermat.gct
incorporates a de-accelerating spiral according to a theorem by the
mathematician Fermat. That is, the basis for the geometry is a Fermat
curve. The code for this example after an algorithm initially published by Dixon. Placed
along the loop are polygons that capture the pattern of seeds in a
daisy head. The variables for the transaction file can control the
tightness of the seeds together and the number of spirals as
illustrated in the following three images.
 |
 |
 |
tightness is
high, number of spirals is low |
tightness is
low, number of spirals is low |
tightness is
low, number of spirals is high |