BasicWindowPanelCurved Macro
1. General Description
A window can use this macro to draw a curved window panel in 2D and in 3D.
![]() |
![]() |
2. Parameters
This macro has similar input parameters as a normal ArchiCAD window:
| Name | Type | Description | Mode used in |
|---|---|---|---|
| A | Width | Width of window panel. | 2D / 3D |
| gs_widthTotal | Width | Original Nominal Width. | 2D / 3D |
| B | Height | Height of window panel. | 3D |
| bDisabeMirroring | Boolean | Disable Window Mirroring. | 2D / 3D |
| bOpeningDirection | Boolean | Opening Direction. | 2D / 3D |
| gs_nominal_size_jamb_inner | Boolean | Nominal Size = Jamb Inner Size. | 2D / 3D |
| overSize | Length | Oversize | 3D |
| --- | --- | Frame Definition | |
| gs_frame_thk | Length | Frame thickness of the panel. | 2D / 3D |
| gs_frame_width | Length | Frame width of the panel. | 2D / 3D |
| gs_frame_ovhg_left_out | Angle | Left Outside Overhang. | 2D / 3D |
| gs_frame_ovhg_right_out | Angle | Right Outside Overhang. | 2D / 3D |
| gs_frame_ovhg_top_out | Length | Top Outside Overhang. | 3D |
| gs_frame_ovhg_bottom_out | Length | Bottom Outside Overhang. | 3D |
| gs_frame_ovhg_left_in | Angle | Left Inside Overhang. | 2D / 3D |
| gs_frame_ovhg_right_in | Angle | Right Inside Overhang. | 2D / 3D |
| gs_frame_ovhg_top_in | Length | Top Inside Overhang. | 3D |
| gs_frame_ovhg_bottom_in | Length | Bottom Inside Overhang. | 3D |
| gs_glass_thk | Length | Glass Thickness. | 3D |
| --- | --- | 2D Representation | |
| lod2D | Integer | Level of detail in 2D (0..4) | 2D only |
| gs_pen_2D | Pencolor | Panel pen. | 2D only |
| gs_frame_pen_cont | Pencolor | Pen of the frame contour. | 2D / 3D (Section View) |
| gs_fillFr | Fillpattern | Frame fill pattern type | 2D / 3D (Section View) |
| gs_penFr_fg | Pencolor | Frame fill foreground pen | 2D / 3D (Section View) |
| gs_penFr_bg | Pencolor | Frame fill background pen | 2D / 3D (Section View) |
| gs_fillShCover | Fillpattern | Sash fill pattern type for bottom side | 2D |
| gs_penShCov_fg | Pencolor | Sash fill foreground pen for bottom side | 2D |
| gs_penShCov_bg | Pencolor | Sash fill background pen for bottom side | 2D |
| --- | --- | 3D Representation | |
| lod3D | Integer | Level of detail in 3D (0..2) | 3D only |
| gs_frame_pen | Pencolor | Frame pen. | 3D only |
| gs_glass_pen | Pencolor | Glass pen. | 3D only |
| --- | --- | Materials | |
| gs_frame_mat | Material | Frame material. | 3D only |
| gs_glass_mat | Material | Glass material. | 3D only |
Thickness and width values
To clear the meaning of the thickness and width parameters used in ArchiCAD windows, see the following picture:
Frame overhang values
The following picture explains the frame overhang values in 2D.
2D and section attributes
3. Usage
2D Script
In this script, the window object has to contain the following code portion. In addition, it has to empty the transformation stack before calling this macro (e.g. with a del top command)
bOpeningDirection = 0 WOD = WIDO_ORIG_DIST + WIDO_REVEAL_SIDE * WIDO_FRAME_THICKNESS add2 0, WIDO_ORIG_DIST rot2 180 + SYMB_ROTANGLE hotspot2 0, sqr(WOD * WOD + A * A / 4) del 2 call "BasicWindowPanelCurved.gsm", parameters A = A, gs_widthTotal = A, bDisabeMirroring = 0, bOpeningDirection = 0, gs_nominal_size_jamb_inner = 0, gs_frame_thk = gs_frame_thk, gs_frame_width = gs_frame_width, gs_frame_ovhg_left_out = gs_frame_ovhg_left_out, gs_frame_ovhg_right_out = gs_frame_ovhg_right_out, gs_frame_ovhg_left_in = gs_frame_ovhg_left_in, gs_frame_ovhg_right_in = gs_frame_ovhg_right_in, gs_fillFr = gs_fillFr, gs_penFr_fg = gs_penFr_fg, gs_penFr_bg = gs_penFr_bg, gs_fillShCover = gs_fillShCover, lod2D = lod2D, gs_pen_2D = gs_pen_2D, gs_frame_pen_cont = gs_frame_pen_cont
3D Script
In this script, the window object has to contain the following code portion. In addition, it has to empty the transformation stack before calling this macro (e.g. with a del top command)
call "BasicWindowPanelCurved.gsm", parameters A = A, gs_widthTotal = A, B = B, bDisabeMirroring = bDisabeMirroring, bOpeningDirection = bOpeningDirection, gs_nominal_size_jamb_inner = gs_nominal_size_jamb_inner, overSize = overSize, gs_frame_thk = gs_frame_thk, gs_frame_width = gs_frame_width, gs_frame_ovhg_left_out = gs_frame_ovhg_left_out, gs_frame_ovhg_right_out = gs_frame_ovhg_right_out, gs_frame_ovhg_top_out = gs_frame_ovhg_top_out, gs_frame_ovhg_bottom_out = gs_frame_ovhg_bottom_out, gs_frame_ovhg_left_in = gs_frame_ovhg_left_in, gs_frame_ovhg_right_in = gs_frame_ovhg_right_in, gs_frame_ovhg_top_in = gs_frame_ovhg_top_in, gs_frame_ovhg_bottom_in = gs_frame_ovhg_bottom_in, gs_fillFr = gs_fillFr, gs_penFr_fg = gs_penFr_fg, gs_penFr_bg = gs_penFr_bg, gs_glass_thk = gs_glass_thk, gs_pen_2D = gs_pen_2D, gs_frame_pen_cont = gs_frame_pen_cont, gs_frame_pen = gs_frame_pen, gs_glass_pen = gs_glass_pen, gs_frame_mat = gs_frame_mat, gs_glass_mat = gs_glass_mat
Hotspots
The macro places hotspots only at the frame corners:
Level of detail in 2D
The lod2D value controls the panel's level of detail in 2D drawings. If it is zero, no panel will be drawn at all. The following figure shows the available values (and the suggested scales of usage):
The width of the visible frames are different in lower details depending on the gs_bFixedSash value: it is "gs_frame_width" for fixed panels and "gs_frame_width / 2 + gs_sash_width" for non-fixed ones.
Note, that the frame fill appears only at the highest level of detail.

