# Exclamation Point
# http://combscript.justinbakse.com/

properties:
    name: canvas
    width: 5*(side_length+.2in)# 8.5in
    height: body_length+.2in
constants:
    side_length: 2.2in
    body_length: 7in
    tab_margin: 4in/8
    #side_length: 1.5in
    #tab_margin: 1in/5
    tab_width: 3in/8
    tab_height: .12in # material thickness
    slot_press_fit_margin: .020in # bigger means smaller slots, laser will cut away rest of material
children:
    - region_grid:
        properties:
            rows: 2
            width: side_length+grid_margin
            height: 2*(side_length+grid_margin)
            registration: center
            margin_left: 4*side_length+2*grid_margin
            margin_top: 0in
        constants:
            grid_margin: .2in
        children:
        - rectangle:
            properties:
                name: one face of the "point" in an exclamation point
                registration: top_left
                width: side_length-2*tab_height
                height: side_length-2*tab_height
            constants:
                slot_margin: tab_margin + (slot_press_fit_margin/2)
                slot_length: tab_width-(slot_press_fit_margin)
                tab_margin: tab_margin-tab_height
                grid_margin: .2in
            children:
                - rectangle:
                    properties:
                        margin_top: 0in
                        margin_left: tab_margin+tab_width
                        width: parent_width-2*tab_margin-2*tab_width
                        height: 3*tab_height
                        boolean: subtract
                # top tabs
                - rectangle:
                    properties: 
                        width: tab_width
                        height: tab_height
                        margin_left: tab_margin
                        margin_top: 0in-tab_height
                        boolean: add
                - rectangle:
                    properties: 
                        width: tab_width
                        height: tab_height
                        margin_right: tab_margin
                        margin_top: 0in-tab_height
                        boolean: add
                # bottom tabs
                - rectangle:
                    properties: 
                        width: tab_width
                        height: tab_height
                        margin_left: tab_margin
                        margin_bottom: 0in-tab_height
                        boolean: add
                - rectangle:
                    properties: 
                        width: tab_width
                        height: tab_height
                        margin_right: tab_margin
                        margin_bottom: 0in-tab_height
                        boolean: add
                # left slots
                - rectangle:
                    properties:
                        width: tab_height
                        height: tab_width
                        margin_left: 0in-tab_height
                        margin_top: tab_margin
                        boolean: add
                - rectangle:
                    properties:
                        width: tab_height
                        height: tab_width
                        margin_left: 0in-tab_height
                        margin_bottom: tab_margin
                        boolean: add
                # right slots
                - rectangle:
                    properties:
                        width: tab_height
                        height: tab_width
                        margin_right: 0in-tab_height
                        margin_top: tab_margin
                        boolean: add
                - rectangle:
                    properties:
                        width: tab_height
                        height: tab_width
                        margin_right: 0in-tab_height
                        margin_bottom: tab_margin
                        boolean: add
    - region_grid:
        properties:
            rows: 1
            columns: 2
            width: 2*side_length+grid_margin
            height: body_length+grid_margin
            margin_left: 0in
            margin_top: 0in
            registration: center
        constants:
            slot_margin: tab_margin + (slot_press_fit_margin/2)
            slot_length: tab_width-(slot_press_fit_margin)
            grid_margin: .2in
        children:
            - rectangle:
                properties:
                    name: one face of the "point" in an exclamation point
                    registration: top_left
                    width: side_length
                    height: body_length
                children:
                    # top tabs
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_left: slot_margin
                            margin_top: 0in
                            boolean: subtract
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_right: slot_margin
                            margin_top: 0in
                            boolean: subtract
                    # bottom tabs
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_left: slot_margin
                            margin_bottom: 0in
                            boolean: subtract
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_right: slot_margin
                            margin_bottom: 0in
                            boolean: subtract
                    # left slots
                    - rectangle:
                        properties:
                            width: tab_height
                            height: slot_length
                            margin_left: 0in
                            margin_top: slot_margin
                            boolean: subtract
                    - rectangle:
                        properties:
                            width: tab_height
                            height: slot_length
                            margin_left: 0in
                            margin_bottom: slot_margin
                            boolean: subtract
                    # right slots
                    - rectangle:
                        properties:
                            width: tab_height
                            height: slot_length
                            margin_right: 0in
                            margin_top: slot_margin
                            boolean: subtract
                    - rectangle:
                        properties:
                            width: tab_height
                            height: slot_length
                            margin_right: 0in
                            margin_bottom: slot_margin
                            boolean: subtract
    - region_grid:
        properties:
            rows: 1
            columns: 2
            width: 2*(side_length-tab_height+grid_margin)
            height: body_length+grid_margin
            margin_left: 2*side_length+grid_margin
            margin_top: 0in #side_length+grid_margin
            registration: center
        constants:
            slot_margin: tab_margin + (slot_press_fit_margin/2)
            slot_length: tab_width-(slot_press_fit_margin)
            grid_margin: .2in
        children:
            - rectangle:
                properties:
                    name: one face of the "point" in an exclamation point
                    registration: top_left
                    width: side_length-2*tab_height
                    height: body_length
                children:
                    # top tabs
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_left: slot_margin-tab_height
                            margin_top: 0in
                            boolean: subtract
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_right: slot_margin-tab_height
                            margin_top: 0in
                            boolean: subtract
                    # bottom tabs
                    - rectangle:
                        properties: 
                            width: slot_length
                            height: tab_height
                            margin_left: slot_margin-tab_height
                            margin_bottom: 0in
                            boolean: subtract
                    - rectangle:
                        properties: 
                            width: tab_width
                            height: tab_height
                            margin_right: slot_margin-tab_height
                            margin_bottom: 0in
                            boolean: subtract
                    # left slots
                    - rectangle:
                        properties:
                            width: tab_height
                            height: tab_width
                            margin_left: 0in-tab_height
                            margin_top: tab_margin
                            boolean: add
                    - rectangle:
                        properties:
                            width: tab_height
                            height: tab_width
                            margin_left: 0in-tab_height
                            margin_bottom: tab_margin
                            boolean: add
                    # right slots
                    - rectangle:
                        properties:
                            width: tab_height
                            height: tab_width
                            margin_right: 0in-tab_height
                            margin_top: tab_margin
                            boolean: add
                    - rectangle:
                        properties:
                            width: tab_height
                            height: tab_width
                            margin_right: 0in-tab_height
                            margin_bottom: tab_margin
                            boolean: add