| Basic Library Version: 9 | |||||||||||||||||||||||||||||||||||||||||||||||||
WallLogic Macro1. General DescriptionThis macro is used to retrieve wall-type-independent information about transformations used by window panels assembled in the wall. Trapeze wall
Curved wall
The macro returns some basic information on the top of the GDL stack in the following order:
2. ParametersThe macro has the following input parameters:
3. UsageThe macro works with window panels. It handles them as they were normal windows in a virtually smaller wall opening (see virtual wall segment faded out in the figure below). This example shows a window with two curved panels. As you can see, the OA distance is the original WIDO_ORIG_DIST value for the large opening. In case of the left panel, the macro gets this value in its WOD parameter. The A parameter contains the length of the window chord. These values will be used to calculate the desired window-relative transformation components (offsets and angles).
The returned innerRadius value for this panel is the
length of the OB line, and the AOB-angle is the angleOrigin
value. The x-Offset, y-Offset
coordinates belong to the AB vector in the (x', y') Carthesian coordinate system.
This vector is used in the main window to transform the local origin to the wall's corner (point B)
before the left side CavityClosure macro call.
Let's explain the meanings of the returned parameters with the following example script. We transform the local origin from point A to point D (see figure above). This operation is required to draw the left side curved panel later with BasicWindowPanel as if it was an ordinary window:
WOD = abs(WIDO_ORIG_DIST)
call "WallLogic" PARAMETERS EPS = 0.0001, ! tolerance
A = SYMB_A_SIZE, ! total width (2 * CA dist.)
WOD = WOD
mul2 get (2) ! transform local coordinate system to x', y'
curvedWall = get (1) ! retrieve wall type
wallIsLeft = get (1) ! retrieve wall type
angOrig = get (1) ! retrieve AOB angle
inRadius = get (1) ! retrieve OB distance
ofsX = get (1) ! retrieve x' component of AB vector
ofsY = get (1) ! retrieve y' component of AB vector
if curvedWall then
add2 ofsX, ofsY ! move from A to B
rot2 angOrig
add2 0, -inRadius ! move to O
rot2 -angOrig / 2
add2 0, WOD / cos (angOrig) * cos (angOrig / 2) ! move to D
! At this point the local coordinate system is in point D, as desired.
del 5
endif
...
del 1
4. RemarkFor more information about window panels, see BasicWindowPanel. |
|||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Copyright © 2004 - Graphisoft R&D Software
Development Rt. All rights reserved worldwide. |