Shutter Macro
1. General Description
A window can use this macro to draw Shutter in 2D and 3D. The macro can manage the different kinds of walls, e.g. staright and curved walls.
2. Parameters
This macro has similar input parameters as a normal ArchiCAD window:
| Name | Type | Default | Scripts related to the parameter | Remarks | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| A | Length | 1 | 2D / 3D | Nominal width of the wall opening | ||||||
| B | Length | 1 | 3D | Nominal height of the wall opening | ||||||
| ZZYZX | Length | 1 | - | Not used | ||||||
| AC_show2DHotspotsIn3D | Boolean | 0 | - | Not used | ||||||
| offsX | Length | 0 | 2D / 3D | Horizontal coordinate offset length | ||||||
| offsY | Length | 0 | 3D | Vertical coordinate offset length | ||||||
| isWindow | Boolean | 0 | Parameter | Identifies the type of object, the macro was called from.
|
||||||
| gs_window_shutter | Text | "Off" | Parameter | Shutter chooser for Windows | ||||||
| gs_door_shutter | Text | "Off" | Parameter | Shutter chooser for Doors | ||||||
| iShutterStyle | Integer | 2 | 2D / 3D | Style of the Shutter panels | ||||||
| gs_shutter_type | Text | "Decorative" | Parameter | Shutter type name | ||||||
| iShutterType | Integer | 1 | 2D / 3D | Type of the Shutter.
|
||||||
| iShutterShape | Integer | 1 | 3D | Shutter shape | ||||||
| archHeight | Length | 0.25 | 3D |
Height of the Arc. Only effective when iShutterShape = 1 |
||||||
| nArchResolution | Integer | 0 | 3D |
Arc resolution for arched shutter. if nArchResolution < 3, WALL_RESOL used instead. |
||||||
| gs_shutter_width | Length | 0.45 | 2D / 3D | Shutter Width - Only effective in case of Functional Shutters, iShutterType = 2 | ||||||
| gs_shutter_thk | Length | 0.05 | 2D / 3D | Shutter Thickness | ||||||
| gs_shutter_pos | Text | "Both Sides" | Parameter | Shutter position chooser | ||||||
| iShutterPos | Integer | 1 | 2D / 3D | Identifies the position of the Shutter panels.
|
||||||
| gs_shut_open | Boolean | 0 | 3D | The open/closed state of the Shutter.
|
||||||
| gs_shut_stile_width | Length | 50 | 3D | "Width of Stiles" | ||||||
| gs_shut_bottom_rail_width | Length | 0.075 | 3D | "Width of Bottom Rail" | ||||||
| gs_shut_top_rail_width | Length | 0.05 | 3D | "Width of Top Rail" | ||||||
| gs_shut_horizontal_board_width | Length | 0.0 | 3D | "Horizontal Board Width" | ||||||
| gs_shut_vertical_board_width | Length | 0.0 | 3D | "Vertical Board Width" | ||||||
| gs_shut_louver_width | Length | 0.05 | 3D | "Louver Width" | ||||||
| gs_shut_louver_thk | Length | 0.008 | 3D | "Louver Thickness" | ||||||
| gs_shut_louver_angle | Angle | 30.0 | 3D | "Louver Angle" | ||||||
| gs_shut_board_width | Length | 0.0 | 3D | "Board Width" | ||||||
| gs_shut_board_thk | Length | 0.0 | 3D | "Board Thickness" | ||||||
| gs_hor_bn | Integer | 1 | Parameter | Indicates the number of Horizontal Boards | ||||||
| gs_ver_bn | Integer | 1 | Parameter | Indicates the number of Vertical Boards | ||||||
| gs_window_trim | String | Trim/Casing | ||||||||
| iTrim | Integer | 1 | 2D / 3D / Parameter | "Trim" | ||||||
| gs_trim_oversize | Boolean | 0 | 2D / 3D / Parameter | "Trim Oversize" | ||||||
| gs_trim_width | Length | 0 | 2D / 3D / Parameter | Trim Width | ||||||
| gs_trim_width_in | Length | 0 | 2D / 3D / Parameter | "Trim Width Inside" | ||||||
| gs_trim_width_out | Length | 0 | 2D / 3D / Parameter | "Trim Width Outside" | ||||||
| gs_trim_thk | Length | 0 | 2D / 3D / Parameter | Trim Thickness | ||||||
| gs_trim_thk_out | Length | 0 | 2D / 3D / Parameter | Thickness of the exterior casing. | ||||||
| iSill | Integer | 1 | 3D | Sill | ||||||
| gs_sill_oversize | Boolean | 0 | 3D | "Sill Oversize" | ||||||
| iSillType | Integer | 1 | 3D | "Type of the Sill" | ||||||
| gs_sill_thk | Length | 0 | 3D | "Sill Thickness" | ||||||
| gs_board_thk | Length | 0 | 3D | "Board Thickness" | ||||||
| gs_window_oversize | Title | --- | - | Oversize | ||||||
| gs_left_oversize | Length | 0 | 2D / 3D | "Left Opening Oversize" | ||||||
| gs_right_oversize | Length | 0 | 2D / 3D | "Right Opening Oversize" | ||||||
| ac_corner_window | Boolean | 1 | 2D / 3D / Parameter | Switch to Corner Window mode | ||||||
| ac_cw_function | Boolean | 0 | 2D / 3D / Parameter | "Placement Type (1=CW,0=W)" | ||||||
| gs_window_stack | Title | --- | - | Stacked Window | ||||||
| gs_stack_left | Boolean | 0 | 2D / 3D / Parameter | "Connection on the Left" | ||||||
| gs_stack_right | Boolean | 0 | 2D / 3D / Parameter | "Connection on the Right" | ||||||
| gs_stack_top | Boolean | 0 | 2D / 3D | "Connection on the Top" | ||||||
| gs_stack_bottom | Boolean | 0 | 2D / 3D | "Connection on the Bottom" | ||||||
| gs_2D_representation | Title | --- | - | 2D Representation | ||||||
| lod2D | Integer | 1 | 2D |
Level of Detail in 2D
|
||||||
| gs_pen_2D | PenColor | 3 | 2D | 2D Contour Pen | ||||||
| gs_shutter_fill | FillPattern | 65 | 2D / 3D (Section View) | Shutter Fill Type | ||||||
| gs_shutter_fill_pen_fg | PenColor | 0 | 2D / 3D (Section View) | Shutter Fill Pen | ||||||
| gs_shutter_fill_pen_bg | PenColor | 0 | 2D / 3D (Section View) | Shutter Fill Background Pen | ||||||
| gs_3D_representation | Title | --- | - | 3D Representation | ||||||
| lod3D | Integer | 1 | 3D | Level of detail in 3D
|
||||||
| gs_frame_pen | PenColor | 2 | 3D | Contour pen in 3D | ||||||
| gs_resol | Integer | 32 | 3D | Arc resolution. Minimum value: 3 | ||||||
| gs_window_material | Title | --- | - | Materials | ||||||
| gs_shut_frame_mat | Material | 0 | 3D | Material of the frame of the Shutter. | ||||||
| gs_shut_fill_mat | Material | 0 | 3D | Matreial of the louvers. | ||||||
| gs_stShutter | String | Parameter | One dimension Array parameter for receiving locale strings. |
Geometry parameters of Shutter
The following pictures clear the meaning of the geometry specific parameters used in Shutter macro:
Shutter panel shape and style
There are two shapes and seven available shutter styles plus the undisplayed state.
Shapes
| 0 - Square | 1 - Arched |
![]() |
![]() |
Styles
| 1 | Off | 2 | ![]() shutter with louvers |
| 3 | ![]() shutter with louvers and one horizontal bar |
4 | ![]() shutter with louvers and one horizontal and one vertical bar |
| 5 | ![]() old style shutter |
6 | ![]() shutter with solid panel |
| 7 | ![]() shutter with solid panel and one horizontal bar |
8 | ![]() solid shutter |
Level of Detail in 2D
There are two levels of detail programmed into the macro.
2D Representation
The following picture explains the meaning of 2D attribute parameters.
3. Usage
Localization
The macro's default language is the English, but you can localize it with the gs_stShutter parameter.
| Row | Default value | Description |
|---|---|---|
| 1 | Off | Value list item - gs_window_shutter |
| 2 | Style 1 | Value list item - gs_window_shutter |
| 3 | Style 2 | Value list item - gs_window_shutter |
| 4 | Style 3 | Value list item - gs_window_shutter |
| 5 | Style 4 | Value list item - gs_window_shutter |
| 6 | Style 5 | Value list item - gs_window_shutter |
| 7 | Style 6 | Value list item - gs_window_shutter |
| 8 | Style 7 | Value list item - gs_window_shutter |
| 9 | Decorative | Value list item - gs_shutter_type |
| 10 | Functional | Value list item - gs_shutter_type |
| 11 | Both Sides | Value list item - gs_shutter_pos |
| 12 | Right Side | Value list item - gs_shutter_pos |
| 13 | Left Side | Value list item - gs_shutter_pos |
| 14 | Shutter Settings | UI String - tabpage name |
| 15 | Materials | UI String - static text (title of the materials pane) |
| 16 | Fills | UI String - static text (title of the fills pane) |
| 17 | Shutter Style | UI String - static text - gs_shutter_type |
| 18 | Shutter Width | UI String - static text - gs_shutter_width |
| 19 | Shutter Position | UI String - static text - gs_shutter_pos |
| 20 | Close Shutter | UI String - static text - gs_shut_open |
| 21 | Frame | UI String - static text - gs_shut_frame_mat |
| 22 | Filling | UI String - static text - gs_shut_fill_mat |
| 23 | Type | UI String - gs_fillShutter |
| 24 | Pen | UI String - gs_penShutter_fg |
| 25 | Backgr. Pen | UI String - gs_penShutter_bg |
Parameter Script
For implementing the parameter logic of the Shutter, you have to call this macro passing the following parameters.
! Master Script =============================================================== dim gs_stShutter[] gs_stShutter[13] = "" gs_stShutter[ 1] = `Off` gs_stShutter[ 2] = `Style 1` gs_stShutter[ 3] = `Style 2` gs_stShutter[ 4] = `Style 3` gs_stShutter[ 5] = `Style 4` gs_stShutter[ 6] = `Style 5` gs_stShutter[ 7] = `Style 6` gs_stShutter[ 8] = `Style 7` gs_stShutter[ 9] = `Decorative` gs_stShutter[10] = `Functional` gs_stShutter[11] = `Both Sides` gs_stShutter[12] = `Right Side` gs_stShutter[13] = `Left Side` ! Parameter Script ============================================================ call "Shutter" parameters A = A, isWindow = 1, iShutterShape = iWindowShape, gs_window_shutter = gs_window_shutter, gs_shutter_type = gs_shutter_type, gs_shutter_pos = gs_shutter_pos, gs_shut_stile_width = gs_frame_width, ! --- Trim iTrim = iTrim, gs_trim_oversize = gs_trim_oversize, gs_trim_width = gs_trim_width, gs_trim_width_in = gs_trim_width_in, gs_trim_width_out = gs_trim_width_out, gs_trim_thk = gs_trim_thk, gs_trim_thk_out = gs_trim_thk_out, ! --- Corner Window Function --- ac_cw_function = ac_cw_function, ac_corner_window = ac_corner_window, ! --- Stacked Window gs_stack_left = gs_stack_left, gs_stack_right = gs_stack_right, ! --- String Resource --- gs_stShutter = gs_stShutter
2D Script
In the 2D script the window has to contain the following code portion.
It has to empty the transformation stack before calling this macro (eg. with a del top command)
! ===== Draw Shutter ===== if iShutterStyle <> 1 then call "Shutter" parameters A = A, offsX = 0, iShutterStyle = iShutterStyle, iShutterType = iShutterType, iShutterPos = iShutterPos, gs_shutter_width = gs_shutter_width, gs_shutter_thk = 1 3/4", gs_shut_open = gs_shut_open, ! --- Trim iTrim = iTrim, gs_trim_oversize = gs_trim_oversize, gs_trim_width = gs_trim_width, gs_trim_width_in = gs_trim_width_in, gs_trim_width_out = gs_trim_width_out, gs_trim_thk = gs_trim_thk, gs_trim_thk_out = gs_trim_thk_out, ! --- Oversize --- gs_left_oversize = gs_left_oversize, gs_right_oversize = gs_right_oversize, ! --- Corner Window Function --- ac_cw_function = ac_cw_function, ac_corner_window = ac_corner_window, ! --- Stacked Window gs_stack_left = gs_stack_left, gs_stack_right = gs_stack_right, ! --- 2D Representation lod2D = lod2D, gs_pen_2D = gs_pen_2D, gs_shutter_fill = emptyFill, gs_shutter_fill_pen_fg = 0, gs_shutter_fill_pen_bg = GLOB_DRAWING_BGD_PEN endif
3D Script
In this script the window has to contain the following code lines.
It has to empty the transformation stack before calling this macro (eg. with a del top command)
! ===== Draw Shutter ===== if iShutterStyle <> 1 then call "Shutter" parameters A = A, B = B, offsX = 0, offsY = 0, iShutterStyle = iShutterStyle, iShutterType = iShutterType, iShutterPos = iShutterPos, iShutterShape = 1, gs_shutter_width = gs_shutter_width, gs_shutter_thk = 1 3/4", gs_shut_louver_width = 2", gs_shut_louver_thk = 3/8", gs_shut_open = gs_shut_open, gs_shut_stile_width = gs_frame_width, gs_shut_bottom_rail_width = gs_frame_width, gs_shut_top_rail_width = gs_frame_width, ! --- Trim iTrim = iTrim, gs_trim_oversize = gs_trim_oversize, gs_trim_width = gs_trim_width, gs_trim_width_in = gs_trim_width_in, gs_trim_width_out = gs_trim_width_out, gs_trim_thk = gs_trim_thk, gs_trim_thk_out = gs_trim_thk_out, ! --- Sill Parameters iSill = iSill, iSillType = iSillType, gs_sill_oversize = gs_sill_oversize, gs_sill_thk = gs_sill_thk, gs_board_thk = gs_board_thk, ! --- Oversize gs_left_oversize = gs_left_oversize, gs_right_oversize = gs_right_oversize, ! --- Corner Window Function --- ac_cw_function = ac_cw_function, ac_corner_window = ac_corner_window, ! --- Stacked Window gs_stack_left = gs_stack_left, gs_stack_right = gs_stack_right, gs_stack_top = gs_stack_top, gs_stack_bottom = gs_stack_bottom, ! --- 2D Representation gs_pen_2D = gs_pen_2D, gs_shutter_fill = emptyFill, gs_shutter_fill_pen_fg = 0, gs_shutter_fill_pen_bg = GLOB_DRAWING_BGD_PEN, ! --- 3D Representation lod3D = lod3D, gs_frame_pen = gs_frame_pen, gs_resol = res, ! --- Materials gs_shut_frame_mat = gs_shut_frame_mat, gs_shut_fill_mat = gs_shut_fill_mat endif
UI Script
For implementing the Shutter user interface page into your object, just call the macro from the UI script.
! Master Script =============================================================== dim gs_stShutter[] gs_stShutter[13] = "" gs_stShutter[ 1] = `Off` gs_stShutter[ 2] = `Style 1` gs_stShutter[ 3] = `Style 2` gs_stShutter[ 4] = `Style 3` gs_stShutter[ 5] = `Style 4` gs_stShutter[ 6] = `Style 5` gs_stShutter[ 7] = `Style 6` gs_stShutter[ 8] = `Style 7` gs_stShutter[ 9] = `Decorative` gs_stShutter[10] = `Functional` gs_stShutter[11] = `Both Sides` gs_stShutter[12] = `Right Side` gs_stShutter[13] = `Left Side` ! UI Script =================================================================== gs_stShutter[25] = "" gs_stShutter[14] = `Shutter` gs_stShutter[15] = `Materials` gs_stShutter[16] = `Fills` gs_stShutter[17] = `Shutter Style` gs_stShutter[18] = `Shutter Width` gs_stShutter[19] = `Shutter Position` gs_stShutter[20] = `Close Shutter` gs_stShutter[21] = `Frame` gs_stShutter[22] = `Filling` gs_stShutter[23] = `Type` gs_stShutter[24] = `Pen` gs_stShutter[25] = `Backgr. Pen` tabpageIndex = 1 call "Shutter.gsm" parameters isWindow = 1, iShutterShape = iWindowShape, gs_window_shutter = gs_window_shutter, gs_shutter_type = gs_shutter_type, gs_stack_left = gs_stack_left, gs_stack_right = gs_stack_right, gs_bFills = gs_bFills, idTab_ShutterSettings = tabpageIndex, gs_stShutter = gs_stShutter








