screwlisp proposes a toast

Monasticlisp common lisp repl monastery blueprinting

I wrote a McCLIM GUI app for quickly hand-entering monastic blueprints in a lisp repl with a dynamically updating visualization. Here is the file: monasticlisp.lisp. I added the sexprs for two monasteries: Dundrennan and Basingwerk Abbey at the end of this page. The code has an example of the common lisp interface manager’s define-presentation-action on blank-area which is lisp’s “click somewhere but not necessarily on anything” GUI gesture idiom.

Two monastery blueprints

Dundrennan

A black and white floor plan of Dundrennan monastery

Basingwerk Abbey

A black and white floor plan of Basingwerk Abbey

Work in progress screenshot

A WIP screenshot of the basingwerk floor plan being built above an amber darkfield terminal emacs repl.

Useage

You use this (including https://codeberg.org/McCLIM/McCLIM ) like

(require :mcclim)
(load "monasticlisp.lisp")
(in-package :clim-user)
(use-package :nast)
(run-frame-top-level *fr*)

and click Help in the menu bar.

Appendix: Monastery sexprs

Dundrennan

(MAKE-APPLICATION-FRAME BLUEPRINT-FRAME
                        :WALLS
                        (COPY-TREE
                         '((:WALL (14 10) (18 10) (20 10) (18 10) (18 20)
                            (17 20))
                           (:WALL (14 20)) (:WALL (14 20) (4 20))
                           (:WALL (4 20) (4 -3) (14 -3) (14 20) (4 20) (15 20)
                            (16 20))
                           (:WALL (-3 16) (-3 11) (4 11) (4 18) (4 20) (1 20))
                           (:WALL (-3 18) (-10 18) (-10 -5) (-3 -5) (-3 18))
                           (:WALL (-3 20) (-3 26) (-10 26) (-10 20) (-1 20))
                           (:WALL (-3 28) (-10 28) (-10 26) (-3 26) (-3 28))
                           (:WALL (-3 45) (-3 47) (-10 47) (-10 28) (-3 28)
                            (-3 43))
                           (:WALL (13 22) (17 22) (15 22) (13 22) (13 25)
                            (8 25) (8 22))
                           (:WALL (19 23) (19 43) (19 22) (19 43) (0 43) (0 22)
                            (19 22))
                           (:WALL (25 16) (25 17) (20 17) (20 16) (25 16))
                           (:WALL (31 22) (31 24) (31 20) (31 24) (22 24)
                            (22 -7) (31 -7) (31 16) (39 16) (31 16) (31 18)
                            (31 10) (46 10) (46 16) (41 16))
                           (:WALL (22 24) (31 24) (31 28) (22 28) (22 27))
                           (:WALL (22 32) (22 28) (37 28) (37 38) (22 38)
                            (22 34))
                           (:WALL (22 39) (22 38) (31 38) (31 41) (22 41)
                            (22 40))
                           (:WALL (31 51) (46 51) (46 60) (31 60))
                           (:WALL (35 60) (35 70) (22 70) (22 64) (-10 64)
                            (-10 47) (22 47) (22 41) (35 41) (35 51))))
                        :PILLARS
                        (COPY-TREE
                         '((11 52 1) (7 52 1) (3 52 1) (-1 52 1) (-5 59 1)
                           (-5 52 1) (-1 59 1) (3 59 1) (7 59 1) (11 59 1)
                           (15 59 1) (15 52 1) (19 52 1) (19 59 1) (23 52 1.5)
                           (23 59 1.5) (30 66 1) (30 63 1) (30 59 1.5)
                           (30 45 1) (30 48 1) (30 52 1.5)))
                        :SCALE
                        (COPY-TREE '5))

Basingwerk Abbey

(MAKE-APPLICATION-FRAME BLUEPRINT-FRAME
                        :WALLS
                        (COPY-TREE
                         '((:WALL (9 42) (29 42) (29 69) (9 69) (9 42))
                           (:WALL (5 42)) (:WALL (34 55) (34 57))
                           (:WALL (34 54) (34 55) (47 55) (47 54) (47 55)
                            (52 55) (52 63) (34 63) (34 60) (34 65) (34 63)
                            (46 63) (46 68) (34 68) (34 66))
                           (:WALL (32 39) (34 39) (34 22) (32 22) (32 39)
                            (32 6) (47 6) (47 0) (47 50) (47 49) (34 49)
                            (34 50) (34 39) (34 22) (47 22))
                           (:WALL (17 10) (14 10) (14 14) (17 14))
                           (:WALL (-1 71) (-1 22) (17 22) (17 36) (9 36)
                            (24 36) (17 36) (17 6) (29 6) (29 36))
                           (:WALL (5 74) (5 36) (-16 36) (-16 76) (-7 76))
                           (:WALL (-7 74) (34 74) (34 68) (52 68) (52 74)
                            (46 74) (52 74) (52 82) (46 82) (58 82) (58 92)
                            (46 92) (52 92) (52 98) (46 98) (52 98) (52 105)
                            (34 105) (34 97) (-7 97) (-7 74))))
                        :PILLARS
                        (COPY-TREE
                         '((39 17 0.5) (39 11 0.5) (39 14 0.5) (28 90 1/2)
                           (23 90 1/2) (18 90 1/2) (13 90 1/2) (8 90 1/2)
                           (3 90 1/2) (3 80 1/2) (8 80 1/2) (13 80 1/2)
                           (18 80 1/2) (23 80 1/2) (28 80 1/2) (33 80 1)
                           (33 91 1)))
                        :SCALE
                        (COPY-TREE '5))
screwlisp proposes a toast