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.
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.
(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))
(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))