@floless/app 0.53.0 → 0.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/floless-server.cjs +195 -122
- package/dist/skills/floless-app-steel-model/SKILL.md +16 -7
- package/dist/skills/floless-app-steel-takeoff/SKILL.md +5 -0
- package/dist/skills/floless-app-workflows/SKILL.md +24 -1
- package/dist/skills/reading-structural-drawings/SKILL.md +6 -1
- package/dist/skills/steel-drawing-abbreviations/SKILL.md +58 -0
- package/dist/skills/steel-drawing-abbreviations/references/standard-us-abbreviations.md +296 -0
- package/dist/templates/steel-model.flo +44 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: floless-app-steel-model
|
|
3
3
|
description: The front-door guide for turning a structural steel drawing SET into an editable model in floless.app — the "Steel Model" flow. This skill orchestrates the whole pipeline — set up a project folder, learn the set into plain-English knowledge files, provision the right AWARE agents (region-specific steel detailer plus any bake targets), confirm which sheets are plans / elevations / details, then hand off to the Steel Takeoff reader to read each plan into a steel.takeoff/v1 contract — with explicit confirm gates between stages. Use it when a user wants to model steel from a drawing SET or asks things like "model this steel job from the drawings", "take off this whole set", "start a steel takeoff project", "turn these structural drawings into a model", "I have a PDF set of framing plans", or "/floless-app-steel-model". It is re-runnable — resume at any stage. For a single already-isolated framing plan the Steel Takeoff reader (floless-app-steel-takeoff) can be used directly; this guide is for driving a real job end to end.
|
|
4
4
|
metadata:
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.2.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Steel Model — guide a steel drawing set into an editable model
|
|
@@ -26,13 +26,16 @@ the run path and no API key.
|
|
|
26
26
|
what was found and get an OK before spending effort on the next stage. Resume at any stage on
|
|
27
27
|
re-invoke ("we already set up the folder, provision the agents").
|
|
28
28
|
|
|
29
|
-
> Companion skills (
|
|
29
|
+
> Companion skills (all ship with floless.app — invoke them, don't duplicate them):
|
|
30
30
|
> - **`reading-structural-drawings`** — the reading *discipline* (massing + coordinate frame FIRST,
|
|
31
31
|
> members LAST, cross-validate every view). Follow it whenever skimming or classifying the set
|
|
32
32
|
> (stages 2 and 5) — it stops the classic failures (two buildings read as one, a sloped roof read
|
|
33
33
|
> as flat, grids conflated across sheets).
|
|
34
34
|
> - **`floless-app-steel-takeoff`** — reads one framing plan into the contract (the heavy vision
|
|
35
35
|
> pipeline, the filter pre-stage, the AISC/EN/BS lookup, the contract write + editor hand-off).
|
|
36
|
+
> - **`steel-drawing-abbreviations`** — the default US/AISC abbreviations + shape-designation legend.
|
|
37
|
+
> The fallback for note/profile codes (TYP, TOS, UON, `(E)`/`(N)`, HSS, WT) when the set omits its
|
|
38
|
+
> own abbreviations sheet (stage 2).
|
|
36
39
|
|
|
37
40
|
---
|
|
38
41
|
|
|
@@ -66,7 +69,9 @@ the project folder (a few files, **not** a framework):
|
|
|
66
69
|
|
|
67
70
|
Read the set with the terminal AI's own vision, following the **`reading-structural-drawings`**
|
|
68
71
|
discipline while skimming (massing + coordinate frame first — it's what makes the sheet
|
|
69
|
-
classification reliable).
|
|
72
|
+
classification reliable). If the set has **no abbreviations/legend sheet** (a partial set is common),
|
|
73
|
+
fall back to **`steel-drawing-abbreviations`** — the standard US/AISC abbreviations + shape legend —
|
|
74
|
+
for note/profile codes (TYP, TOS, UON, `(E)`/`(N)`, HSS, WT). The project's own legend always overrides.
|
|
70
75
|
|
|
71
76
|
**Gate:** show `set-index.md` (the sheet map) and confirm the classification looks right — the user
|
|
72
77
|
knows their set better than any read.
|
|
@@ -133,12 +138,16 @@ the user at the editor:
|
|
|
133
138
|
the contract's `connections[]` with `source:"company-rules"`; the user reviews/assigns them per
|
|
134
139
|
member end in the editor's **Connections** panel (the per-end picker + confidence card).
|
|
135
140
|
- **Point at the rest of the canvas:** the **filter** view (refine the kept linework), **Approve**
|
|
136
|
-
(bake the lock — the determinism gate), **3D** model, **IFC** / **Tekla** export, the **BOM
|
|
137
|
-
**confidence report**, and the **callout bubbles** (click a
|
|
138
|
-
plan to jump to the referenced sheet).
|
|
141
|
+
(bake the lock — the determinism gate), **3D** model, **IFC** / **Tekla** export, the **BOM**
|
|
142
|
+
(exportable to **CSV / Excel**), the **confidence report**, and the **callout bubbles** (click a
|
|
143
|
+
section/elevation/detail mark on a plan to jump to the referenced sheet).
|
|
139
144
|
|
|
140
145
|
**Done** when each framing plan has an approved, editor-reviewed contract and the user knows which
|
|
141
|
-
on-canvas tool does what. The
|
|
146
|
+
on-canvas tool does what. The 3D/IFC/Tekla exports are on-demand from the editor; the **BOM is
|
|
147
|
+
exported two ways** — on-demand via the editor's *Export BOM (CSV)/(Excel)* buttons, **and written
|
|
148
|
+
to `~/.floless/exports/steel-model/steel-model-bom.{csv,xlsx}` automatically every time the workflow
|
|
149
|
+
is Run** (two `file/write` export steps at the end of the chain). Tell the user they can **freeze**
|
|
150
|
+
those export steps (right-click → Freeze) once the BOM is right, so a re-Run won't overwrite the files.
|
|
142
151
|
|
|
143
152
|
---
|
|
144
153
|
|
|
@@ -366,3 +366,8 @@ never committed). Clip title blocks from any embedded preview.
|
|
|
366
366
|
sizes or grid positions the drawing does not show.
|
|
367
367
|
- **Resolve the port** from the running floless.app the same way other floless-app skills do
|
|
368
368
|
(check `~/.floless/port` or the active server port).
|
|
369
|
+
- **Decode unfamiliar note/profile codes** with **`steel-drawing-abbreviations`** (the default
|
|
370
|
+
US/AISC abbreviations + shape legend) when the set lacks its own abbreviations sheet — for TYP
|
|
371
|
+
profiles, TOS/UON defaults, `(E)`/`(N)` scope, and shape designations. The project's own legend
|
|
372
|
+
always overrides; never expand a member *mark* (`MF`/`BF`/`D1`) from it — resolve those from the
|
|
373
|
+
schedules/elevations.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: floless-app-workflows
|
|
3
3
|
description: This skill should be used when building, modifying, or reasoning about FloLess .flo workflows for floless.app — especially reusable apps that take inputs (e.g. a phase number) and run across different Tekla models, exec nodes that run Roslyn C# against the live model, the in-app HTML Viewer, the Code tab, or "Debug in VS". Covers the exec contract, the install→validate→compile→run loop, app inputs templating, and the server seams (aware-adapter, app-reader, index).
|
|
4
4
|
metadata:
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.2.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Building reusable .flo workflows in floless.app
|
|
@@ -270,6 +270,29 @@ floless.app play (designed, now unblocked): a "Bake into agent" affordance that
|
|
|
270
270
|
`.flo` to add `exposes-as-agent` + `exposed-commands` mirroring the app's `inputs:`. Thin-UI: a
|
|
271
271
|
manifest edit + recompile, no engine. See the design doc for the Stage-1 plan.
|
|
272
272
|
|
|
273
|
+
## Write a file on Run (the `file` agent) — VERIFIED, AWARE 0.81.0+
|
|
274
|
+
|
|
275
|
+
A node can **land an artifact on disk as part of the run** with the `_core/file` agent (steel-model's
|
|
276
|
+
`csv-export` / `xlsx-export` nodes do exactly this). Key facts (all verified):
|
|
277
|
+
|
|
278
|
+
- **`file` is a builtin** (`transport: builtin {}`) — handled in-process, **no host binary**, like
|
|
279
|
+
`html-report` / `viewer-3d`. But its **manifest must be installed** (`aware agent install file`):
|
|
280
|
+
absent, the run fails with an opaque IO error; present, `aware app run` dispatches it. floless
|
|
281
|
+
ensures it before Run for any app that `requires: file@1.0.x` (see `ensureSteelExportReady`, index.ts).
|
|
282
|
+
- **Verbs:** `write` lands `bytes` at `path` (`encoding: text | base64`); `write-csv` takes
|
|
283
|
+
`{ path, columns, rows }` → RFC-4180. For a **binary** artifact (`.xlsx`, image, zip) **floless
|
|
284
|
+
generates the bytes in TS and the node base64-lands them** — AWARE has no xlsx serializer, so the
|
|
285
|
+
binary stays host-side (we reuse `bomToXlsx` and write `encoding: base64`).
|
|
286
|
+
- **`file/write*` are `mode: write`** (a generic arbitrary-path writer mutates external state), so an
|
|
287
|
+
**un-frozen** export node MUST carry a `safety:` block — `safety: { snapshot: false }` is enough. A
|
|
288
|
+
**frozen** node skips the safety preflight AND skips dispatch (it replays its pinned output, no
|
|
289
|
+
write) — that is the "freeze the export so Run won't regenerate it" affordance.
|
|
290
|
+
- **Path:** the producer owns `path`. A **bare relative path resolves to the run process's cwd**
|
|
291
|
+
(it'll litter the server dir), so floless bakes an **absolute** `~/.floless/exports/<appId>/…` path
|
|
292
|
+
into the node — on Approve via `bakeDownstream` → `bakeBomExportNodes` (path + real bytes), and as a
|
|
293
|
+
safety net before Run via `ensureSteelExportReady` (path only; idempotent, recompiles once). The
|
|
294
|
+
committed template carries a bare filename + a small example payload so the step is valid out of the box.
|
|
295
|
+
|
|
273
296
|
## How the UI surfaces map to AWARE state
|
|
274
297
|
|
|
275
298
|
- **Code tab** shows the node's real source: `node.config.code` (the exec C#), not lockfile
|
|
@@ -46,7 +46,9 @@ one with a curved roof — both obvious in the elevations, invisible in the plan
|
|
|
46
46
|
Read the **cover / drawing index** and **general notes** first. Build a sheet list classified by
|
|
47
47
|
type (index, notes, foundation plan, framing plans per level, frame elevations, sections, details,
|
|
48
48
|
**schedules**). Confirm the set is complete + current revision. Grab the legend, datum, material
|
|
49
|
-
defaults, and the **abbreviations** (FC/MF/BF/(E)/(N)/matchline symbols).
|
|
49
|
+
defaults, and the **abbreviations** (FC/MF/BF/(E)/(N)/matchline symbols). If the set ships **no
|
|
50
|
+
abbreviations/legend sheet** (or only partial sheets), fall back to the **`steel-drawing-abbreviations`**
|
|
51
|
+
default US/AISC legend for the standard codes. Trust PyMuPDF page_count over
|
|
50
52
|
any external count.
|
|
51
53
|
|
|
52
54
|
### Pass 1 — MASSING (how many buildings, what shape) — from elevations/sections, not plans
|
|
@@ -114,6 +116,9 @@ Only then build the scene / overlay / IFC. If unsure, present the **massing + gr
|
|
|
114
116
|
skill is the *reading discipline*; that one is the *reader*. The **`floless-app-steel-model`** guide
|
|
115
117
|
(the front-door orchestrator) wraps the whole flow and references this discipline at the
|
|
116
118
|
classify-and-verify gates rather than re-deriving it.
|
|
119
|
+
- **`steel-drawing-abbreviations`** — the default US/AISC abbreviations + shape-designation legend.
|
|
120
|
+
Consult it in Pass 0 when the set omits its own legend sheet, and whenever a note code (TYP, TOS,
|
|
121
|
+
UON, `(E)`/`(N)`) or profile designation needs decoding.
|
|
117
122
|
- There is no off-the-shelf OSS tool that does the whole drawing→model job — floorplan vectorisers
|
|
118
123
|
(e.g. CubiCasa5k) are residential-trained and won't read steel framing — which is why the order +
|
|
119
124
|
validation discipline above, not a single tool, is the method.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: steel-drawing-abbreviations
|
|
3
|
+
description: Default legend of standard US (AISC, imperial) structural-steel drawing abbreviations, note conventions, and shape designations — the fallback meaning when a drawing set omits or only partially supplies its own abbreviations/legend sheet. This skill should be used while reading a structural steel drawing whenever an abbreviation, note code, or profile designation needs expanding (TYP, TOS, UON, EQ, (E)/(N), SIM, HSS, WT, and so on), or when the steel reader (floless-app-steel-takeoff / floless-app-steel-model) meets a note or label whose meaning is not defined on the supplied sheets. The project's own legend always overrides these defaults.
|
|
4
|
+
metadata:
|
|
5
|
+
version: "0.1.0"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Steel drawing abbreviations — default legend
|
|
9
|
+
|
|
10
|
+
## What this is
|
|
11
|
+
|
|
12
|
+
A reusable **fallback legend** of the standard abbreviations, note conventions, and steel-shape
|
|
13
|
+
designations that appear on the General Notes / legend sheet (usually `S-001` / `S-100`) of most
|
|
14
|
+
**US (AISC, imperial)** structural sets. These are an industry convention — largely identical from
|
|
15
|
+
project to project — so they fill the gap when a set does not ship its own abbreviations sheet, or
|
|
16
|
+
when only some sheets are provided.
|
|
17
|
+
|
|
18
|
+
The full glossary lives in **`references/standard-us-abbreviations.md`** (abbreviations A–Z, the
|
|
19
|
+
structural-steel shape table, the high-value note conventions for takeoff, and a marks-vs-abbreviations
|
|
20
|
+
warning). Keep this SKILL.md lean; load the reference when an actual lookup is needed.
|
|
21
|
+
|
|
22
|
+
## When to consult it
|
|
23
|
+
|
|
24
|
+
- A structural plan, section, or **General Note** uses an abbreviation or code that is not spelled
|
|
25
|
+
out on the supplied sheets, and its meaning is needed to read geometry or metadata correctly
|
|
26
|
+
(e.g. a "T.O.S. = 16'-6" UON" note, a "TYP" profile, an `(E)` member).
|
|
27
|
+
- The **steel reader** (`floless-app-steel-takeoff`) or the **guide** (`floless-app-steel-model`) is
|
|
28
|
+
learning a set and the user did **not** provide the abbreviations/legend sheet — use this as the
|
|
29
|
+
default while still reading the rest of the set.
|
|
30
|
+
- A profile designation needs decoding (what `HSS6X6X3/8`, `WT`, `C`, `MC`, `PIPE-XX` mean and which
|
|
31
|
+
ones carry their weight in the name vs. need an AISC table).
|
|
32
|
+
|
|
33
|
+
## How to use it
|
|
34
|
+
|
|
35
|
+
1. **Read the project legend first.** If the set HAS an abbreviations sheet or a note that defines the
|
|
36
|
+
code, use *that* — this file is only the fallback. The project's own definition always wins.
|
|
37
|
+
2. **Look up the code** in `references/standard-us-abbreviations.md` (grep the abbreviation, e.g.
|
|
38
|
+
`grep -i 'TOS' references/standard-us-abbreviations.md`).
|
|
39
|
+
3. **Respect context over the table.** Several codes are context-dependent (`WT` = WEIGHT or a tee
|
|
40
|
+
shape; `PT` = POST-TENSIONED / PRESSURE-TREATED / POINT). Choose the structurally sensible meaning;
|
|
41
|
+
if it is genuinely ambiguous, flag it as an RFI rather than guess.
|
|
42
|
+
4. **Do not expand marks.** `MF` / `BF` / `D1` / `C1` / `B12` are project member/frame marks resolved
|
|
43
|
+
from the frame elevations and schedules — never from this glossary (see the reference's
|
|
44
|
+
"Marks vs abbreviations" section).
|
|
45
|
+
5. **Mind the region.** This is the US/AISC legend. For EU (EN) or UK (BS) sets, defer to the project
|
|
46
|
+
legend and the region-specific detailer agent (`steel-detailer-eu` / `steel-detailer-uk`); the
|
|
47
|
+
shape designations especially differ.
|
|
48
|
+
|
|
49
|
+
## Companion skills
|
|
50
|
+
|
|
51
|
+
- **`reading-structural-drawings`** — the reading discipline; its Pass 0 (inventory & legend) consults
|
|
52
|
+
this default legend when the set's own abbreviations sheet is missing.
|
|
53
|
+
- **`floless-app-steel-takeoff`** — the reader; uses this while reading notes/labels into the
|
|
54
|
+
`steel.takeoff/v1` contract (TYP profiles, TOS defaults, connection-type words, `(E)`/`(N)` scope).
|
|
55
|
+
- **`floless-app-steel-model`** — the front-door guide; references this at the "learn the set" stage so
|
|
56
|
+
a partial set without a legend sheet still reads correctly.
|
|
57
|
+
- **`steel-detailer-us` / `-eu` / `-uk`** (AWARE agents) — own the section *tables and weights*; this
|
|
58
|
+
skill only decodes the *labels and notes*.
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
# Standard US structural-steel drawing abbreviations & symbols (default legend)
|
|
2
|
+
|
|
3
|
+
These are the **de-facto standard abbreviations** that appear on the General Notes / legend sheet
|
|
4
|
+
(usually `S-001` / `S-100`) of most **US (AISC, imperial)** structural sets. They are an industry
|
|
5
|
+
convention, not any one firm's property, so they serve as a **fallback default** when a drawing set
|
|
6
|
+
does not include its own abbreviations/legend sheet (or only ships partial sheets).
|
|
7
|
+
|
|
8
|
+
**Rules of use (read before applying any expansion):**
|
|
9
|
+
- **The project's own legend ALWAYS wins.** If the set has an abbreviations sheet or a plan/general
|
|
10
|
+
note that defines a code, use *that* meaning — never override it with this list.
|
|
11
|
+
- **Context can override.** The same code means different things by context (e.g. `WT` = WEIGHT or a
|
|
12
|
+
structural-tee shape; `PT` = POST-TENSIONED or PRESSURE-TREATED or POINT). Pick the meaning that
|
|
13
|
+
fits the structural context; if genuinely ambiguous, flag it (RFI) rather than guess.
|
|
14
|
+
- **Region differs.** This is the US/AISC set. EU (EN) and UK (BS) sets use different shape
|
|
15
|
+
designations and some different abbreviations — defer those to the project legend and the
|
|
16
|
+
region-specific detailer agent (`steel-detailer-eu` / `steel-detailer-uk`).
|
|
17
|
+
- **Marks are NOT abbreviations.** Member/frame *marks* like `MF`, `BF`, `D1`, `C1`, `B12` are
|
|
18
|
+
project-specific labels resolved from the frame elevations / schedules — not from this glossary.
|
|
19
|
+
See "Marks vs abbreviations" below.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Abbreviations (A–Z)
|
|
24
|
+
|
|
25
|
+
| Abbr | Meaning |
|
|
26
|
+
|------|---------|
|
|
27
|
+
| `AB` | ANCHOR BOLT |
|
|
28
|
+
| `ACI` | AMERICAN CONCRETE INSTITUTE |
|
|
29
|
+
| `ADD'L` | ADDITIONAL |
|
|
30
|
+
| `ADJ` | ADJACENT / ADJUSTABLE |
|
|
31
|
+
| `AESS` | ARCHITECTURALLY EXPOSED STRUCTURAL STEEL |
|
|
32
|
+
| `AGGR` | AGGREGATE |
|
|
33
|
+
| `AISC` | AMERICAN INSTITUTE OF STEEL CONSTRUCTION |
|
|
34
|
+
| `AITC` | AMERICAN INSTITUTE OF TIMBER CONSTRUCTION |
|
|
35
|
+
| `ALT` | ALTERNATE |
|
|
36
|
+
| `ALUM` | ALUMINUM |
|
|
37
|
+
| `ANCH` | ANCHOR |
|
|
38
|
+
| `ANSI` | AMERICAN NATIONAL STANDARDS INSTITUTE |
|
|
39
|
+
| `APA` | AMERICAN PLYWOOD ASSOCIATION |
|
|
40
|
+
| `APPROX` | APPROXIMATE |
|
|
41
|
+
| `ARCH` | ARCHITECTURAL / ARCHITECT |
|
|
42
|
+
| `ASD` | ALLOWABLE STRENGTH DESIGN |
|
|
43
|
+
| `ASTM` | AMERICAN SOCIETY FOR TESTING AND MATERIALS |
|
|
44
|
+
| `AWPA` | AMERICAN WOOD PRESERVERS ASSOCIATION |
|
|
45
|
+
| `AWS` | AMERICAN WELDING SOCIETY |
|
|
46
|
+
| `AVG` | AVERAGE |
|
|
47
|
+
| `@` | AT |
|
|
48
|
+
| `&` | AND |
|
|
49
|
+
| `BLDG` | BUILDING |
|
|
50
|
+
| `BLK` | BLOCK |
|
|
51
|
+
| `BLKG` | BLOCKING |
|
|
52
|
+
| `BM` | BEAM |
|
|
53
|
+
| `BN` | BOUNDARY NAIL |
|
|
54
|
+
| `BNDRY` | BOUNDARY |
|
|
55
|
+
| `BOT` (or `B`) | BOTTOM |
|
|
56
|
+
| `BRC` | BRACE |
|
|
57
|
+
| `BRG` | BEARING |
|
|
58
|
+
| `BT` | BENT |
|
|
59
|
+
| `BTWN` | BETWEEN |
|
|
60
|
+
| `CANT` | CANTILEVER |
|
|
61
|
+
| `CAM` (or `C`) | CAMBER |
|
|
62
|
+
| `CG` | CENTER OF GRAVITY |
|
|
63
|
+
| `CIP` | CAST-IN-PLACE |
|
|
64
|
+
| `CJ` | CONSTRUCTION JOINT; CONTROL JOINT |
|
|
65
|
+
| `CJP` | COMPLETE JOINT PENETRATION (WELD) |
|
|
66
|
+
| `CL` (or `℄`) | CENTER LINE |
|
|
67
|
+
| `CLR` | CLEAR |
|
|
68
|
+
| `CMU` | CONCRETE MASONRY UNIT |
|
|
69
|
+
| `COL` | COLUMN |
|
|
70
|
+
| `COMP` | COMPRESSION / COMPOSITE |
|
|
71
|
+
| `CONC` | CONCRETE |
|
|
72
|
+
| `CONN` | CONNECTION |
|
|
73
|
+
| `CONST` / `CONSTR` | CONSTRUCTION |
|
|
74
|
+
| `CONT` | CONTINUOUS / CONTINUE |
|
|
75
|
+
| `CTR` | CENTER |
|
|
76
|
+
| `CTSK` | COUNTERSUNK |
|
|
77
|
+
| `CU FT` | CUBIC FOOT |
|
|
78
|
+
| `d` | PENNY (nail size, e.g. `16d`) |
|
|
79
|
+
| `DBL` | DOUBLE |
|
|
80
|
+
| `DEPT` | DEPARTMENT |
|
|
81
|
+
| `DET` | DETAIL |
|
|
82
|
+
| `DIA` (or `Ø`) | DIAMETER |
|
|
83
|
+
| `DIAG` | DIAGONAL |
|
|
84
|
+
| `DIAPH` | DIAPHRAGM |
|
|
85
|
+
| `DIM` | DIMENSION |
|
|
86
|
+
| `DN` | DOWN |
|
|
87
|
+
| `DO` | DITTO |
|
|
88
|
+
| `DWG` | DRAWING |
|
|
89
|
+
| `DWL` | DOWEL |
|
|
90
|
+
| `EA` | EACH |
|
|
91
|
+
| `EF` | EACH FACE |
|
|
92
|
+
| `EJ` | EXPANSION JOINT |
|
|
93
|
+
| `EL` / `ELEV` | ELEVATION |
|
|
94
|
+
| `ELEC` | ELECTRICAL |
|
|
95
|
+
| `EMBED` | EMBEDMENT |
|
|
96
|
+
| `EN` | EDGE NAIL |
|
|
97
|
+
| `EQ` | EQUAL / EQUALLY (SPACED) |
|
|
98
|
+
| `EQUIP` | EQUIPMENT |
|
|
99
|
+
| `ES` | EACH SIDE |
|
|
100
|
+
| `EW` | EACH WAY |
|
|
101
|
+
| `EXP` | EXPANSION |
|
|
102
|
+
| `EXT` | EXTERIOR |
|
|
103
|
+
| `(E)` | EXISTING (often out of new-work scope) |
|
|
104
|
+
| `FDN` | FOUNDATION |
|
|
105
|
+
| `FF` | FAR FACE |
|
|
106
|
+
| `FIN` | FINISH(ED) |
|
|
107
|
+
| `FLR` | FLOOR |
|
|
108
|
+
| `FN` | FIELD NAIL |
|
|
109
|
+
| `FOC` | FACE OF CONCRETE |
|
|
110
|
+
| `FOS` | FACE OF STUD / FACE OF SLAB |
|
|
111
|
+
| `FOW` | FACE OF WALL |
|
|
112
|
+
| `FP` | FIRE PROOFING |
|
|
113
|
+
| `FRMG` | FRAMING |
|
|
114
|
+
| `FS` | FAR SIDE / FULL SIZE |
|
|
115
|
+
| `FT` | FOOT / FEET |
|
|
116
|
+
| `FTG` | FOOTING |
|
|
117
|
+
| `GA` | GAUGE |
|
|
118
|
+
| `GALV` | GALVANIZED |
|
|
119
|
+
| `GB` | GRADE BEAM |
|
|
120
|
+
| `GLB` | GLUE-LAMINATED BEAM |
|
|
121
|
+
| `GR` | GRADE |
|
|
122
|
+
| `GRTG` | GRATING |
|
|
123
|
+
| `HDR` | HEADER |
|
|
124
|
+
| `HGR` | HANGER |
|
|
125
|
+
| `HGT` / `HT` | HEIGHT |
|
|
126
|
+
| `HK` | HOOK |
|
|
127
|
+
| `HORIZ` (or `H`) | HORIZONTAL |
|
|
128
|
+
| `HP` | HIGH POINT |
|
|
129
|
+
| `HS` | HIGH STRENGTH |
|
|
130
|
+
| `HSS` | HOLLOW STRUCTURAL SECTION |
|
|
131
|
+
| `ID` | INSIDE DIAMETER |
|
|
132
|
+
| `IF` | INSIDE FACE |
|
|
133
|
+
| `IN` | INCH |
|
|
134
|
+
| `INCL` | INCLUDE / INCLUDED |
|
|
135
|
+
| `INFO` | INFORMATION |
|
|
136
|
+
| `INSP` | INSPECTION |
|
|
137
|
+
| `INT` | INTERIOR |
|
|
138
|
+
| `JST` | JOIST |
|
|
139
|
+
| `JT` | JOINT |
|
|
140
|
+
| `K` | KIPS (1000 lb) |
|
|
141
|
+
| `KSI` | KIPS PER SQUARE INCH |
|
|
142
|
+
| `LAB` | LABORATORY |
|
|
143
|
+
| `LB(S)` (or `#`) | POUNDS |
|
|
144
|
+
| `LH` | LEFT HAND |
|
|
145
|
+
| `LLH` | LONG LEG HORIZONTAL |
|
|
146
|
+
| `LLV` | LONG LEG VERTICAL |
|
|
147
|
+
| `LP` | LOW POINT |
|
|
148
|
+
| `LT WT` | LIGHTWEIGHT |
|
|
149
|
+
| `MAS` | MASONRY |
|
|
150
|
+
| `MATL` | MATERIAL |
|
|
151
|
+
| `MAX` | MAXIMUM |
|
|
152
|
+
| `MB` | MACHINE BOLT |
|
|
153
|
+
| `MECH` | MECHANICAL |
|
|
154
|
+
| `MFR` | MANUFACTURER |
|
|
155
|
+
| `MIN` | MINIMUM |
|
|
156
|
+
| `MISC` | MISCELLANEOUS |
|
|
157
|
+
| `N` | NORTH |
|
|
158
|
+
| `(N)` | NEW |
|
|
159
|
+
| `NF` | NEAR FACE |
|
|
160
|
+
| `NIC` | NOT IN CONTRACT |
|
|
161
|
+
| `NOM` | NOMINAL |
|
|
162
|
+
| `NO` (or `#`) | NUMBER |
|
|
163
|
+
| `NS` | NEAR SIDE |
|
|
164
|
+
| `NTS` | NOT TO SCALE |
|
|
165
|
+
| `OC` | ON CENTER |
|
|
166
|
+
| `OD` | OUTSIDE DIAMETER |
|
|
167
|
+
| `OF` | OUTSIDE FACE |
|
|
168
|
+
| `OH` | OPPOSITE HAND |
|
|
169
|
+
| `OPNG` | OPENING |
|
|
170
|
+
| `OPP` | OPPOSITE |
|
|
171
|
+
| `OSB` | ORIENTED STRAND BOARD |
|
|
172
|
+
| `PARA` (or `∥`) | PARALLEL |
|
|
173
|
+
| `PERP` (or `⊥`) | PERPENDICULAR |
|
|
174
|
+
| `PJP` | PARTIAL JOINT PENETRATION (WELD) |
|
|
175
|
+
| `PL` | PLATE |
|
|
176
|
+
| `PLF` | POUNDS PER LINEAR FOOT |
|
|
177
|
+
| `PLYWD` | PLYWOOD |
|
|
178
|
+
| `PNL` | PANEL |
|
|
179
|
+
| `PSF` | POUNDS PER SQUARE FOOT |
|
|
180
|
+
| `PSI` | POUNDS PER SQUARE INCH |
|
|
181
|
+
| `PT` | POST-TENSIONED / PRESSURE-TREATED / POINT |
|
|
182
|
+
| `R` / `RAD` | RADIUS |
|
|
183
|
+
| `RD` | ROOF DRAIN |
|
|
184
|
+
| `REF` | REFERENCE |
|
|
185
|
+
| `REINF` | REINFORCING / REINFORCEMENT |
|
|
186
|
+
| `REQ'D` | REQUIRED |
|
|
187
|
+
| `RET` | RETAINING |
|
|
188
|
+
| `RM` | ROOM |
|
|
189
|
+
| `RO` | ROUGH OPENING |
|
|
190
|
+
| `SCHED` | SCHEDULE |
|
|
191
|
+
| `SECT` | SECTION |
|
|
192
|
+
| `SF` | SQUARE FEET |
|
|
193
|
+
| `SHT` | SHEET |
|
|
194
|
+
| `SHTHG` | SHEATHING |
|
|
195
|
+
| `SIM` | SIMILAR |
|
|
196
|
+
| `SLBB` | SHORT LEGS BACK-TO-BACK |
|
|
197
|
+
| `SOG` | SLAB ON GRADE |
|
|
198
|
+
| `SPCG` | SPACING |
|
|
199
|
+
| `SPECS` | SPECIFICATIONS |
|
|
200
|
+
| `SQ` | SQUARE |
|
|
201
|
+
| `SS` | SELECT STRUCTURAL / STAINLESS STEEL |
|
|
202
|
+
| `SSL` | SHORT SLOTTED HOLES |
|
|
203
|
+
| `STAGG` | STAGGERED |
|
|
204
|
+
| `STD` | STANDARD |
|
|
205
|
+
| `STIFF` | STIFFENER |
|
|
206
|
+
| `STIRR` | STIRRUP |
|
|
207
|
+
| `STL` | STEEL |
|
|
208
|
+
| `STRUCT` | STRUCTURAL |
|
|
209
|
+
| `SYM` | SYMMETRICAL |
|
|
210
|
+
| `T&B` | TOP AND BOTTOM |
|
|
211
|
+
| `T&G` | TONGUE AND GROOVE |
|
|
212
|
+
| `TB` | TIE BEAM |
|
|
213
|
+
| `TEMP` | TEMPORARY / TEMPERATURE |
|
|
214
|
+
| `THK` | THICK / THICKNESS |
|
|
215
|
+
| `THR` | THREADED |
|
|
216
|
+
| `THRU` | THROUGH |
|
|
217
|
+
| `TN` | TOE NAIL |
|
|
218
|
+
| `TOC` | TOP OF CONCRETE / TOP OF CURB |
|
|
219
|
+
| `TOF` | TOP OF FOOTING |
|
|
220
|
+
| `TOS` | TOP OF STEEL / TOP OF SLAB |
|
|
221
|
+
| `TOW` | TOP OF WALL |
|
|
222
|
+
| `TYP` | TYPICAL |
|
|
223
|
+
| `UON` / `UNO` | UNLESS OTHERWISE NOTED |
|
|
224
|
+
| `VERT` (or `V`) | VERTICAL |
|
|
225
|
+
| `VIF` | VERIFY IN FIELD |
|
|
226
|
+
| `W` | WEST |
|
|
227
|
+
| `W/` | WITH |
|
|
228
|
+
| `WD` | WOOD |
|
|
229
|
+
| `WP` | WORK POINT (also WATERPROOF) |
|
|
230
|
+
| `WT` | WEIGHT (also a structural-tee shape — see below) |
|
|
231
|
+
| `WWF` | WELDED WIRE FABRIC |
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Structural steel shape designations
|
|
236
|
+
|
|
237
|
+
How a profile label decodes (the label sits on/near the member centerline, usually mid-span):
|
|
238
|
+
|
|
239
|
+
| Designation | Shape |
|
|
240
|
+
|-------------|-------|
|
|
241
|
+
| `W` | Wide-flange (W-shape) — e.g. `W16X26` |
|
|
242
|
+
| `M` | Miscellaneous I-shape |
|
|
243
|
+
| `S` | American Standard (S-shape / "I-beam") |
|
|
244
|
+
| `HP` | Bearing pile (HP-shape) |
|
|
245
|
+
| `C` | American Standard Channel |
|
|
246
|
+
| `MC` | Miscellaneous Channel |
|
|
247
|
+
| `L` | Angle (equal/unequal leg) — e.g. `L4X4X1/4` |
|
|
248
|
+
| `WT` / `MT` / `ST` | Structural Tee (cut from W / M / S) |
|
|
249
|
+
| `HSS` | Hollow Structural Section (rectangular/square/round) — e.g. `HSS6X6X3/8` |
|
|
250
|
+
| `PIPE` | Standard pipe; `PIPE-X` extra-strong; `PIPE-XX` double-extra-strong |
|
|
251
|
+
| `TS` | Tube Steel (older designation for HSS) |
|
|
252
|
+
| `PL` | Plate — e.g. `PL1/2X8` |
|
|
253
|
+
|
|
254
|
+
**Reading the size numbers:**
|
|
255
|
+
- **W/M/S/HP/C/MC and WT/MT/ST:** the trailing number after the `X` IS the weight in **lb/ft (plf)** —
|
|
256
|
+
no table needed. `W16X26` = nominal depth **16"** × **26 lb/ft**; `WT6X25` (a tee cut from a W) =
|
|
257
|
+
**25 lb/ft**; `C12X20.7` = **20.7 lb/ft**. (Tees inherit weight-based naming from their parent
|
|
258
|
+
W/M/S shape.)
|
|
259
|
+
- **HSS / PIPE / L / PL:** the numbers are **dimensions**, not the weight (e.g. `HSS6X6X3/8` =
|
|
260
|
+
6"×6"×3/8" wall, `L4X4X1/4` = 4"×4"×1/4" leg) — look the weight up in an AISC shapes table
|
|
261
|
+
(or via the `steel-detailer-us` agent).
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Note conventions most useful to a takeoff
|
|
266
|
+
|
|
267
|
+
When reading the General Notes and plan notes, these drive member geometry/metadata directly:
|
|
268
|
+
|
|
269
|
+
- **`TYP`** — a value/detail shown once applies to all like conditions. A "TYP" profile or spacing in
|
|
270
|
+
the notes is the **default** for unlabeled members of that kind.
|
|
271
|
+
- **`TOS` / `TOC` / `TOF` / `BOS`** — top/bottom-of-steel/concrete/footing elevations. A plan default
|
|
272
|
+
TOS ("ALL STEEL T.O.S. = 16'-6" UON") sets every member's elevation unless a local callout overrides.
|
|
273
|
+
- **`UON` / `UNO`** — the stated value holds everywhere *unless* a local note says otherwise. Treat a
|
|
274
|
+
"TYP … UON" note as the fallback and watch for the exceptions.
|
|
275
|
+
- **`EQ`** — equally-spaced members between two references (no explicit dimension).
|
|
276
|
+
- **`SIM`** — a detail is repeated similarly elsewhere (mirror/rotate as needed).
|
|
277
|
+
- **`(N)` / `(E)`** — new vs existing. `(E)` members are frequently **out of the new-steel takeoff**;
|
|
278
|
+
confirm against line weight/scope before counting them.
|
|
279
|
+
- **Connection-type words in notes** — `MOMENT`, `DRAG`, `SHEAR`, `BRACED`, `PINNED`, `FIXED` name the
|
|
280
|
+
connection type at member ends; feed them into the member-end connection note + the connection
|
|
281
|
+
library (type → design detail# → platform component).
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Marks vs abbreviations (do not confuse)
|
|
286
|
+
|
|
287
|
+
A *mark* identifies a specific member or frame and is defined **by the project's schedules/elevations**,
|
|
288
|
+
not by this glossary:
|
|
289
|
+
|
|
290
|
+
- `MF` / `BF` — Moment Frame / Braced Frame member marks (resolved from the Frame Elevation sheets;
|
|
291
|
+
the AISC size comes from the moment-frame schedule, not from "MF").
|
|
292
|
+
- `D1`, `D2`, `BR1` — brace/diagonal marks.
|
|
293
|
+
- `C1`, `B12`, `G3` — column/beam/girder marks keyed to a schedule.
|
|
294
|
+
|
|
295
|
+
Never expand a mark using this abbreviation list. Resolve it from the frame elevations / column &
|
|
296
|
+
beam schedules, and if unresolved, leave it as an RFI.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
app: steel-model
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.3.0
|
|
3
3
|
display-name: Steel Model
|
|
4
4
|
publisher: floless
|
|
5
5
|
module: steel-detailer
|
|
@@ -14,6 +14,10 @@ exposes-as-agent: false
|
|
|
14
14
|
# Workflow changelog (FloLess-published). Newest first; the app shows entries newer than the
|
|
15
15
|
# installed version when offering an update. Plain-English — it surfaces to the user.
|
|
16
16
|
changelog:
|
|
17
|
+
- version: 0.3.0
|
|
18
|
+
summary: Export your bill of materials as CSV and Excel on Run
|
|
19
|
+
changes:
|
|
20
|
+
- "Added: two export steps at the end that write your bill of materials to a .csv and a real .xlsx file when you Run the workflow — the same figures as the BOM table and the Export buttons, saved to your exports folder automatically. Freeze a step once it's right and Run won't overwrite the file."
|
|
17
21
|
- version: 0.2.0
|
|
18
22
|
summary: Filter your drawing down to the steel first
|
|
19
23
|
changes:
|
|
@@ -34,6 +38,7 @@ inputs:
|
|
|
34
38
|
requires:
|
|
35
39
|
- html-report@0.2.x
|
|
36
40
|
- viewer-3d@0.1.x
|
|
41
|
+
- file@1.0.x
|
|
37
42
|
layout: linear
|
|
38
43
|
nodes:
|
|
39
44
|
# ── node 1: filter — isolate the steel linework (FIRST stage) ─────────────────
|
|
@@ -145,7 +150,45 @@ nodes:
|
|
|
145
150
|
- { id: m1, profile: W10X33, role: beam, wp: [[0,0],[6000,0]] }
|
|
146
151
|
- { id: m2, profile: HSS6X6X3/8, role: column, wp: [[0,0],[0,4500]] }
|
|
147
152
|
|
|
153
|
+
# ── node 5: csv-export — write the bill of materials to a CSV file ────────────
|
|
154
|
+
# Saves the bill of materials to a .csv file on disk every time you Run the
|
|
155
|
+
# workflow — the same figures and the same file you'd get from the "Export BOM
|
|
156
|
+
# (CSV)" button, but produced by the run so it lands automatically. When you
|
|
157
|
+
# Approve a takeoff, FloLess fills in the finished CSV and points this at your
|
|
158
|
+
# ~/.floless/exports folder; until then it ships a small sample so the step works
|
|
159
|
+
# out of the box. Freeze this node once you're happy and Run won't rewrite the file.
|
|
160
|
+
# (Uses the generic `file/write` verb with the CSV text FloLess generates — so the
|
|
161
|
+
# exported file is byte-for-byte the one the Export button produces, formula-injection
|
|
162
|
+
# guard and all — rather than re-serialising the rows in the runtime.)
|
|
163
|
+
- id: csv-export
|
|
164
|
+
agent: file
|
|
165
|
+
command: write
|
|
166
|
+
safety: { snapshot: false } # writing a file is a write-mode act; an un-frozen run needs a safety block (a frozen node skips the check)
|
|
167
|
+
config:
|
|
168
|
+
path: steel-model-bom.csv # baked to <home>/.floless/exports/steel-model/steel-model-bom.csv on Approve
|
|
169
|
+
encoding: text
|
|
170
|
+
bytes: "Profile,Qty,Length (ft),lb/ft,Weight (lb)\r\nW10X33,4,96,49.1,4714\r\nHSS6X6X3/8,6,54,27.48,1484\r\nTOTAL,10,150,,6198\r\n"
|
|
171
|
+
|
|
172
|
+
# ── node 6: xlsx-export — write the bill of materials to an Excel file ────────
|
|
173
|
+
# Saves the bill of materials to a real .xlsx Excel file every time you Run the
|
|
174
|
+
# workflow — the same figures as the BOM table and the "Export BOM (Excel)" button.
|
|
175
|
+
# Excel files are binary, so FloLess builds the spreadsheet and hands its bytes to
|
|
176
|
+
# this step to land on disk (base64-encoded). When you Approve a takeoff, FloLess
|
|
177
|
+
# fills in the real workbook and points this at your ~/.floless/exports folder; until
|
|
178
|
+
# then it ships a small sample so the step works out of the box. Freeze this node once
|
|
179
|
+
# you're happy and Run won't rewrite the file.
|
|
180
|
+
- id: xlsx-export
|
|
181
|
+
agent: file
|
|
182
|
+
command: write
|
|
183
|
+
safety: { snapshot: false } # writing a file is a write-mode act; an un-frozen run needs a safety block (a frozen node skips the check)
|
|
184
|
+
config:
|
|
185
|
+
path: steel-model-bom.xlsx # baked to <home>/.floless/exports/steel-model/steel-model-bom.xlsx on Approve
|
|
186
|
+
encoding: base64
|
|
187
|
+
bytes: "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"
|
|
188
|
+
|
|
148
189
|
connections:
|
|
149
190
|
- { from: filter, to: read }
|
|
150
191
|
- { from: read, to: view }
|
|
151
192
|
- { from: view, to: bom }
|
|
193
|
+
- { from: bom, to: csv-export }
|
|
194
|
+
- { from: csv-export, to: xlsx-export }
|