Close homemaker-py-hqw: make project standalone (no Perl/Urb dependency)

Copy programme-house corpus (36 .dom + .score + .fails + patterns.config)
into examples/ and update all 5 test files to use project-relative paths.
Native Python fitness (use_native=True) was already the default; tests now
run without /home/bruno/src/urb present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Bruno Postle 2026-06-13 23:39:20 +01:00
parent 33d79be3fe
commit c37f03f1a1
43 changed files with 3914 additions and 15 deletions

View file

@ -9,7 +9,7 @@
{"id":"homemaker-py-1p0","title":"Geometry inner loop: full-objective equal-offset ratio optimiser","description":"DESIGN.md §5.1, §7 Phase 1. Productionise experiments/optimize_fullfitness.py into homemaker: optimise(topology, x0=None) -\u003e (geometry, fitness). DOF = equal-offset division ratios of free branches (solver.free_branches, lowest-storey cut ownership), clipped to [eps, 1-eps]. Objective = full oracle fitness (never a proxy — §4.2 falsified). Must support warm-start x0 (§5.6) and a population/batch evaluation mode so each iteration scores via one batched oracle call (§4.6).","acceptance_criteria":"Reproduces or exceeds §4.5 gains (x1.24x1.67, no new failures) on 2f45907, candidate-002, c964435; works as a library call on any corpus .dom","status":"closed","priority":1,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:36:58Z","created_by":"Bruno Postle","updated_at":"2026-06-12T08:46:31Z","started_at":"2026-06-12T00:14:19Z","closed_at":"2026-06-12T08:46:31Z","close_reason":"innerloop.optimise() lands: batched CMA-ES sigma ladder (0.05/0.15, IPOP popsize doubling, deterministic seeding) over equal-offset free-branch ratios vs full oracle fitness; warm-start x0 supported. Acceptance vs unprojected originals: x1.65/x1.66/x1.58 against bars x1.24/x1.67/x1.59, no new failures, 46 oracle calls vs NM's 200. Two near-bar results accepted as reproduced-within-noise (1% tol) — draw spread brackets the single-NM-draw bars; approved by Bruno 2026-06-12. Gotchas: equal-offset projection of legacy unequal cuts loses fitness/adds failures (midpoint projection used); pycma seed=0 means clock-seeded.","dependencies":[{"issue_id":"homemaker-py-1p0","depends_on_id":"homemaker-py-av5","type":"blocks","created_at":"2026-06-12T00:39:33Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":3,"comment_count":0}
{"id":"homemaker-py-8cs","title":"Experiment: warm-vs-cold start of inner loop (Lamarckian inheritance)","description":"DESIGN.md §5.6, §4.6. Warm-starting a child topology's inner loop from the parent's optimised ratios is the main lever for cutting per-topology cost (~3 min/topology cold). Apply single topology mutations to optimised corpus designs, re-optimise warm (surviving cuts keep values, new cuts get heuristic defaults) vs cold, compare oracle-call counts to convergence at equal final fitness.","acceptance_criteria":"Speedup factor measured across \u003e=10 mutated topologies; decision recorded (expect order-of-magnitude; if \u003c2x, revisit §4.6 Phase-2 scoping)","notes":"Experiment script committed (experiments/warm_vs_cold.py, 1cc86c8) and machinery validated oracle-free; one mutated child scored through the oracle OK. Waiting on homemaker-py-gp2 reference run to finish, then execute under URB_NO_OCCLUSION=1 (3 parents x 400 evals + 12 children x 2 x 200 evals, ~1.5-2 h oracle time). Default budgets: parent 400, child 200; target = evals to 95% of best final.","status":"closed","priority":1,"issue_type":"task","owner":"bruno@postle.net","created_at":"2026-06-11T23:36:58Z","created_by":"Bruno Postle","updated_at":"2026-06-12T11:44:45Z","closed_at":"2026-06-12T11:44:45Z","close_reason":"Measured (URB_NO_OCCLUSION=1, parent budget 400, child 200, 12 single mutations across 3 designs): cold start reached 95% of warm final in 0/12 cases within budget — speedup unbounded at practical budgets; warm finals beat cold finals x1.2-x4 in 12/12; 6/12 warm starts were within 95% at 1 eval (near-neutral mutations). Decision: Lamarckian warm-starting is MANDATORY in the memetic driver (homemaker-py-b39), not an optimisation; cold starts produce strictly worse geometry at equal budget. Note: 2 undivides were exactly fitness-neutral (same-type merge == Merge_Divided equivalence) — locality datum for homemaker-py-nyb.","dependencies":[{"issue_id":"homemaker-py-8cs","depends_on_id":"homemaker-py-1p0","type":"blocks","created_at":"2026-06-12T00:39:34Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0}
{"id":"homemaker-py-av5","title":"Batched oracle: score many .dom files per invocation","description":"oracle.py currently scores one .dom per urb-fitness.pl call (~1.65 s/dom). DESIGN.md §4.6: batching amortises Perl startup to ~0.99 s/dom and is required so population/batch optimisers can score a whole generation in one oracle call. Extend oracle.py with a batch API: write N .dom files, one perl invocation, parse N .score/.fails pairs. Keep the single-file path for compatibility.","acceptance_criteria":"Batch of 35 corpus files scores in one perl invocation; per-file results identical to single-file calls; measured s/dom reported","status":"closed","priority":1,"issue_type":"task","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:36:56Z","created_by":"Bruno Postle","updated_at":"2026-06-12T00:14:06Z","started_at":"2026-06-11T23:50:40Z","closed_at":"2026-06-12T00:14:06Z","close_reason":"score_batch() lands in oracle.py; 35-file corpus parity verified single-vs-batch (1e-12 rel fitness, exact fail sets); 0.98 s/dom batched vs 1.27 single, x1.30","dependency_count":0,"dependent_count":1,"comment_count":0}
{"id":"homemaker-py-hqw","title":"Make homemaker-py standalone: remove dependency on Perl Urb package","description":"Currently tests and fitness scoring depend on the Perl Urb package (urb-fitness.pl) and corpus files in /home/bruno/src/urb/examples/. The tool should be fully standalone and not require any external Perl packages or local urb corpus paths. This includes: bundling or reimplementing any needed reference data, making the native Python fitness the default path, and ensuring tests pass without /home/bruno/src/urb present.","status":"open","priority":2,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-13T22:27:54Z","created_by":"Bruno Postle","updated_at":"2026-06-13T22:27:54Z","dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"homemaker-py-hqw","title":"Make homemaker-py standalone: remove dependency on Perl Urb package","description":"Currently tests and fitness scoring depend on the Perl Urb package (urb-fitness.pl) and corpus files in /home/bruno/src/urb/examples/. The tool should be fully standalone and not require any external Perl packages or local urb corpus paths. This includes: bundling or reimplementing any needed reference data, making the native Python fitness the default path, and ensuring tests pass without /home/bruno/src/urb present.","status":"in_progress","priority":2,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-13T22:27:54Z","created_by":"Bruno Postle","updated_at":"2026-06-13T22:34:20Z","started_at":"2026-06-13T22:34:20Z","dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"homemaker-py-0px","title":"Blank-slate cold-start initialisation","description":"The outer search stalls when starting from init.dom (Phase 2 gate: 18 fails after 2000 evals vs urb-evolve's 6). The root cause is single-seed topology mutation chaining — building structure one room at a time gives no gradient across the large zero-feasibility region. Fix requires multi-start bootstrap: generate a diverse initial population by random topology sampling, or a greedy room-placement initialiser that satisfies adjacency/level constraints before handing off to the memetic loop. Without this the tool is only useful for refining existing designs, not designing new buildings from scratch.","acceptance_criteria":"Cold-start from init.dom reaches comparable fail count to urb-evolve within equal eval budget; tested on programme-house","status":"closed","priority":2,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-13T21:52:15Z","created_by":"Bruno Postle","updated_at":"2026-06-13T22:28:58Z","started_at":"2026-06-13T22:24:02Z","closed_at":"2026-06-13T22:28:58Z","close_reason":"Bootstrap implemented: auto-detect bare-plot seed, generate pop_size random topologies, evaluate each at child_budget before memetic loop; 3 new tests all green","dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"homemaker-py-ccw","title":"Scaled topology search on native fitness","description":"DESIGN.md §7 Phase 3 closing step. Once native fitness passes corpus parity, re-run the Phase-2 memetic search at real scale (population/generations comparable to urb-evolve) on the native objective. This is the first point where the §1 scaling question gets a real answer.","acceptance_criteria":"Full-scale run on programme-house beats both urb-evolve and the small-scale Phase-2 result; larger programme attempted","status":"closed","priority":2,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:38:59Z","created_by":"Bruno Postle","updated_at":"2026-06-13T21:11:13Z","started_at":"2026-06-13T20:49:27Z","closed_at":"2026-06-13T21:11:13Z","close_reason":"Closed","dependencies":[{"issue_id":"homemaker-py-ccw","depends_on_id":"homemaker-py-uxz","type":"blocks","created_at":"2026-06-12T00:39:44Z","created_by":"Bruno Postle","metadata":"{}"},{"issue_id":"homemaker-py-ccw","depends_on_id":"homemaker-py-way","type":"blocks","created_at":"2026-06-12T00:39:45Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":2,"dependent_count":1,"comment_count":0}
{"id":"homemaker-py-way","title":"Benchmark: memetic loop vs urb-evolve at equal oracle-call budget (Phase 2 gate)","description":"DESIGN.md §7 Phase 2 gate. Compare against urb-evolve from the same seeds/programmes at equal oracle-evaluation budget — NOT generations (urb-evolve has diversity injection/culling baked in, so generations are not comparable). Go/no-go: memetic loop must beat equal-budget urb-evolve. Scaling up waits for native fitness.","acceptance_criteria":"Best-fitness and failure-count comparison at \u003e=2 budgets, \u003e=3 seeds; go/no-go decision recorded in DESIGN.md","status":"closed","priority":2,"issue_type":"task","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:37:28Z","created_by":"Bruno Postle","updated_at":"2026-06-13T08:55:03Z","started_at":"2026-06-12T21:13:20Z","closed_at":"2026-06-13T08:55:03Z","close_reason":"Phase-2 gate run (benchmark_vs_urbevolve.py, 2026-06-13, 2000 evals, URB_NO_OCCLUSION=1): 2/3 seeds → REVIEW. Memetic beats urb-evolve by 1.91x/1.63x on seeded designs; blank-slate init.dom stalls at 18 fails vs urb-evolve's 6 (random-pop init advantage). Fix: patterns.config was missing from re-score cwd (run_search.py), giving false near-zero finals in first run. Results recorded in DESIGN.md §7 Phase 2 gate.","dependencies":[{"issue_id":"homemaker-py-way","depends_on_id":"homemaker-py-b39","type":"blocks","created_at":"2026-06-12T00:39:39Z","created_by":"Bruno Postle","metadata":"{}"},{"issue_id":"homemaker-py-way","depends_on_id":"homemaker-py-gp2","type":"blocks","created_at":"2026-06-12T08:27:45Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":2,"dependent_count":1,"comment_count":0}
@ -27,9 +27,9 @@
{"id":"homemaker-py-yg5","title":"Penalty reshaping: replace 0.5^n while preserving inner-loop protection","description":"DESIGN.md §4.7, §5.4, §7 Phase 4, §8.5. The 0.5^n cliff gives the outer search no gradient and rewards flag-count over geometry, but it also PROTECTS the inner loop from trading into new failures (§4.5). One fitness shape cannot naively be both soft outside and cliff-protected inside. Candidates: cliff-inside-inner-loop only, lexicographic (failure count first, score second), additive/soft, multi-objective Pareto. Must preserve the missing-space failure hierarchy (worse to drop a room than to have a poor one). Measure landscape + search outcomes; this helps Urb today too.","acceptance_criteria":"Chosen scheme documented with measurements: search improves while inner loop still never trades into new failures","status":"open","priority":3,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-11T23:39:00Z","created_by":"Bruno Postle","updated_at":"2026-06-11T23:39:00Z","dependencies":[{"issue_id":"homemaker-py-yg5","depends_on_id":"homemaker-py-uxz","type":"blocks","created_at":"2026-06-12T00:39:46Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0}
{"id":"homemaker-py-9gp","title":"Canonical slicing encoding (normalized Polish expression) + shape feasibility","description":"DESIGN.md §5.5, §7 Phase 5. Representation upgrade once core lands: normalized Polish expression / skewed slicing tree (WongLiu) for redundancy-free, high-locality topology moves (M1/M2/M3); bottom-up shape-feasibility checks to prune infeasible topologies before the inner loop. Goal: scale to larger programmes. Excluded representations stay excluded (§2): no sequence-pair/B*-tree (non-slicing).","acceptance_criteria":"Encoding round-trips with the genome; M1/M2/M3 moves implemented; measured search improvement on a larger-than-house programme","status":"open","priority":4,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-11T23:39:02Z","created_by":"Bruno Postle","updated_at":"2026-06-11T23:39:02Z","dependencies":[{"issue_id":"homemaker-py-9gp","depends_on_id":"homemaker-py-ccw","type":"blocks","created_at":"2026-06-12T00:39:48Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0}
{"id":"homemaker-py-2g5","title":"Rebuild occlusion/daylight/sun subsystem in Python (post-Phase-5, after optimisation fully native)","description":"DESIGN.md §6 port scope — a whole subsystem, not a term. quality_daylight (Leaf.pm:281-296) needs Urb::Misc::Sun + Urb::Field::Occlusion (+CIESky); quality_uncrinkliness also takes the occlusion object. Indoor spaces return 1 for daylight; cost is outdoor spaces + crinkliness. Port Sun_horizontal (262980-minute normalisation) and the occlusion wall set from Dom-\u003eWalls.","acceptance_criteria":"Daylight and crinkliness factors match Perl (float tolerance) across the corpus, including multi-storey cases","notes":"Re-scoped 2026-06-12: occlusion disabled in the Urb oracle instead of ported (see homemaker-py-gp2). Native fitness ships with simple crinkliness (illumination factor = 1, in homemaker-py-gnw). This issue is now the eventual Python occlusion rebuild, only after optimisation works entirely in Python. Restores outdoor-daylight and shaded-wall selection pressure.","status":"open","priority":4,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-11T23:38:25Z","created_by":"Bruno Postle","updated_at":"2026-06-12T07:27:48Z","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"memory","key":"homemaker-py-pythonpath-set-pythonpath-home-bruno-src","value":"homemaker-py PYTHONPATH: set PYTHONPATH=/home/bruno/src/homemaker-py/src or use 'python -m pytest' from the project root (which reads pyproject.toml and adds src/ automatically). Never try 'pip show' or 'pip install' — it's not installed as a package."}
{"_type":"memory","key":"strategy-decision-2026-06-12-bruno-occlusion-daylight","value":"Strategy decision 2026-06-12 (Bruno): occlusion/daylight is ORTHOGONAL to building a scalable optimiser. Disable it in Urb (env flag, homemaker-py-gp2) rather than port it; native fitness uses simple crinkliness (illumination factor = 1); rebuild occlusion in Python only after optimisation is fully native (homemaker-py-2g5, now P4). Consequence: all scores change when the flag flips — re-baseline corpus/.score, DESIGN \\$4.5 gains, gate bars at one clean boundary AFTER homemaker-py-1p0 closes; Phase-2 urb-evolve benchmark must run with the same flag."}
{"_type":"memory","key":"correction-to-urb-fitness-bug-memory-bruno-2026","value":"CORRECTION to urb-fitness-bug memory (Bruno, 2026-06-12): 'C' is NOT a 'covered' type — Is_Covered is a geometric predicate (indoor space above). Urb's generic types are canonically UPPERCASE: C=circulation, O=outside, S=sahn (get_space_types qw/C O S/; corpus is 100% uppercase, never 'c'/'o' leaves). The mixed-case designs that fired the latent ratio_type first-match bug were created by homemaker's own operator type pool emitting lowercase 'c'/'o' — fixed: driver/operators now emit uppercase generics only, and class checks use t[0].lower() in 'cos'. The Urb class-sum patch stays as defensive hardening (zero impact on canonical designs). Native port (3y7/gnw): treat type classes case-insensitively, generics canonically uppercase."}
{"_type":"memory","key":"urb-oracle-nondeterminism-urb-fitness-pl-output-varies","value":"Urb oracle nondeterminism: urb-fitness.pl output varies run-to-run from Perl hash-order randomisation — .fails line ORDER shuffles (compare sorted, use oracle.Score.fail_lines) and the score float can flip by ~1 ULP (compare with math.isclose rel_tol=1e-12, never ==). Not a batching artifact; affects single runs too. Matters for the Phase 3 native-fitness parity gate (homemaker-py-uxz)."}
{"_type":"memory","key":"user-preference-bruno-this-is-a-fedora-system","value":"User preference (Bruno): this is a Fedora system — NEVER install Python packages via pip without asking first; always ask whether to install the rpm via dnf (e.g. python3-cma) before considering pip. Applies to any dependency additions."}
{"_type":"memory","key":"urb-fitness-bug-found-fixed-2026-06-12","value":"Urb fitness bug found+fixed 2026-06-12 (patch in /home/bruno/src/urb, uncommitted): ProgrammeDriven.pm ratio_o/ratio_type grepped case-insensitively over the ratios hash and took the FIRST key — nondeterministic (x4.5 score swings) for designs with mixed-case type classes (both 'c' circulation and 'C' covered). Fixed to SUM the class (matches Is_Circulation//Is_Outside semantics); 35/35 corpus scores unchanged. CRITICAL for homemaker-py-3y7/gnw: the native port must implement class-SUM ratios. Building.pm has the same unpatched pattern (site-driven path, not used by our oracle). Also: the memetic search reward-hacked this bug before the fix — search results predating it are noise artifacts."}
{"_type":"memory","key":"correction-to-urb-fitness-bug-memory-bruno-2026","value":"CORRECTION to urb-fitness-bug memory (Bruno, 2026-06-12): 'C' is NOT a 'covered' type — Is_Covered is a geometric predicate (indoor space above). Urb's generic types are canonically UPPERCASE: C=circulation, O=outside, S=sahn (get_space_types qw/C O S/; corpus is 100% uppercase, never 'c'/'o' leaves). The mixed-case designs that fired the latent ratio_type first-match bug were created by homemaker's own operator type pool emitting lowercase 'c'/'o' — fixed: driver/operators now emit uppercase generics only, and class checks use t[0].lower() in 'cos'. The Urb class-sum patch stays as defensive hardening (zero impact on canonical designs). Native port (3y7/gnw): treat type classes case-insensitively, generics canonically uppercase."}
{"_type":"memory","key":"homemaker-py-pythonpath-set-pythonpath-home-bruno-src","value":"homemaker-py PYTHONPATH: set PYTHONPATH=/home/bruno/src/homemaker-py/src or use 'python -m pytest' from the project root (which reads pyproject.toml and adds src/ automatically). Never try 'pip show' or 'pip install' — it's not installed as a package."}
{"_type":"memory","key":"urb-oracle-nondeterminism-urb-fitness-pl-output-varies","value":"Urb oracle nondeterminism: urb-fitness.pl output varies run-to-run from Perl hash-order randomisation — .fails line ORDER shuffles (compare sorted, use oracle.Score.fail_lines) and the score float can flip by ~1 ULP (compare with math.isclose rel_tol=1e-12, never ==). Not a batching artifact; affects single runs too. Matters for the Phase 3 native-fitness parity gate (homemaker-py-uxz)."}
{"_type":"memory","key":"strategy-decision-2026-06-12-bruno-occlusion-daylight","value":"Strategy decision 2026-06-12 (Bruno): occlusion/daylight is ORTHOGONAL to building a scalable optimiser. Disable it in Urb (env flag, homemaker-py-gp2) rather than port it; native fitness uses simple crinkliness (illumination factor = 1); rebuild occlusion in Python only after optimisation is fully native (homemaker-py-2g5, now P4). Consequence: all scores change when the flag flips — re-baseline corpus/.score, DESIGN \\$4.5 gains, gate bars at one clean boundary AFTER homemaker-py-1p0 closes; Phase-2 urb-evolve benchmark must run with the same flag."}

View file

@ -0,0 +1,113 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 2
division:
- 0.599950804081447
- 0.606333997057706
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.658948373714837
- 0.650977150687468
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.558074990154856
- 0.549009226654028
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.573070816420214
- 0.606333997057706
height: 2.7
l:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.558074990154856
- 0.549009226654028
l:
type: b2
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 3
division:
- 0.573070816420214
- 0.606333997057706
height: 2.7
l:
rotation: 0
division:
- 0.485939337505182
- 0.472981052188782
l:
type: O
rotation: 2
r:
type: b1
rotation: 1
r:
rotation: 0
division:
- 0.558074990154856
- 0.549009226654028
l:
rotation: 3
division:
- 0.522060405694224
- 0.523561326462362
l:
type: t1
rotation: 0
r:
type: C
rotation: 1
r:
rotation: 3
division:
- 0.364709251592755
- 0.348310829289835
l:
type: C
rotation: 3
r:
type: t2
rotation: 0

View file

@ -0,0 +1,113 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.378863235215717
- 0.352107342964516
height: 3.6
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.272046320711251
- 0.273135719824572
l:
type: t3
rotation: 0
r:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 2
division:
- 0.266815892313844
- 0.352107342964516
height: 3.15
l:
rotation: 3
division:
- 0.493276493743343
- 0.273135719824572
l:
type: t2
rotation: 3
r:
rotation: 3
division:
- 0.43648440957823
- 0.438889102194046
l:
type: C
rotation: 0
r:
type: O
rotation: 0
r:
type: l1
rotation: 0
above:
rotation: 0
division:
- 0.377536726416306
- 0.352107342964516
height: 2.7
l:
rotation: 0
division:
- 0.272046320711251
- 0.273135719824572
l:
type: t2
rotation: 3
r:
rotation: 1
division:
- 0.473934906154782
- 0.438889102194046
l:
type: b2
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.409542046279492
- 0.411480860109901
l:
rotation: 3
division:
- 0.449571715787478
- 0.450783752244167
l:
type: C
rotation: 3
r:
type: t1
rotation: 0
r:
type: b1
rotation: 0

View file

@ -0,0 +1,105 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.681796364796382
- 0.666507842783208
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.385154624230216
- 0.425325459721316
l:
rotation: 1
division:
- 0.43859616067264
- 0.452455346437928
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
type: O
rotation: 2
r:
rotation: 1
division:
- 0.5660761955678
- 0.566318926462522
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 0
division:
- 0.317554429861135
- 0.669585416805334
height: 2.7
l:
rotation: 2
division:
- 0.385154624230216
- 0.387037179575097
l:
type: t2
rotation: 0
r:
type: b1
rotation: 0
r:
rotation: 3
division:
- 0.5660761955678
- 0.566318926462522
l:
type: C
rotation: 0
r:
type: t1
rotation: 0
above:
rotation: 1
division:
- 0.265337858323527
- 0.669585416805334
height: 2.7
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.501797365257554
- 0.566318926462522
l:
type: C
rotation: 0
r:
type: b2
rotation: 0

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.331413948270883
- 0.334700173214137
height: 3.15
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.452770336466857
- 0.444242853292145
l:
rotation: 2
division:
- 0.385595791132051
- 0.385595791132051
l:
type: C
rotation: 0
r:
type: t3
rotation: 0
r:
type: b2
rotation: 2
r:
rotation: 3
division:
- 0.470118039662231
- 0.453180243156831
l:
rotation: 3
division:
- 0.447190569269084
- 0.445817736108476
l:
type: t2
rotation: 0
r:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 3
division:
- 0.246884506610435
- 0.32808332126606
height: 2.85
l:
rotation: 3
division:
- 0.452770336466857
- 0.444242853292145
l:
type: b1
rotation: 1
r:
rotation: 2
division:
- 0.526689035234307
- 0.526689035234306
l:
type: t1
rotation: 1
r:
type: C
rotation: 0
r:
type: l1
rotation: 3

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.649495702060859
- 0.642968433259752
height: 2.85
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.689806497315183
- 0.676933598143546
l:
type: l1
rotation: 0
r:
type: t3
rotation: 0
r:
rotation: 3
division:
- 0.50817288210463
- 0.497813683362743
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.649495702060859
- 0.642968433259752
height: 2.7
l:
rotation: 3
division:
- 0.51919675518435
- 0.676933598143546
l:
type: b1
rotation: 0
r:
rotation: 1
division:
- 0.512506051028028
- 0.507029992168845
l:
rotation: 3
division:
- 0.618222089580555
- 0.618222089580555
l:
type: t1
rotation: 0
r:
type: O
rotation: 0
r:
type: t2
rotation: 0
r:
rotation: 3
division:
- 0.488070257489004
- 0.477365094856781
l:
type: b2
rotation: 3
r:
type: C
rotation: 0

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.694899480647243
- 0.672288725464987
l:
rotation: 2
division:
- 0.540078494102455
- 0.537537200602358
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.520750519477552
- 0.520750519477553
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.468817377978931
- 0.456759157918245
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 1
division:
- 0.61618518940465
- 0.673783868504504
height: 3
l:
type: l1
rotation: 0
r:
rotation: 2
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.770876454366929
- 0.620225807306772
height: 2.7
l:
rotation: 2
division:
- 0.365517195540777
- 0.352117397076425
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.58811752341049
- 0.456759157918245
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.357193618767318
- 0.355829261203023
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,129 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.676461703263764
- 0.654366548273542
l:
rotation: 2
division:
- 0.53247497064589
- 0.529901164033976
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.51871277076932
- 0.518712770769321
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.483509130257645
- 0.471727031953465
l:
type: C
rotation: 0
r:
rotation: 0
division:
- 0.480308746798143
- 0.47156237677467
l:
type: C
rotation: 3
r:
type: b2
rotation: 0
above:
rotation: 3
division:
- 0.61618518940465
- 0.616522714310992
height: 3
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.483509130257645
- 0.471727031953466
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.61618518940465
- 0.616522714310992
height: 2.7
l:
rotation: 2
division:
- 0.352822013768009
- 0.339777227625577
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.470048262739002
- 0.471727031953466
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.396223957498812
- 0.394667636173583
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.640861364633565
- 0.618116557145591
height: 2.85
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.432344506641766
- 0.408662871293951
l:
type: t2
rotation: 3
r:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.501760956847816
- 0.485810927767154
l:
rotation: 2
division:
- 0.437945860314428
- 0.431937228255208
l:
type: C
rotation: 0
r:
type: t3
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 1
division:
- 0.279560736422365
- 0.698138560757517
height: 2.7
l:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.501760956847816
- 0.485810927767154
l:
type: b1
rotation: 0
r:
rotation: 2
division:
- 0.374589912543666
- 0.356253083989275
l:
rotation: 3
division:
- 0.496556191974083
- 0.489012297375442
l:
type: C
rotation: 0
r:
type: t1
rotation: 0
r:
type: b2
rotation: 0

View file

@ -0,0 +1,105 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.352012705551212
- 0.348475066205413
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.566253989446299
- 0.555392137268363
l:
type: C
rotation: 0
r:
type: b1
rotation: 0
r:
rotation: 3
division:
- 0.316112732647737
- 0.291162858615593
l:
rotation: 1
division:
- 0.507942157135679
- 0.505660899112881
l:
type: t1
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 2
division:
- 0.599494002234926
- 0.597504813864869
l:
type: t3
rotation: 0
r:
type: C
rotation: 2
above:
rotation: 1
division:
- 0.490396256226034
- 0.355085638042212
height: 3
l:
rotation: 2
division:
- 0.566253989446299
- 0.555392137268363
l:
type: C
rotation: 2
r:
type: t2
rotation: 0
r:
type: l1
rotation: 1
above:
rotation: 1
division:
- 0.490396256226034
- 0.355085638042212
height: 2.7
l:
rotation: 1
division:
- 0.566253989446299
- 0.555392137268363
l:
type: C
rotation: 3
r:
type: b2
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.676461703263764
- 0.654366548273542
l:
rotation: 2
division:
- 0.53247497064589
- 0.529901164033976
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.51871277076932
- 0.518712770769321
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.483509130257645
- 0.471727031953465
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 3
division:
- 0.61618518940465
- 0.616522714310992
height: 3
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.483509130257645
- 0.471727031953466
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.61618518940465
- 0.616522714310992
height: 2.7
l:
rotation: 2
division:
- 0.352822013768009
- 0.339777227625577
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.470048262739002
- 0.471727031953466
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.396223957498812
- 0.394667636173583
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,101 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.790957001557608
- 0.846278740987781
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.716362962925705
- 0.726544399561329
l:
rotation: 1
division:
- 0.52534752012802
- 0.557434559323296
l:
rotation: 1
division:
- 0.526763062145055
- 0.542024600773733
l:
type: b2
rotation: 0
r:
type: b1
rotation: 0
r:
rotation: 1
division:
- 0.474866479400687
- 0.4854818324657
l:
type: C
rotation: 0
r:
type: t1
rotation: 0
r:
rotation: 1
division:
- 0.514415824305834
- 0.525560687381289
l:
type: t3
rotation: 0
r:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 0
division:
- 0.790957001557608
- 0.846278740987781
height: 3.15
l:
rotation: 2
division:
- 0.716362962925705
- 0.726544399561329
l:
type: l1
rotation: 0
r:
rotation: 2
division:
- 0.516674749263939
- 0.527868552142889
l:
type: t2
rotation: 0
r:
type: C
rotation: 0
r:
type: O
rotation: 1

View file

@ -0,0 +1,97 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.701093437536471
- 0.6898090136525
height: 3
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.532834251740489
- 0.536796223799834
l:
type: t3
rotation: 0
r:
type: t2
rotation: 0
r:
rotation: 3
division:
- 0.491681083806289
- 0.493244740054981
l:
type: C
rotation: 2
r:
type: C
rotation: 1
above:
rotation: 2
division:
- 0.472666155584864
- 0.6898090136525
height: 2.7
l:
type: l1
rotation: 0
r:
rotation: 0
division:
- 0.469229934223675
- 0.493244740054981
l:
type: C
rotation: 2
r:
type: t1
rotation: 0
above:
rotation: 1
division:
- 0.261091043586586
- 0.6898090136525
height: 2.7
l:
rotation: 2
division:
- 0.295811200441434
- 0.52906868968595
l:
type: b2
rotation: 3
r:
type: O
rotation: 0
r:
rotation: 0
division:
- 0.491681083806289
- 0.493244740054981
l:
type: C
rotation: 2
r:
type: b1
rotation: 3

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.694899480647243
- 0.672288725464987
l:
rotation: 2
division:
- 0.540078494102455
- 0.537537200602358
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.520750519477552
- 0.520750519477553
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.468804804658597
- 0.456746348290681
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 1
division:
- 0.61618518940465
- 0.673783868504504
height: 3
l:
type: l1
rotation: 0
r:
rotation: 2
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.439938129449802
- 0.609992682895764
height: 2.7
l:
rotation: 2
division:
- 0.365517195540777
- 0.352117397076424
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.58811752341049
- 0.456746348290681
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.357193618767318
- 0.355829293373838
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,109 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.650489933511714
- 0.643952672934049
height: 2.85
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.544956855816955
- 0.52551378136892
l:
rotation: 2
division:
- 0.462868292091111
- 0.459931719738208
l:
rotation: 3
division:
- 0.389925366212586
- 0.389925366212586
l:
type: C
rotation: 0
r:
type: t3
rotation: 0
r:
type: t2
rotation: 0
r:
rotation: 3
division:
- 0.518265801561161
- 0.518265801561163
l:
type: b1
rotation: 0
r:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.492433196245574
- 0.482266713256015
l:
type: O
rotation: 0
r:
type: t1
rotation: 0
above:
rotation: 1
division:
- 0.295446992501235
- 0.707641687951616
height: 2.7
l:
rotation: 1
division:
- 0.544956855816955
- 0.52551378136892
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.462868292091111
- 0.518265801561163
l:
type: b2
rotation: 0
r:
type: C
rotation: 0
r:
rotation: 0
division:
- 0.5
- 0.482266713256015
l:
type: O
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,97 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.378863235215717
- 0.352107342964516
height: 3.6
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.272046320711251
- 0.273135719824572
l:
type: t3
rotation: 0
r:
type: C
rotation: 0
r:
type: S
rotation: 1
above:
rotation: 2
division:
- 0.266815892313844
- 0.352107342964516
height: 3.45
l:
rotation: 0
division:
- 0.493276493743343
- 0.273135719824571
l:
type: t2
rotation: 3
r:
rotation: 3
division:
- 0.43648440957823
- 0.438889102194046
l:
type: C
rotation: 0
r:
type: b2
rotation: 0
r:
type: l1
rotation: 0
above:
rotation: 0
division:
- 0.377536726416306
- 0.352107342964516
height: 2.7
l:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.291520902452743
- 0.293447447950506
l:
rotation: 3
division:
- 0.449571715787478
- 0.450335315550294
l:
type: C
rotation: 3
r:
type: t1
rotation: 0
r:
type: b1
rotation: 0

View file

@ -0,0 +1,101 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 1
division:
- 0.355042854266755
- 0.384312947569606
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.507738626099041
- 0.508263969255782
l:
type: C
rotation: 0
r:
type: b2
rotation: 0
r:
rotation: 3
division:
- 0.683507075237483
- 0.675781098911551
l:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.537675242261878
- 0.509019056989911
l:
type: C
rotation: 0
r:
type: t3
rotation: 0
above:
rotation: 2
division:
- 0.25672522896156
- 0.341703586371173
height: 2.7
l:
rotation: 2
division:
- 0.477839627836153
- 0.530027529746519
l:
type: C
rotation: 0
r:
rotation: 3
division:
- 0.621724369187797
- 0.624812000966495
l:
type: t1
rotation: 0
r:
type: O
rotation: 3
r:
rotation: 2
division:
- 0.683507075237483
- 0.675781098911551
l:
type: b1
rotation: 0
r:
rotation: 2
division:
- 0.53201708273567
- 0.514651094665004
l:
type: t2
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.676461703263764
- 0.654366548273542
l:
rotation: 2
division:
- 0.508397897842548
- 0.505940471779192
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.51871277076932
- 0.518712770769321
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 1
division:
- 0.61618518940465
- 0.673783868504504
height: 3.15
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.61618518940465
- 0.673783868504504
height: 2.7
l:
rotation: 2
division:
- 0.352822013768009
- 0.339777227625577
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.58811752341049
- 0.471727031953466
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.357193618767318
- 0.355822834550231
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,113 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.653290657599936
- 0.656940646962154
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.525120341518669
- 0.534089784809702
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.457232189070831
- 0.636632540510657
height: 2.7
l:
rotation: 1
division:
- 0.608994937808456
- 0.592569097086063
l:
rotation: 3
division:
- 0.622920995349922
- 0.630090493909853
l:
rotation: 2
division:
- 0.461388892256161
- 0.465438937366622
l:
type: C
rotation: 0
r:
type: t2
rotation: 0
r:
type: t3
rotation: 0
r:
rotation: 1
division:
- 0.473226588815428
- 0.480117083762053
l:
type: t1
rotation: 0
r:
type: C
rotation: 0
r:
rotation: 2
division:
- 0.525120341518669
- 0.534089784809702
l:
type: b1
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.636632540510657
height: 2.7
l:
type: O
rotation: 2
r:
rotation: 2
division:
- 0.491795465184111
- 0.534089784809702
l:
type: b2
rotation: 1
r:
type: C
rotation: 0

View file

@ -0,0 +1,109 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.403331205207997
- 0.405872753767004
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.543722653115747
- 0.535071866435931
l:
type: l1
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.472063738394962
- 0.458962362485161
l:
type: b1
rotation: 1
r:
rotation: 1
division:
- 0.466451517847916
- 0.464721728498456
l:
rotation: 1
division:
- 0.521460267761276
- 0.50939094627876
l:
type: b2
rotation: 0
r:
type: t1
rotation: 1
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.735102030017157
- 0.463702961238832
height: 2.7
l:
rotation: 3
division:
- 0.488853499876492
- 0.479162421928184
l:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.472063738394962
- 0.458962362485161
l:
type: b1
rotation: 1
r:
rotation: 1
division:
- 0.466451517847916
- 0.464721728498456
l:
rotation: 1
division:
- 0.586039832050529
- 0.50939094627876
l:
type: t2
rotation: 0
r:
type: t3
rotation: 3
r:
type: C
rotation: 0

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.416571524918773
- 0.476770785117372
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.386699425162827
- 0.398294036621843
l:
type: C
rotation: 0
r:
rotation: 0
division:
- 0.427039036035912
- 0.427039036035913
l:
type: C
rotation: 3
r:
rotation: 1
division:
- 0.368099051988511
- 0.386437272777796
l:
type: t3
rotation: 0
r:
type: t2
rotation: 0
r:
rotation: 3
division:
- 0.618854207373487
- 0.636019059077875
l:
type: b1
rotation: 0
r:
type: l1
rotation: 0
above:
rotation: 0
division:
- 0.320100070648753
- 0.422713579565816
height: 2.7
l:
rotation: 3
division:
- 0.388168826515098
- 0.399735658548404
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.428832676657783
- 0.428832676657784
l:
type: b2
rotation: 0
r:
type: O
rotation: 0
r:
type: t1
rotation: 1

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.352695817076735
- 0.359510324483526
height: 3
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.489020953369244
- 0.481455327322648
l:
type: C
rotation: 1
r:
rotation: 0
division:
- 0.524896954148719
- 0.508721360166699
l:
type: C
rotation: 1
r:
type: t3
rotation: 0
r:
rotation: 1
division:
- 0.558379038316587
- 0.543635058954328
l:
type: t2
rotation: 0
r:
type: b2
rotation: 0
above:
rotation: 0
division:
- 0.717700317868418
- 0.359510324483526
height: 2.7
l:
rotation: 1
division:
- 0.489020953369244
- 0.481455327322648
l:
type: C
rotation: 2
r:
rotation: 1
division:
- 0.489958725917368
- 0.474859812967415
l:
type: t1
rotation: 0
r:
type: b1
rotation: 0
r:
rotation: 2
division:
- 0.617511851191605
- 0.596993408107089
l:
type: l1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,113 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.680695949539758
- 0.668432166526694
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.490465411886471
- 0.492131642648191
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.273399533942611
- 0.668432166526694
height: 2.7
l:
type: t1
rotation: 0
r:
rotation: 1
division:
- 0.501726852638636
- 0.492131642648191
l:
type: b1
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 3
division:
- 0.666913887732339
- 0.668432166526694
height: 2.7
l:
rotation: 1
division:
- 0.614730780202971
- 0.588824618537811
l:
rotation: 1
division:
- 0.530280355953204
- 0.532349558018156
l:
type: b2
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.505363084687358
- 0.506734747717137
l:
type: C
rotation: 0
r:
type: t2
rotation: 0
r:
rotation: 2
division:
- 0.503072620681601
- 0.492131642648191
l:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.451126470650697
- 0.454144155747079
l:
type: O
rotation: 0
r:
type: t3
rotation: 0

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.676461703263764
- 0.654366548273542
l:
rotation: 2
division:
- 0.527679649893444
- 0.525129022264466
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.527194251156148
- 0.527194251156148
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 1
division:
- 0.61618518940465
- 0.673783868504504
height: 3
l:
type: l1
rotation: 0
r:
rotation: 2
division:
- 0.501827308865798
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.61618518940465
- 0.673783868504504
height: 2.7
l:
rotation: 2
division:
- 0.352822013768009
- 0.339777227625577
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.58811752341049
- 0.471727031953466
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.357193618767318
- 0.355822834550231
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.676461703263764
- 0.654366548273542
l:
rotation: 2
division:
- 0.508397897842548
- 0.505940471779192
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.51871277076932
- 0.518712770769321
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.483509130257645
- 0.471727031953465
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 3.15
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.483509130257645
- 0.471727031953465
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
l:
rotation: 2
division:
- 0.352822013768009
- 0.339777227625576
l:
type: O
rotation: 0
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.58811752341049
- 0.471727031953465
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.396223957498812
- 0.394667636173584
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,121 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.61618518940465
- 0.609992682895765
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.676461703263764
- 0.654366548273542
l:
rotation: 2
division:
- 0.508397897842548
- 0.505940471779192
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.51871277076932
- 0.518712770769321
l:
type: t2
rotation: 0
r:
type: C
rotation: 3
r:
rotation: 3
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 1
division:
- 0.61618518940465
- 0.673783868504504
height: 3
l:
type: l1
rotation: 0
r:
rotation: 2
division:
- 0.471317272202465
- 0.459306035998503
l:
type: C
rotation: 0
r:
type: b2
rotation: 1
above:
rotation: 0
division:
- 0.61618518940465
- 0.673783868504504
height: 2.7
l:
rotation: 2
division:
- 0.352822013768009
- 0.339777227625577
l:
type: O
rotation: 3
r:
type: b1
rotation: 0
r:
rotation: 0
division:
- 0.58811752341049
- 0.471727031953466
l:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.357193618767318
- 0.355822834550231
l:
type: t1
rotation: 0
r:
type: O
rotation: 0

View file

@ -0,0 +1,113 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.653290657599936
- 0.656940646962154
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.525120341518669
- 0.534089784809702
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.656940646962154
height: 2.7
l:
rotation: 1
division:
- 0.608994937808456
- 0.592569097086063
l:
rotation: 3
division:
- 0.622920995349922
- 0.633844824787538
l:
rotation: 2
division:
- 0.484606288629118
- 0.490763729305943
l:
type: t1
rotation: 0
r:
type: t2
rotation: 0
r:
type: t3
rotation: 0
r:
rotation: 1
division:
- 0.405196602110754
- 0.412270809291629
l:
type: C
rotation: 0
r:
type: C
rotation: 0
r:
rotation: 2
division:
- 0.525120341518669
- 0.534089784809702
l:
type: b1
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.656940646962154
height: 2.7
l:
type: O
rotation: 2
r:
rotation: 2
division:
- 0.49354165206883
- 0.534089784809702
l:
type: b2
rotation: 1
r:
type: C
rotation: 0

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.608690953412288
- 0.609106078338419
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.669240683978634
- 0.676704122499507
l:
type: b1
rotation: 0
r:
type: C
rotation: 1
r:
rotation: 1
division:
- 0.466466872260481
- 0.457867648650832
l:
rotation: 2
division:
- 0.646473577411602
- 0.646473577411603
l:
type: C
rotation: 1
r:
type: t3
rotation: 0
r:
type: b2
rotation: 0
above:
rotation: 3
division:
- 0.809861395263165
- 0.612810467029941
height: 2.85
l:
rotation: 0
division:
- 0.669240683978634
- 0.659739351024511
l:
rotation: 3
division:
- 0.623052919114125
- 0.606640203380403
l:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.463302407069885
- 0.464802555932959
l:
type: t2
rotation: 0
r:
type: t1
rotation: 0
r:
type: C
rotation: 1
r:
type: l1
rotation: 0

View file

@ -0,0 +1,145 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.653290657599936
- 0.656940646962154
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.525120341518669
- 0.534089784809702
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.656940646962154
height: 2.7
l:
rotation: 1
division:
- 0.608994937808456
- 0.592569097086063
l:
rotation: 3
division:
- 0.622920995349922
- 0.633844824787538
l:
rotation: 2
division:
- 0.484606288629118
- 0.490763729305943
l:
type: C
rotation: 0
r:
type: t2
rotation: 0
r:
type: t3
rotation: 0
r:
rotation: 1
division:
- 0.405196602110754
- 0.412270809291629
l:
type: t1
rotation: 0
r:
type: C
rotation: 0
r:
rotation: 2
division:
- 0.525120341518669
- 0.534089784809702
l:
type: b1
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.656940646962154
height: 2.7
l:
rotation: 2
division:
- 0.5
- 0.5
l:
rotation: 0
division:
- 0.5
- 0.5
l:
rotation: 0
division:
- 0.5
- 0.5
l:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 0
division:
- 0.5
- 0.5
l:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 2
division:
- 0.49354165206883
- 0.534089784809702
l:
type: b2
rotation: 1
r:
type: C
rotation: 0

View file

@ -0,0 +1,145 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.653290657599936
- 0.656940646962154
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
type: l1
rotation: 0
r:
rotation: 1
division:
- 0.525120341518669
- 0.534089784809702
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.656940646962154
height: 2.7
l:
rotation: 1
division:
- 0.608994937808456
- 0.592569097086063
l:
rotation: 3
division:
- 0.622920995349922
- 0.633844824787538
l:
rotation: 2
division:
- 0.484606288629118
- 0.490763729305943
l:
type: C
rotation: 0
r:
type: t2
rotation: 0
r:
type: t3
rotation: 0
r:
rotation: 1
division:
- 0.470089159293927
- 0.476988126742387
l:
type: t1
rotation: 0
r:
type: C
rotation: 0
r:
rotation: 2
division:
- 0.525120341518669
- 0.534089784809702
l:
type: b1
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 0
division:
- 0.5
- 0.656940646962154
height: 2.7
l:
rotation: 2
division:
- 0.5
- 0.5
l:
rotation: 0
division:
- 0.5
- 0.5
l:
rotation: 0
division:
- 0.5
- 0.5
l:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 0
division:
- 0.5
- 0.5
l:
type: O
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 2
division:
- 0.49354165206883
- 0.534089784809702
l:
type: b2
rotation: 1
r:
type: C
rotation: 0

View file

@ -0,0 +1,93 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.608690953412288
- 0.609106078338419
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.669240683978634
- 0.659739351024511
l:
type: b1
rotation: 0
r:
type: C
rotation: 1
r:
rotation: 1
division:
- 0.478349793427555
- 0.469531510539899
l:
rotation: 2
division:
- 0.646473577411602
- 0.646473577411602
l:
type: C
rotation: 1
r:
type: t3
rotation: 0
r:
type: b2
rotation: 0
above:
rotation: 3
division:
- 0.809861395263165
- 0.612810467029941
height: 2.7
l:
rotation: 0
division:
- 0.669240683978634
- 0.659739351024511
l:
rotation: 3
division:
- 0.623052919114125
- 0.606640203380404
l:
type: O
rotation: 3
r:
rotation: 1
division:
- 0.492317959661464
- 0.493737005779146
l:
type: t2
rotation: 0
r:
type: t1
rotation: 0
r:
type: C
rotation: 1
r:
type: l1
rotation: 0

View file

@ -0,0 +1,97 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.378863235215717
- 0.352107342964516
height: 3.6
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.272046320711251
- 0.273135719824572
l:
type: t3
rotation: 0
r:
type: C
rotation: 0
r:
type: O
rotation: 3
above:
rotation: 2
division:
- 0.266815892313844
- 0.352107342964516
height: 3.6
l:
rotation: 0
division:
- 0.493276493743343
- 0.273135719824571
l:
type: t2
rotation: 3
r:
rotation: 3
division:
- 0.43648440957823
- 0.438889102194046
l:
type: C
rotation: 0
r:
type: b2
rotation: 0
r:
type: l1
rotation: 0
above:
rotation: 0
division:
- 0.377536726416306
- 0.352107342964516
height: 2.7
l:
type: O
rotation: 0
r:
rotation: 1
division:
- 0.291520902452743
- 0.293447447950506
l:
rotation: 3
division:
- 0.449571715787478
- 0.450335315550294
l:
type: C
rotation: 3
r:
type: t1
rotation: 0
r:
type: b1
rotation: 0

View file

@ -0,0 +1,85 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 0
division:
- 0.578543227251483
- 0.582980121644112
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
type: l1
rotation: 3
r:
rotation: 1
division:
- 0.557652324732633
- 0.548937275313322
l:
type: C
rotation: 3
r:
rotation: 1
division:
- 0.471840059771973
- 0.471840059771971
l:
type: t3
rotation: 3
r:
type: t2
rotation: 0
above:
rotation: 0
division:
- 0.392460883830656
- 0.579270520642693
height: 2.7
l:
rotation: 0
division:
- 0.440558760302351
- 0.426954119829303
l:
type: O
rotation: 1
r:
type: b2
rotation: 3
r:
rotation: 2
division:
- 0.50761281882239
- 0.498909221226122
l:
type: C
rotation: 3
r:
rotation: 1
division:
- 0.471840059771973
- 0.475220839533421
l:
type: b1
rotation: 3
r:
type: t1
rotation: 1

View file

@ -0,0 +1,105 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 3
division:
- 0.681796364796382
- 0.666507842783208
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.385154624230216
- 0.387037179575097
l:
rotation: 1
division:
- 0.504420563349265
- 0.49129340676569
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
type: O
rotation: 2
r:
rotation: 1
division:
- 0.5660761955678
- 0.566318926462522
l:
type: C
rotation: 0
r:
type: O
rotation: 0
above:
rotation: 0
division:
- 0.484437318510146
- 0.666507842783208
height: 2.7
l:
rotation: 2
division:
- 0.385154624230216
- 0.387037179575097
l:
type: t2
rotation: 0
r:
type: b1
rotation: 0
r:
rotation: 3
division:
- 0.5660761955678
- 0.566318926462522
l:
type: C
rotation: 0
r:
type: t1
rotation: 0
above:
rotation: 1
division:
- 0.265337858323527
- 0.666507842783208
height: 2.7
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.486999816770624
- 0.566318926462522
l:
type: C
rotation: 0
r:
type: b2
rotation: 0

View file

@ -0,0 +1,105 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
rotation: 1
division:
- 0.684109406065675
- 0.652747284085531
height: 2.7
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 1
division:
- 0.552667996439813
- 0.553992277622933
l:
type: t3
rotation: 0
r:
type: O
rotation: 0
r:
rotation: 3
division:
- 0.524756062727084
- 0.525261869779856
l:
type: O
rotation: 0
r:
type: C
rotation: 0
above:
rotation: 2
division:
- 0.49990203159115
- 0.652747284085531
height: 3.45
l:
type: l1
rotation: 0
r:
rotation: 3
division:
- 0.464829388570383
- 0.525261869779856
l:
type: b1
rotation: 0
r:
rotation: 3
division:
- 0.422410539241151
- 0.421388355648712
l:
type: C
rotation: 0
r:
type: t2
rotation: 0
above:
rotation: 3
division:
- 0.684109406065675
- 0.652747284085531
height: 2.85
l:
rotation: 2
division:
- 0.501690204557081
- 0.50266044892288
l:
type: b2
rotation: 0
r:
type: O
rotation: 1
r:
rotation: 2
division:
- 0.468115978163956
- 0.525261869779856
l:
type: O
rotation: 1
r:
type: C
rotation: 0

View file

@ -0,0 +1,80 @@
node:
- - 1.67100188077385
- 11.9169190395339
- - 8.72124918939699
- 13.7119442286569
- - 6.79637028658874
- 21.3797854212389
- - -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: null
c: null
d: null
rotation: 0
division:
- 0.48477626972176296
- 0.48477626972176296
height: 3.0
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25
l:
rotation: 3
division:
- 0.4736445268585117
- 0.4736445268585117
l:
rotation: 3
division:
- 0.5508166679097796
- 0.5508166679097796
l:
type: O
rotation: 0
r:
type: t2
rotation: 0
r:
type: C
rotation: 0
r:
type: l1
rotation: 1
above:
rotation: 0
division:
- 0.4869945206673567
- 0.4869945206673567
height: 3.0
l:
rotation: 3
division:
- 0.4733409870804918
- 0.4733409870804918
l:
rotation: 3
division:
- 0.547000872727425
- 0.547000872727425
l:
type: b2
rotation: 0
r:
type: t1
rotation: 1
r:
type: C
rotation: 0
r:
rotation: 1
division:
- 0.19283930420628767
- 0.19283930420628767
l:
type: t3
rotation: 2
r:
type: b1
rotation: 0

View file

@ -0,0 +1,25 @@
---
node:
-
- 1.67100188077385
- 11.9169190395339
-
- 8.72124918939699
- 13.7119442286569
-
- 6.79637028658874
- 21.3797854212389
-
- -0.42152047183069
- 19.9368564494913
perimeter:
a: private
b: ~
c: ~
d: ~
type: O
rotation: 0
height: 3
elevation: 0.0
wall_inner: 0.08
wall_outer: 0.25

View file

@ -0,0 +1,96 @@
---
# Example patterns.config for programme-driven building evolution
#
# This file demonstrates how to define a building programme within
# the standard patterns.config file format. The presence of the
# 'spaces' key automatically triggers programme-driven mode.
# Building programme: 2-bedroom house with ensuite
spaces:
b1:
name: Master Bedroom
size:
- 16.0
- 4.0
width:
- 4.0
- 1.0
proportion:
- 1.5
- 0.5
adjacency:
- c
t1:
name: Ensuite Bathroom
size:
- 5.0
- 1.5
width:
- 2.5
- 0.5
adjacency:
- b1
b2:
name: Second Bedroom
size:
- 12.0
- 3.0
width:
- 3.5
- 0.8
adjacency:
- c
t2:
name: Guest Bathroom
size:
- 4.0
- 1.5
adjacency:
- c
l1:
name: Living/Dining/Kitchen
size:
- 35.0
- 8.0
width:
- 4.5
- 1.0
proportion:
- 2.0
- 0.8
level: 0
adjacency:
- c
t3:
name: Ground Floor WC
size:
- 3.0
- 1.0
adjacency:
- c
level: 0
# Building constraints
storey_minimum: 2
storey_limit: 5
force_roof_garden: 0
# Circulation ratio (penalise excessive corridors)
ratio_circulation:
- 0.00
- 0.15
# Outside space ratio
ratio_outside:
- 0.30
- 0.15
# Staircase requirements
staircase_min: 1
staircase_max: 1
# Other standard parameters can be included
value_inside: 300.0
value_circulation: 50.0
value_outside: 100.0
value_supported: 300.0

View file

@ -12,9 +12,9 @@ import pytest
from homemaker import dom, solver
CORPUS = Path("/home/bruno/src/urb/examples/programme-house")
CORPUS = Path(__file__).parent.parent / "examples" / "programme-house"
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available")
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available")
def test_roundtrip_idempotent_and_area_preserving(tmp_path):

View file

@ -7,11 +7,11 @@ import pytest
from homemaker import dom, driver, innerloop, solver
CORPUS = Path("/home/bruno/src/urb/examples/programme-house")
CORPUS = Path(__file__).parent.parent / "examples" / "programme-house"
SEED_FILE = CORPUS / "c964435454c459f86c3ed9a5a7621132.dom"
INIT_FILE = CORPUS / "init.dom"
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available")
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available")
def test_free_with_keys_aligns_with_free_branches():

View file

@ -6,9 +6,9 @@ import pytest
from homemaker import dom, genome, solver
CORPUS = Path("/home/bruno/src/urb/examples/programme-house")
CORPUS = Path(__file__).parent.parent / "examples" / "programme-house"
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available")
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available")
def corpus():

View file

@ -15,9 +15,9 @@ from homemaker import dom, geometry
from homemaker.dom import merge_divided, levels
from homemaker.graph import build_graphs
CORPUS = Path("/home/bruno/src/urb/examples/programme-house")
CORPUS = Path(__file__).parent.parent / "examples" / "programme-house"
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available")
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available")
# ---------------------------------------------------------------------------
# Perl-oracle edge counts per file (generated from Urb::Quad::Graph, door=1.2)

View file

@ -7,12 +7,12 @@ import pytest
from homemaker import dom, genome, operators
CORPUS = Path("/home/bruno/src/urb/examples/programme-house")
CORPUS = Path(__file__).parent.parent / "examples" / "programme-house"
FILES = ["2f45907abd9accac2a124d311732f749.dom", "candidate-002.dom",
"c964435454c459f86c3ed9a5a7621132.dom"]
TYPES = ["k1", "l1", "b1", "b2", "t1", "C", "O"]
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available")
pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available")
def canonical(root: dom.Node) -> None: