31 — Comprehensive Workflow & Human Factors Analysis

Note

Document type: Engineering analysis Created: 2026-02-23 Method: Programmatic cross-reference of CSV Manual.pdf, 44 DCL dialogs, 126 LSP modules, and csv.mnu menu definition. Scope: Complete workflow mapping, data flow tracing, human factors evaluation, and Design FMEA for ConstructiVision v11.


1. Program Purpose Statement

ConstructiVision is a tilt-up concrete panel detailing system that runs inside AutoCAD. It automates the creation of:

  1. Panel shop drawings — 3D solid models of individual concrete wall panels with openings, blockouts, reveals, chamfers, hardware, and dimensioning

  2. Site drawings — plan-view layouts showing panel placement on building footprints with grid lines, wall lines, slab edges, and footing connections

  3. Engineering data exports — structured data files sent to lift engineering firms (Dayton/Richmond, Meadow-Burke, WSB/White Cap) for crane lift analysis and brace design

  4. Materials lists — quantity take-offs for concrete, form material, hardware, chamfer, reveal strip, and connections

  5. Panel books — batch-printed drawing sets with revision history

The program replaces manual drafting of tilt-up panel details — a process that typically takes 2–4 hours per panel by hand — with a dialog-driven parametric system that generates a fully dimensioned 3D panel in minutes.


2. System Architecture Overview

2.1 Technology Stack

Layer

Technology

Detail

Host application

AutoCAD 2000 (R15.0)

32-bit, Visual LISP runtime

Application code

AutoLISP (.lsp)

126 source files, ~450 KB

Dialog definitions

DCL (.dcl)

44 files, ~530 KB, ~4,500 controls

Menu system

MNU/CUI

38 menu items in MENUGROUP=CSV

Data persistence

XRecord

Named Object Dictionary → “panel_list”

Compiled form

VLX

csv.vlx bundles 120 modules

External loader

csvmenu.lsp

Startup Suite, outside VLX

2.2 Central Data Structure: panelvar

The entire system revolves around a single association list called panelvar. Every dialog reads from it and writes back to it. It is persisted as an XRecord in AutoCAD’s Named Object Dictionary under the key "panel_list".

panelvar = (
  ("mpvar" . (...))   ;; Panel geometry: width, height, thickness, elevations
  ("rovar" . (...))   ;; Rough openings (4 slots)
  ("wdvar" . (...))   ;; Standard openings (6 slots)
  ("drvar" . (...))   ;; Man doors (6 slots)
  ("dlvar" . (...))   ;; Dock levelers (3 slots)
  ("sbvar" . (...))   ;; Rectangular blockouts (6 slots)
  ("rbvar" . (...))   ;; Round blockouts (6 slots)
  ("fhvar" . (...))   ;; Horizontal feature strips (19 slots across 3 pages)
  ("fvvar" . (...))   ;; Vertical feature strips (19 slots across 3 pages)
  ("plvar" . (...))   ;; Pilasters (2 slots)
  ("llvar" . (...))   ;; Lintels (2 slots)
  ("tpvar" . (...))   ;; Top plate / greenplate
  ("lbvar" . (...))   ;; Ledger bar / greenplate
  ("chvar" . (...))   ;; Chamfer parameters
  ("tsvar" . (...))   ;; Top steps (2 slots)
  ("fsvar" . (...))   ;; Footing steps (2 slots)
  ("ssvar" . (...))   ;; Spandrel seats (2 slots)
  ("sdvar" . (...))   ;; Slab dowels (4 slots)
  ("bpvar" . (...))   ;; Brace points (8 slots)
  ("ppvar" . (...))   ;; Pick points (8 slots)
  ("wcvar" . (...))   ;; Weld connections (15 slots across 5 pages)
)

21 variable groups × N slots each = ~1,826 discrete input parameters.

2.3 Module Classification

Category

Count

Examples

Dialog managers (_dlg)

30

mp_dlg, wc_dlg, btch_dlg

Geometry engines

12

drawpan, opening, feature, green, chamfer

Dimensioning

3

drawdim, drawdimlst, basedim

Engineering I/O

6

engexp, engimp, dreng, mbeng, wsbeng, makepan

Utilities

15

convert, panatt, updvar, rangchck, strlsort

Orchestration

5

csv, panel, finpan, btch, okcanhlp

Startup/compat

2

csvmenu, csvcompat


3. Complete Workflow Maps

3.1 Master Navigation Flow

The top-level menu is labeled “ConstructiVision” and the first item is “Drawing Setup” (renamed from “Program Options” — see Section 3.1b) — a single entry point that routes to either panel editing or site editing based on the drawing’s contents.

┌─────────────────────────────────────────────────────────────────┐
│                    AutoCAD Startup                               │
│  csvmenu.lsp → loads csv.mnu/csv.cui → "ConstructiVision" menu  │
└────────────────────────┬────────────────────────────────────────┘
                         │ User clicks "Drawing Setup"
                         ▼
┌─────────────────────────────────────────────────────────────────┐
│  csv.lsp (c:csv)                                                 │
│  • Sets ~60 sysvars                                              │
│  • Loads 93 modules from csvlst                                  │
│  • Shows project dialog if no CV drawing is open                 │
│  • Routes based on Named Object Dictionary lookup:               │
│    ├─ "panel_list" found → pj_name → md_dlg (Panel Options)      │
│    ├─ "site_list" found  → pj_name → site_dlg (Site Options)     │
│    └─ Neither found      → dwgtype.dcl (ask user)                │
│                            ├─ "Panel Drawing" → md_dlg            │
│                            ├─ "Site Drawing"  → site_dlg          │
│                            └─ Cancel          → exit              │
└────────┬──────────────────────────┬─────────────────────────────┘
         │                          │
    ┌────▼─────┐             ┌──────▼──────┐
    │ md_dlg   │             │ site_dlg    │
    │ (Panel)  │             │ (Site)      │
    └────┬─────┘             └──────┬──────┘
         │                          │
    ┌────┴────────────┐        ┌────┴──────────────┐
    │ Panel Workflows │        │ Site Workflows     │
    │ (Section 3.2)   │        │ (Section 3.5)      │
    └─────────────────┘        └────────────────────┘

How panel vs. site detection works:

  1. Primary method (csv.lsp): Dictionary key lookup in the AutoCAD Named Object Dictionary — checks for "panel_list" first, then "site_list". This is the real routing mechanism.

  2. User choice (csv.lsp → dwgtype.dcl): If neither dictionary entry exists, the csv_ask_dwgtype function presents the Drawing Type dialog (dwgtype.dcl) with “Panel Drawing” / “Site Drawing” / “Cancel” buttons. The user explicitly chooses.

  3. Template detection (dwgnew.lsp): When creating a new drawing from an existing template, filename patterns are tried first — *site* → site, *panel*,*pnl* → panel. If the filename is ambiguous, the same dwgtype.dcl dialog is shown.

Note

The fallback no longer silently defaults to panel mode. An unrecognized drawing will always prompt the user to choose, eliminating the risk of misrouting a site drawing to the panel editor.

3.1a progcont Routing — VLX vs Source Mismatch (Updated Mar 1, 2026)

The top-level menu items set different progcont values before calling csv;. In VLX mode, the compiled bytecode reads progcont and routes to distinct dialogs. In source-mode (.lsp), the routing code is missing — all items fall through to the same dialog.

Menu Item

progcont

csv.mnu Line

VLX Behavior (working)

Source-Mode Behavior (broken)

Drawing Setup

1

8

md_dlg “Program Options” hub

md_dlg “Panel Options” (wrong dlg)

Slope Calculator

8193

59

Slope Elevation Calculator dialog

Same md_dlg “Panel Options”

Create New Project

262153

10

Project Details dialog

Same md_dlg “Panel Options”

Create New Drawing

262161

11

File chooser “Choose a template”

Same md_dlg “Panel Options”

Edit Existing Drawing

262145

12

File chooser “Choose to edit”

Same md_dlg “Panel Options”

Batch Utilities

262177

14

Batch UI dialog

Same md_dlg “Panel Options”

Root cause — VLX/source mismatch (discovered Mar 1, 2026):

The CSV.VLX was compiled from source code that does not exist in this repository. Binary analysis of the VLX reveals:

  1. VLX’s embedded md_dlg.dcl = “ConstructiVision - Program Options” with numeric button keys ("2", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "16384") that map to progcont bitmasks.

  2. Source md_dlg.dcl (both PB11 and TB11 folders) = “ConstructiVision – Panel Options” with string keys ("new", "old", "val", "pal", "vgp", etc.) — a completely different, lower-level dialog for panel sub-feature selection.

  3. VLX’s compiled c:csv reads progcont and routes to different dialogs per value. The source csv.lsp never reads progcont — it uses pnl and ld variables instead.

The progcont bitmask system uses base 262144 (0x40000) = “already loaded, skip project dialog”. Button keys are powers of 2. The menu sets (setq progcont N) then calls csv;. The VLX bytecode decodes the bitmask and routes accordingly. This routing code was never committed to the source tree.

The csv.mnu file is the authoritative source for all progcont values (17 menu items with their progcont assignments). The au3 test fixture replicates exactly what the menu macros do: (progn (setq progcont N)(c:csv)).

Important

progcont is NOT dead code in VLX mode — it is the primary routing mechanism. OCR evidence from VM 102 (PB11/VLX) confirms each progcont value produces a distinct dialog. To make TB11 source-mode pass the au3 validation tests, the missing progcont routing must be reconstructed in csv.lsp and the VLX’s numeric-key md_dlg.dcl / md_dlg.lsp must be reverse-engineered or rewritten from scratch based on OCR evidence of the working dialogs.

3.1b Changes Applied

The following improvements have been implemented in this sprint:

  1. Menu renamed: “Program Options” → “Drawing Setup” — the old name implied application settings, not drawing configuration. The new name accurately describes what the user is doing: setting up or configuring a drawing within ConstructiVision.

  2. Drawing type choice dialog added: New file dwgtype.dcl with helper function csv_ask_dwgtype in csv.lsp. When the Named Object Dictionary has neither "panel_list" nor "site_list", the user is now presented with:

    • “Panel Drawing” — routes to md_dlg (Panel Options)

    • “Site Drawing” — routes to site_dlg (Site Options)

    • “Cancel” — exits without action

  3. Template detection improved in dwgnew.lsp — now tries both *site* and *panel*,*pnl* filename patterns before falling back to the same drawing type choice dialog. Previously, any non-“site” filename silently defaulted to panel mode.

3.2 Panel Creation / Editing Workflow

This is the primary workflow — ~90% of user time.

Step  Dialog/Function    User Action                        Code Path
────  ─────────────────  ─────────────────────────────────  ──────────────
 1    md_dlg             Click "New Panel" or "Edit Panel"  md_dlg.lsp
 2    mp_dlg             Enter panel #, dimensions, scale   mp_dlg.lsp
 3    [sub-dialogs]      Define panel features (see 3.3)    *_dlg.lsp
 4    OK in mp_dlg       Validates, saves panelvar          okcanhlp.lsp
 5    panel()            Writes XRecord, calls drawpan      panel.lsp
 6    drawpan()          Builds 3D solid geometry           drawpan.lsp
 7    opening()×N        Subtracts openings from solid      opening.lsp
 8    feature()×N        Adds reveal strips                 feature.lsp
 9    green()×N          Adds greenplate/ledger geometry    green.lsp
10    weldconn()         Places connection blocks           weldconn.lsp
11    chamfer()          Applies edge chamfers              chamfer.lsp
12    finpan()           Center of gravity, points, dims    finpan.lsp
13    drawdim()×5        Dimension chains per layer group   drawdim.lsp
14    TITLE/BORDER       Insert title block with attributes finpan.lsp
15    Save               Write .dwg file                    finpan.lsp

Elapsed time per panel: 3–15 minutes depending on complexity. Geometry operations: 3D Boolean (UNION/SUBTRACT) pipeline.

3.3 Panel Feature Sub-Dialog Map

From the main panel dialog (mp_dlg), the user accesses feature dialogs via toggle checkboxes. Each feature has its own DCL dialog with N repeating “slots”:

Feature

Dialog

DCL File

Slots

Controls/Slot

Total Data Points

Rough Openings

ro_dlg

ro_dlg.dcl

4

15

60

Standard Openings

wd_dlg

wd_dlg.dcl

6×2pg

10

120

Man Doors

dr_dlg

dr_dlg.dcl

6

9

54

Dock Levelers

dl_dlg

dl_dlg.dcl

3

16

48

Rect. Blockouts

sb_dlg

sb_dlg.dcl

6

17

102

Round Blockouts

rb_dlg

rb_dlg.dcl

6

9

54

Horiz. Features

fh_dlg

fh_dlg.dcl

19×3pg

25

475

Vert. Features

fv_dlg

fv_dlg.dcl

19×3pg

19

361

Pilasters

pl_dlg

pl_dlg.dcl

2

17

34

Lintels

ll_dlg

ll_dlg.dcl

2

20

40

Top Plate

tp_dlg

tp_dlg.dcl

1

13

13

Ledger Bar

lb_dlg

lb_dlg.dcl

1

85

85

Chamfer

ch_dlg

ch_dlg.dcl

1

30

30

Top Steps

ts_dlg

ts_dlg.dcl

2

7

14

Footing Steps

fs_dlg

fs_dlg.dcl

2

7

14

Spandrel Seats

ss_dlg

ss_dlg.dcl

2

9

18

Slab Dowels

sd_dlg

sd_dlg.dcl

4

7

28

Brace Points

bp_dlg

bp_dlg.dcl

8

4

32

Pick Points

pp_dlg

pp_dlg.dcl

8

5

40

Weld Connections

wc_dlg

wc_dlg.dcl

15×5pg

41

615

TOTAL

~2,237

3.4 Batch Processing Workflow

Step  Dialog/Function    User Action                        Code Path
────  ─────────────────  ─────────────────────────────────  ──────────────
 1    md_dlg             Click "Batch Utilities"            md_dlg.lsp
 2    btch_dlg           Select panels, operation, layers   btch_dlg.lsp
 3    btch()             Generates .scr script file         btch.lsp
 4    AutoCAD            Executes btch.scr → opens panel    (script engine)
 5    panel() or plt()   Redraws and/or prints panel        panel.lsp/plt.lsp
 6    btch()             Recursion: next panel in pnllst    btch.lsp
 7    [repeat 4-6]       Until all panels processed         —

Batch operations available:
  • Print Only (btchp=1)         → plt for each panel
  • Redraw + Print (btchp=2)     → panel + plt for each
  • Export Engineering (btchp=3)  → panel + engexp for each
  • Import Engineering            → engimp → btch loop
  • Update Drawings              → panel for each (no print)
  • Materials List               → matl_dlg across selection
  • Revision History             → revision across selection

3.5 Site Drawing Workflow

Step  Dialog/Function    User Action                        Code Path
────  ─────────────────  ─────────────────────────────────  ──────────────
 1    sdwg_dlg           Select site operation               sdwg_dlg.lsp
 2a   grid_dlg           Define grid lines (N/S/E/W)        grid_dlg.lsp
 2b   wall_dlg           Define wall lines (64 rows × 4pg)  wall_dlg.lsp
 2c   slab_dlg           Define slab edges (64 rows × 4pg)  slab_dlg.lsp
 2d   green (site)       Footing connections, joist layout   green.lsp
 2e   tiltup             Attach/detach panels to site        tiltup.lsp
 2f   layout             Construction crane layout           layout.lsp
 3    Site print          Print selected site layouts         plt.lsp

3.6 Engineering Export/Import Workflow

Export path:
  btch_dlg → "Export Data File" → engexp.lsp
    Phase 1: read panelvar from each panel → convert to primitives
             (P/R/F/T/A/G/M/C/W/B/L geometric codes)
    Phase 2: dispatch to format writer:
             ├── dreng.lsp  → Dayton/Richmond CSV
             ├── mbeng.lsp  → Meadow-Burke proprietary
             ├── wsbeng.lsp → WSB pipe-delimited
             └── wceng       → White Cap

Import path:
  engimp.lsp → read .pan file → parse headers → extract
  brace/lift/steel/strongback data → btch loop → update panels

Import path (.pnl encrypted):
  makepan.lsp → decrypt header (char code subtraction) →
  read panelvar → validate version → write XRecord → btch loop

3.7 Materials List Workflow

  matl_dlg.lsp
    ├── Read wcl.txt (weld connection library)
    ├── Scan INSERT entities on layer "0" (title blocks)
    ├── For each panel title block:
    │   ├── Count named blocks (bolts, points, connections)
    │   ├── Tally reveals: F1(¼"), F2(½"), F3(¾"), F4(1")
    │   ├── Tally chamfers: C2, C3, C4
    │   ├── Extract: SQFT, CU (yd³), PER (perimeter LF)
    │   ├── Count braces/extensions (BT, BXT)
    │   └── Match weld connections to wcl.txt library
    └── Output → matlist.txt (formatted report)

Output sections: J Bolts, Pick Points, Brace Points, Edge Form,
  Treated Lumber, Chamfer, Reveal Strip, Connections, Concrete yd³

4. Manual ↔ Code Cross-Reference Matrix

This table maps every section of the CSV Manual.pdf to the implementing code files, validating coverage and identifying gaps.

Manual Section

DCL File

LSP File(s)

Menu ID

Status

Introduction

✅ Documentation only

License Agreement

✅ Legal (updated 2026)

Limited Warranty

✅ Legal (updated 2026)

Installation

⚠️ Describes InstallShield; obsolete

System Requirements

⚠️ Lists Win95/98, 8MB RAM

Product Support

ID_CSVSUPPORT

⚠️ Phone/FAX numbers outdated

On-Line Support (pcAnywhere)

❌ Defunct: pcAnywhere removed

Drawing Setup (was “Program Options”)

md_dlg.dcl, dwgtype.dcl

md_dlg.lsp, csv.lsp

ID_CSVRUN

✅ Renamed, improved routing

Create New Drawing

dwg.dcl

dwgnew.lsp

ID_CSV16

Edit Existing Drawing

dwg.dcl

dwgold.lsp

ID_CSV0

Create New Project

new.dcl, project.dcl

new.lsp, project.lsp

ID_CSV8

Select Drawing

✅ (getfiled dialog)

Drawing Type

dwg.dcl

Batch Utilities

btch_dlg.dcl

btch_dlg.lsp, btch.lsp

ID_CSV32

View/Print All Layers

lyr_dlg.dcl

lyr_dlg.lsp

ID_AllLayers

View/Print Selected Layers

lyr_dlg.dcl

lyr_dlg.lsp

ID_CSV128

Change 3D Viewpoint

viewpt.dcl

ID_CSV3d

Print Materials List

matl_dlg.dcl

matl_dlg.lsp

ID_CSV1024

Shading

ID_CSV8192

✅ (direct AutoCAD cmds)

Print Revision History

revision.dcl

revision.lsp

ID_CSV2048

Panel — Project Details

project.dcl

project.lsp, pj_name.lsp

Panel — Drawing Details

mp_dlg.dcl

mp_dlg.lsp

Panel — Panel Details

mp_dlg.dcl

mp_dlg.lsp

Standard Opening

wd_dlg.dcl

wd_dlg.lsp, opening.lsp

Recess / Blockout

sb_dlg.dcl, nb_dlg.dcl, rb_dlg.dcl

sb_dlg.lsp, rb_dlg.lsp

Man Door

dr_dlg.dcl

dr_dlg.lsp

Dock Leveler

dl_dlg.dcl

dl_dlg.lsp

Pilaster/Lintel

pl_dlg.dcl, ll_dlg.dcl

pl_dlg.lsp, ll_dlg.lsp

Ledger / Top Plate

lb_dlg.dcl, tp_dlg.dcl

lb_dlg.lsp, tp_dlg.lsp, green.lsp

Roof Line

ro_dlg.dcl

ro_dlg.lsp

⚠️ Manual calls it “Roof Line”; code is ro = Rough Opening

Chamfer

ch_dlg.dcl

ch_dlg.lsp, chamfer.lsp

Feature Strip

fh_dlg.dcl, fv_dlg.dcl, fs_dlg.dcl

fh_dlg.lsp, fv_dlg.lsp, feature.lsp

Slab Dowels

sd_dlg.dcl

sd_dlg.lsp, dowels.lsp

Weld Connections

wc_dlg.dcl

wc_dlg.lsp, wcpage.lsp, weldconn.lsp

WC Edit

wc_edit.dcl

wc_edit.lsp, wcmod.lsp

Pick Points

pp_dlg.dcl

pp_dlg.lsp, points.lsp, pick.lsp

Brace Points

bp_dlg.dcl

bp_dlg.lsp, brace.lsp

Special Operations

✅ (in mp_dlg)

Revisions

revision.dcl

revision.lsp, donerev.lsp

Registration Manager

ID_CSVPROG

⚠️ Uses csvreg (COM-based?)

Slope Calculator

calc_dlg.dcl

calc_dlg.lsp

ID_CSVSLOPE

Data Entry Methods

slide.lsp, editbx.lsp

✅ (describes slider/editbox)

Dimensioning Conventions

drawdim.lsp, basedim.lsp

Site Drawing Options

sdwg_dlg.dcl, site_dlg.dcl

sdwg_dlg.lsp, site_dlg.lsp

Grid Lines

grid_dlg.dcl

grid_dlg.lsp

Wall Lines

wall_dlg.dcl

wall_dlg.lsp

Slab Lines

slab_dlg.dcl

slab_dlg.lsp

Attach/Detach Panels

tiltup.lsp, panatt.lsp

Construction Layout

layout.lsp

About ConstructiVision

ID_CSVABOUT

✅ (csv.hlp)

Help

ID_CSVHELP

⚠️ csv.hlp requires WinHelp (removed Win10+)

Coverage Summary

Status

Count

Meaning

✅ Verified

38

Manual section maps to working code

⚠️ Concern

6

Exists but outdated, naming mismatch, or platform issue

❌ Broken

1

pcAnywhere remote support — product discontinued


5. Data Input Analysis

5.1 Input Categories

All user data enters the system through DCL dialog controls. There are zero command-line data entry points — the program is entirely dialog-driven.

Input Type

Control

Count

Validation

Dimensional (ft-in)

edit_box + slider

1,826

rangchck.lsp

On/Off toggle

toggle

721

Boolean only

Selection

radio_button

622

Mutual exclusion

List choice

popup_list

645

Index-based

Text (names)

edit_box

~30

String length

File paths

getfiled

~5

OS file dialog

5.2 Input Validation Architecture

Validation is handled by rangchck.lsp (11,498 bytes) which:

  • Validates numeric ranges for every dimensional edit_box

  • Displays warning dialog for out-of-range values

  • Clamps values to min/max bounds

  • Handles ft-in-fraction parsing (e.g., “6’-4 1/2””)

enable.lsp and fenable.lsp handle control enabling/disabling based on toggle states and snap-to-edge selections.

5.3 Data Processing Pipeline

User Input (DCL)
  │
  ▼
updvar.lsp — Reads all dialog tile values into panelvar assoc list
  │
  ▼
panelvar — Central data store (association list, ~1,826 parameters)
  │
  ├── XRecord write → AutoCAD Named Object Dictionary
  │
  ▼
drawpan.lsp — Converts parameters to 3D geometry primitives
  │
  ├── 3D Boolean pipeline (UNION/SUBTRACT)
  ├── opening.lsp → subtracts voids from panel solid
  ├── feature.lsp → adds/subtracts reveal strips
  ├── green.lsp → adds ledger/top plate geometry
  ├── chamfer.lsp → applies edge chamfers
  ├── weldconn.lsp → inserts connection blocks
  └── miter.lsp → edge miter geometry
  │
  ▼
finpan.lsp — Post-processing
  │
  ├── centgrav.lsp → center of gravity from massprop
  ├── points.lsp → pick/brace point placement
  ├── drawdim.lsp → automated dimension chains ×5
  ├── TITLE block insert (weight, area, volume, etc.)
  └── Save .dwg
  │
  ▼
Output:
  ├── AutoCAD .dwg file (3D panel + dimensions + title block)
  ├── matlist.txt (materials list, text)
  ├── .pan/.pnl engineering data files
  └── Hard copy print via plt.lsp

5.4 Data Output Destinations

Output

Format

Generated By

Destination

Panel drawing

.dwg (R14/R2000)

finpan.lsp

Project Files directory

Site drawing

.dwg

site_dlg.lsp

Project Files directory

Materials list

matlist.txt

matl_dlg.lsp

Project Files directory

Engineering (D/R)

CSV

dreng.lsp

File specified by user

Engineering (MB)

Proprietary

mbeng.lsp

File specified by user

Engineering (WSB)

Pipe-delimited

wsbeng.lsp

File specified by user

Hard copy

Print

plt.lsp

Selected plotter

Revision history

Text

revision.lsp

Project Files directory

Batch script

btch.scr

btch.lsp

Working directory (temp)

Batch listing

cvplst.bat output

csv.lsp

Working directory (temp)


6. Critical Workflow Test Matrix

These are the workflows that must be tested for any release. Each row is an independently testable path through the system.

6.1 Core Panel Workflows

ID

Workflow

Entry

Steps

Exit Criteria

Priority

P-01

Create new project

Menu → Drawing Setup

pj_name → new.dcl → OK

Project directory created

Critical

P-02

Create simple panel

md_dlg → New Panel

mp_dlg → dimensions only → OK

.dwg with solid + dims + title

Critical

P-03

Panel with openings

mp_dlg → Openings toggle

wd_dlg → define 1+ windows → OK

Openings subtracted from solid

Critical

P-04

Panel with doors

mp_dlg → Doors toggle

dr_dlg → define 1+ doors → OK

Door openings + swing arc drawn

High

P-05

Panel with blockouts

mp_dlg → Blockouts toggle

sb_dlg → define 1+ blockouts → OK

Rectangular voids subtracted

High

P-06

Panel with round blockouts

mp_dlg → RndBlk toggle

rb_dlg → define 1+ circles → OK

Cylindrical voids subtracted

Medium

P-07

Panel with reveals

mp_dlg → Features toggle

fh_dlg + fv_dlg → OK

Reveal strips visible, hatch applied

High

P-08

Panel with pilaster

mp_dlg → Pilaster toggle

pl_dlg → define pilaster → OK

Extrusion added to panel edge

Medium

P-09

Panel with lintel

mp_dlg → Lintel toggle

ll_dlg → define lintel → OK

Extrusion added above opening

Medium

P-10

Panel with chamfer

mp_dlg → Chamfer toggle

ch_dlg → select edges → OK

Edge chamfers applied

High

P-11

Panel with top plate

mp_dlg → TP toggle

tp_dlg → define plate → OK

Greenplate geometry drawn

Medium

P-12

Panel with ledger

mp_dlg → LB toggle

lb_dlg → define ledger → OK

Ledger geometry drawn

Medium

P-13

Panel with weld connections

mp_dlg → WC toggle

wc_dlg (5 pages) → define → OK

Connection blocks placed

Critical

P-14

Panel with pick points

mp_dlg → PP toggle

pp_dlg → define 1+ points → OK

Pick point blocks placed

Critical

P-15

Panel with brace points

mp_dlg → BP toggle

bp_dlg → define 1+ points → OK

Brace point blocks placed

Critical

P-16

Panel with slab dowels

mp_dlg → SD toggle

sd_dlg → define dowels → OK

Dowel inserts placed

Medium

P-17

Panel with dock leveler

mp_dlg → DL toggle

dl_dlg → define 1+ → OK

Dock leveler openings subtracted

Medium

P-18

Panel with spandrel seat

mp_dlg → SS toggle

ss_dlg → define → OK

Spandrel geometry applied

Low

P-19

Panel with top/footing steps

mp_dlg → TS/FS toggle

ts_dlg + fs_dlg → OK

Step geometry at panel edges

Low

P-20

Panel with ALL features

mp_dlg → all toggles on

All sub-dialogs → OK

All features composed correctly

Critical

P-21

Edit existing panel

md_dlg → Edit Panel

mp_dlg loads existing → modify → OK

Modified panel regenerated

Critical

P-22

Copy panel as template

md_dlg → existing selected

New panel # → OK

New panel with copied data

High

P-23

Radius panel

mp_dlg → Radius toggle

Enter radius value

Curved panel solid generated

Medium

P-24

Opposite-hand panel

Menu → Special Ops

Select base panel

Mirrored panel created

Medium

6.2 Batch & Print Workflows

ID

Workflow

Entry

Steps

Exit Criteria

Priority

B-01

Batch print all

btch_dlg → All + Print

Select printer → OK

All panels printed

Critical

B-02

Batch redraw all

btch_dlg → All + Redraw

OK → wait

All panels regenerated

Critical

B-03

Batch print range

btch_dlg → Range

Set min/max → OK

Range subset printed

High

B-04

Batch update drawings

btch_dlg → Update

OK → wait

All panels rebuilt to current version

High

B-05

Print single panel

md_dlg → Print All Layers

Select printer → OK

Current panel printed

Critical

B-06

Print selected layers

md_dlg → Print Layers

lyr_dlg → select → OK

Filtered print

Medium

B-07

Print materials list

md_dlg → Materials List

matl_dlg processes

matlist.txt created

Critical

B-08

Print revision history

md_dlg → Revision History

OK

Revision report printed

Medium

6.3 Engineering Export/Import Workflows

ID

Workflow

Entry

Steps

Exit Criteria

Priority

E-01

Export Dayton/Richmond

btch_dlg → Export

dreng_dlg → OK

CSV file generated

Critical

E-02

Export Meadow-Burke

btch_dlg → Export

mbeng_dlg → OK

MB format file generated

Critical

E-03

Export WSB

btch_dlg → Export

wsbeng_dlg → OK

Pipe-delimited file generated

Critical

E-04

Import .pan file

engimp → browse

Parse → validate → batch

Panels updated with eng data

Critical

E-05

Import .pnl file

makepan → browse

Decrypt → validate → batch

Panels created from external source

High

E-06

Round-trip export-import

Export → manual edit → Import

Full cycle

Data integrity maintained

High

6.4 Site Drawing Workflows

ID

Workflow

Entry

Steps

Exit Criteria

Priority

S-01

Create site drawing

sdwg_dlg → New Site

project → drawing type

Blank site drawing created

Critical

S-02

Define grid lines

sdwg_dlg → Grid Lines

grid_dlg (208 edit boxes) → OK

Grid lines drawn

High

S-03

Define wall lines

sdwg_dlg → Wall Lines

wall_dlg (4 pages) → OK

Wall lines drawn

High

S-04

Define slab edges

sdwg_dlg → Slab Lines

slab_dlg (4 pages) → OK

Slab edges drawn

High

S-05

Attach panels to site

sdwg_dlg → Attach

Select panels → place

Panels referenced in site

Critical

S-06

Construction layout

sdwg_dlg → Layout

layout.lsp calculations

Crane layout generated

Medium

S-07

Print site layouts

sdwg_dlg → Print

Select viewports → OK

Site plans printed

High

6.5 Utility / Cross-Cutting Workflows

ID

Workflow

Entry

Steps

Exit Criteria

Priority

U-01

Slope calculator

Menu → Slope Calculator

calc_dlg → enter values → OK

Elevations calculated

Medium

U-02

Change 3D viewpoint

Menu → Change 3D

viewpt → select view

Viewpoint changed

Low

U-03

WC Edit (connection specs)

wc_dlg → Edit button

wc_edit.dcl → modify → OK

Connection library updated

High

U-04

Change project search path

md_dlg → options

Browse → select folder

Path updated

Medium

U-05

Version conversion

Open old panel

convert.lsp auto-triggers

panelvar upgraded to V2.25

High

U-06

Registration

Menu → Reg Manager

csvreg → enter code

License activated

Critical


7. Issues & Discrepancies Found

7.1 Broken Functionality

#

Issue

Severity

Detail

BRK-01

pcAnywhere remote support

❌ Defunct

Symantec discontinued pcAnywhere in 2014. The manual documents it extensively but the feature is dead. Remove from manual and menu.

BRK-02

csv.hlp Help file

❌ Non-functional on Win10+

WinHelp (.hlp) viewer removed from Windows Vista+. Help menu item and all acad_helpdlg calls fail silently. Need CHM or HTML conversion.

BRK-03

csv.GID index

❌ Orphaned

Global index for csv.hlp — useless without WinHelp runtime.

BRK-04

progcont routing missing from source

⚠️ Source-mode broken

Every menu item sets progcont via (setq progcont N) before calling csv;. The VLX bytecode reads progcont and routes correctly (confirmed by OCR evidence from VM 102). However, no .lsp source file reads progcont — the routing code exists only in compiled VLX bytecode from uncommitted source. The source csv.lsp uses pnl/ld variables instead. In source-mode, all menu items fall through to the same md_dlg “Panel Options” dialog. See Section 3.1a for full analysis including bitmask decoding and VLX binary evidence.

BRK-05

Source md_dlg ≠ VLX md_dlg

⚠️ Missing source

The VLX’s embedded md_dlg.dcl is “Program Options” with numeric button keys (powers of 2 mapping to progcont bitmasks). The source md_dlg.dcl is “Panel Options” with string keys ("new", "old", "val", etc.) — a completely different, lower-level dialog. The VLX version is the top-level hub that routes menu items to different features. The source version is a panel sub-feature selector. The VLX was compiled from source that was never committed to the repository. Menu renamed from “Program Options” to “Drawing Setup”; progcont routing reconstruction required for source-mode.

BRK-06

Panel/site auto-detection is fragile

✅ Fixed

Drawing type was determined by dictionary lookup with no user override; fallback always defaulted to panel mode. Now: when neither "panel_list" nor "site_list" exists, dwgtype.dcl asks the user to choose. Template detection in dwgnew.lsp also improved with *panel*,*pnl* pattern and dwgtype.dcl fallback.

7.2 Naming / Documentation Discrepancies

#

Issue

Detail

DIS-01

“Roof Line” vs “Rough Opening”

Manual section “Roof Line” refers to ro_dlg which is actually “Rough Opening.” The ROofline naming exists nowhere in the code. Confusing for maintainers.

DIS-02

Manual says “Version 10.nn”

About dialog says v10.nn but TB11 files are v11. Manual was never updated for v11 release.

DIS-03

Address discrepancy

Manual lists two addresses: Mill Creek (main) and Bremerton (support). These may both be outdated.

DIS-04

“AutoCAD 2000 or higher required”

Manual says this but also references R14 compatibility. csvcompat.lsp supports back to R14 for menu loading but program itself requires AC2000+.

DIS-05

Spanish language option

Manual notes “the Spanish option does not work very well at present.” Code has language selection in project dialog but status is unclear.

DIS-06

File path references

Manual references C:\Program Files\ACAD2000\Csv\ in multiple places. csv.prj was already updated to C:\Program Files\ConstructiVision\ but the manual still has old paths.

7.3 Unclear / Undocumented Behavior

#

Issue

Detail

UNC-01

Script recursion for batch

btch.lsp creates a .scr file that opens drawings and calls back into CV functions. If a panel has errors, the entire batch stops with no recovery. No error handling in the recursion loop.

UNC-02

Encrypted .pnl import

makepan.lsp decrypts .pnl files using char-code subtraction with fixed offsets (51+n, 79+n, 81+n, 91). This is security through obscurity — the “encryption” is trivially reversible.

UNC-03

No undo for batch operations

Batch redraw/update overwrites drawings with no backup mechanism. Manual mentions “Warning message will be displayed” but there is no undo path.

UNC-04

massprop parsing

centgrav.lsp reads massprop output from a text file generated by AutoCAD’s MASSPROP command run via script. This is fragile — depends on exact text formatting of AutoCAD’s output.

UNC-05

cv.bat / cvplst.bat

csv.lsp generates batch files at runtime for directory listing and path setup. These are not documented and may trigger antivirus warnings on modern systems.


8. Human Factors Analysis

8.1 Heuristic Evaluation (Nielsen’s 10 Usability Heuristics)

#

Heuristic

Rating

Assessment

H1

Visibility of system status

⚠️ Fair

process.dcl shows “Please Wait” but no progress bar, no % complete, no panel count during batch ops.

H2

Match between system and real world

✅ Good

Uses construction industry terminology (tilt-up, pilaster, ledger, greenplate, chamfer). Domain experts will understand.

H3

User control and freedom

❌ Poor

No undo within dialogs. Cancel loses ALL changes, not just the last one. Batch operations are irreversible. Three menu items (New Project / New Drawing / Edit Existing) promise distinct actions but route to the identical dialog — user has no shortcut to the action they selected.

H4

Consistency and standards

⚠️ Fair

Consistent edit_box+slider pattern is good. But dialog layout varies — some use pages (wc: 5 pages), some use long scrolling layouts. Toggle placement inconsistent across dialogs. Menu items suggest different functions but all lead to the same place, violating the principle of least surprise.

H5

Error prevention

⚠️ Fair

rangchck.lsp validates ranges well. But no validation on cross-field dependencies (e.g., opening wider than panel triggers warning only after drawing fails).

H6

Recognition over recall

❌ Poor

Users must remember panel numbers (3 digits), feature slot numbers, and coordinate conventions. No visual preview of panel during editing.

H7

Flexibility and efficiency

✅ Good

Template system (copy panel), batch operations, slider+editbox dual entry. Power users can work fast.

H8

Aesthetic and minimalist design

❌ Poor

DCL dialogs are dense, cluttered. wc_dlg has 615 controls across 5 pages. Wall_dlg has 711 controls across 4 pages. Information overload.

H9

Help users recognize/recover from errors

⚠️ Fair

Warning dialogs exist but error messages are terse. No suggestion of how to fix. No contextual help in dialogs.

H10

Help and documentation

❌ Broken

csv.hlp (WinHelp) non-functional on Win10+. Context help buttons call dead links. Manual is PDF-only (now also .md).

8.2 Complexity Metrics

Metric

Value

Assessment

Total data input fields

1,826 edit_box controls

Extremely high — rivals ERP systems

Max fields per dialog

615 (wc_dlg, 5 pages)

Very high — cognitive overload risk

Max dialog depth

3 levels (md_dlg → mp_dlg → wc_dlg)

Acceptable

Total unique dialogs

65

High — large learning curve

Clicks to create simple panel

~15 (menu → project → drawing → mp_dlg → OK)

Acceptable

Clicks for complex panel (all features)

~200+ across 20 sub-dialogs

Very high

Batch processing visibility

None (script recursion, no progress)

Poor

8.3 Error Probability Analysis

Based on human factors research, error rates increase with:

  • Number of data entry fields (Wickens & Hollands: ~0.3% per field)

  • Lack of visual feedback before committing

  • Similarity of adjacent controls (slot repetition)

Scenario

Fields

Est. Error Rate

Impact

Simple panel (dims only)

16

~5% (1 field wrong)

Geometry error, rework

Panel + 4 openings

76

~20% (1+ field wrong)

Subtraction errors

Panel + all features

2,237

~99% (likely errors)

Must review carefully

Weld connections (15)

615

~85% (1+ entry wrong)

Engineering safety concern

Wall lines (64 rows)

711

~89% (1+ entry wrong)

Site geometry errors

8.4 Improvement Opportunities (Modern GUI Principles)

Area

Current State

Recommended Improvement

Effort

Visual preview

None — panel drawn only after OK

Live 2D schematic preview in dialog

High

Input validation

Post-entry range check only

Real-time validation with visual indicators

Medium

Panel templates

Copy existing panel manually

Template library with thumbnail browser

Medium

Weld connections

5 pages, 615 controls

Table/grid interface with add/remove rows

High

Wall/slab definition

64-row fixed grid

Dynamic row count, add/remove as needed

High

Feature slots

Fixed N slots per type

Dynamic — add/remove features as needed

High

Undo

None within dialogs

Per-field undo stack, or dialog-level undo

Medium

Progress feedback

“Please Wait” only

Progress bar with panel count / time estimate

Low

Help system

Dead WinHelp

Embedded HTML help or tooltip-style help

Medium

Keyboard shortcuts

None in dialogs

Tab order + keyboard accelerators

Low

Data import

Manual entry only

CSV/Excel import for repetitive data

Medium

Preset management

None

Save/recall named preset configurations

Medium


9. Design FMEA (Failure Mode & Effects Analysis)

DFMEA Scope

Analyzing failure modes in the design of ConstructiVision’s user interface, data pipeline, and output generation. Severity (S), Occurrence (O), and Detection (D) are rated 1–10. RPN = S × O × D.

#

Component

Failure Mode

Effect on User

S

Cause

O

Current Controls

D

RPN

Recommended Action

1

edit_box (dimensional)

Wrong value entered (typo in ft-in)

Panel geometry wrong, physical panel defective if not caught

9

Manual data entry, 1826 fields, no visual preview

7

rangchck.lsp range validation

5

315

Add visual schematic preview; highlight changed values

2

wc_dlg (weld connections)

Wrong connection type selected

Incorrect hardware on panel, potential structural failure during tilt

10

popup_list with 15 identical slot patterns across 5 pages, cognitive overload

6

User review of printed drawing

6

360

Reduce to table/grid UI; add connection validation against structural rules

3

drawpan Boolean pipeline

Overlapping openings not detected

AutoCAD Boolean failure, corrupt solid, drawing unusable

8

No pre-check for opening intersections

4

AutoCAD error message (cryptic)

7

224

Pre-validate opening intersections before Boolean ops

4

btch.lsp script recursion

Error in one panel stops entire batch

Partial batch completion, user must identify failure point and restart

6

No try/catch in AutoLISP, script recursion pattern

5

No detection — user sees frozen AutoCAD

9

270

Add per-panel error logging; skip failed panels; report at end

5

engexp.lsp engineering export

Wrong face code (U vs D) assigned

Lift engineering receives incorrect data, brace placement error, tilt-up accident risk

10

Complex face-code logic, opposite-hand detection

3

Engineering firm reviews data independently

4

120

Add face-code validation pass; visual face-code overlay on panel drawing

6

makepan.lsp encrypted import

Decryption offset error

Corrupted panel data loaded silently

9

Fixed char-code subtraction, version-sensitive

2

Version check (“V3.60”)

5

90

Add checksum validation; deprecate char-code “encryption”

7

centgrav.lsp massprop parsing

AutoCAD output format changes

Incorrect center of gravity, pick points miscalculated, lift safety risk

10

Relies on exact text formatting of MASSPROP output

3

Manual visual check on drawing

6

180

Parse massprop with regex patterns; add sanity-check bounds

8

matl_dlg.lsp materials list

Block count misses inserted blocks

Inaccurate material quantities, cost estimating errors

7

Scans only layer “0” INSERT entities

4

User cross-checks with drawings

5

140

Scan all relevant layers; add quantity verification mode

9

convert.lsp version migration

Missing field in old format

Default values silently substituted

6

Version format changes, no field presence validation

4

Default values are industry-reasonable

3

72

Log converted fields; flag defaults vs. actual data

10

csv.hlp help system

Help file non-functional on Win10+

User cannot access contextual help or documentation

5

WinHelp viewer removed from Windows 10

10

None — completely broken

10

500

Convert csv.hlp to CHM or HTML; urgent priority

11

toggle (feature enable)

Feature left enabled with default 0 values

Zero-size geometry in panel, potential Boolean failure

7

Checkbox stays on but user didn’t enter values

5

No check for zero-value fields when enable is on

7

245

Validate: if toggle enabled, required fields must be non-zero

12

slide.lsp (slider control)

Slider snaps to integer, precision lost

Fractional dimensions rounded, panel geometry off

6

DCL slider resolution limited

4

edit_box shows actual value, user can correct

3

72

Document that edit_box is authoritative, slider is approximate

13

progcont routing missing from source

Menu sets variable that only VLX reads

In source-mode: all menu items route to same dialog (“Panel Options”). In VLX mode: works correctly — each progcont value produces a distinct dialog. VLX compiled from uncommitted source; source md_dlg.dcl is wrong dialog.

8

VLX compiled from uncommitted source; routing code + numeric-key md_dlg never checked into repo

10

VLX mode works; source-mode completely broken

3

240

Reconstruct progcont routing in csv.lsp; reverse-engineer numeric-key md_dlg from OCR evidence of working VLX dialogs

18

Panel/site auto-detection

Drawing misidentified as panel or site

Panel editor opens for site drawing (or vice versa); user cannot do site operations on misrouted drawing

7

Dictionary lookup with no user override; new-from-template uses crude filename match *site*

3

Experienced user would notice wrong dialog

5

105

Add explicit panel/site choice to project dialog; validate dictionary contents on load

14

cv.bat / cvplst.bat generation

Runtime batch file creation

Antivirus may quarantine or block execution

6

Writes .bat files to working directory at runtime

4

None — no alternative path

8

192

Replace with native AutoLISP directory listing (vl-directory-files)

15

panelvar XRecord overwrite

Cancel pressed after partial edits already saved

Some sub-dialog changes committed while others lost

7

okcanhlp pattern: each sub-dialog updvar is immediate

3

User aware of commit-per-dialog behavior

6

126

Implement transaction: buffer changes until top-level OK

16

Spanish language option

Incomplete translation

Mixed English/Spanish on drawings, unprofessional output

5

Manual admits “does not work very well at present”

2

Manual warns user

3

30

Either complete the translation or remove the option

17

btch_dlg panel selection

“Select All” selects damaged/incomplete panels

Batch processes panels that will fail

5

No validation of panel health before batch start

4

Individual panel errors may crash batch

7

140

Pre-validate panel data before batch processing; report unloadable panels

19

AutoCAD profile/registry

Menu registration missing from profile

CV menu not visible; csv; command fails with “setvars Function cancelled” when menu-dependent code paths execute

8

Profile migration, registry corruption, incomplete install, or VM cloning without full config

3

None — silent failure until menu item invoked

7

168

Add menu registration check to Configure-ConstructiVision.ps1; validate on startup; add recovery path

20

Startup Suite / VLX loading

VLX crash during Startup Suite load

AutoCAD crashes with 0xC0000005 at LocalizeReservedPlotStyleStrings+533; CSV command unknown

9

Startup Suite loads VLX before printer/plot subsystem is fully initialized; incomplete installation environment

3

None — crashes silently on startup

8

216

Defer VLX loading via acaddoc.lsp; investigate printer/plot config dependency; add to deployment script

21

Project Settings / registry

Project path not registered

File Open dialog cannot navigate to project drawing subdirectories; user cannot open sample/project drawings from CV dialogs

7

Manual/incomplete installation skips registry key creation for Project Settings\CV\RefSearchPath

3

None — user must navigate manually

6

126

Add RefSearchPath registration to Configure-ConstructiVision.ps1; validate project paths on startup

DFMEA Summary

RPN Range

Count

Action Level

300–500

3

Immediate — redesign required (Help system, weld connections, dimensional entry)

200–299

5

High — design improvement recommended (batch error handling, Boolean validation, feature toggles, VLX crash, progcont routing)

100–199

7

Medium — improvement desired (centgrav parsing, materials, .bat generation, panel selection, XRecord, panel/site detection, project paths)

<100

4

Low — monitor or document (convert, slider, encryption, translation)

Top 3 risks by RPN:

  1. RPN 500 — csv.hlp Help system — completely non-functional, affects all users

  2. RPN 360 — Weld connection data entry — cognitive overload + safety-critical output

  3. RPN 315 — Dimensional data entry — high error probability with no visual preview



11. Cross-References


Appendix A: Complete Call Graph

[AutoCAD Launch]
└── csvmenu.lsp → csv.mnu / csv.cui

[Menu Click] → csv;
└── c:csv (csv.lsp)
    ├── setvars → 60 sysvars
    ├── pj_name → project path
    ├── Load 93 modules
    └── Route:
        ├── md_dlg (Panel Options hub)
        │   ├── New/Edit Panel → panel.lsp
        │   │   ├── mp_dlg.lsp (Main Panel dialog)
        │   │   │   ├── panatt.lsp → convert.lsp
        │   │   │   ├── ro_dlg → wd_dlg → dr_dlg → dl_dlg
        │   │   │   ├── sb_dlg → rb_dlg → nb_dlg
        │   │   │   ├── fh_dlg → fv_dlg → fs_dlg → ts_dlg → ss_dlg
        │   │   │   ├── ch_dlg → pl_dlg → ll_dlg
        │   │   │   ├── tp_dlg → lb_dlg
        │   │   │   ├── sd_dlg → pp_dlg → bp_dlg
        │   │   │   └── wc_dlg (5 pages) → wc_edit
        │   │   │       └── All handled by okcanhlp.lsp
        │   │   ├── Save panelvar → XRecord
        │   │   └── drawpan.lsp
        │   │       ├── opening.lsp (per opening type)
        │   │       ├── rndblock.lsp (round blockouts)
        │   │       ├── feature.lsp (reveal strips)
        │   │       ├── green.lsp (greenplate/ledger)
        │   │       ├── weldconn.lsp (connection blocks)
        │   │       ├── chamfer.lsp, miter.lsp, thick.lsp
        │   │       ├── dowels.lsp (slab dowels)
        │   │       ├── 3D Boolean: UNION adds + SUBTRACT voids
        │   │       └── finpan.lsp
        │   │           ├── centgrav.lsp (center of gravity)
        │   │           ├── pick.lsp, ppcent.lsp (pick points)
        │   │           ├── brace.lsp (brace points)
        │   │           ├── drawdim.lsp ×5 (dimension chains)
        │   │           │   └── basedim.lsp, drawdimlst.lsp
        │   │           ├── TITLE + BORDER block insert
        │   │           └── Save .dwg → plt.lsp (optional print)
        │   ├── Batch Utilities → btch_dlg.lsp
        │   │   └── btch.lsp (script recursion loop)
        │   ├── Materials List → matl_dlg.lsp → matlist.txt
        │   ├── Revision History → revision.lsp
        │   ├── View/Print → lyr_dlg.lsp / plt.lsp
        │   └── Slope Calculator → calc_dlg.lsp
        ├── sdwg_dlg (Site Options hub)
        │   ├── grid_dlg.lsp (grid lines)
        │   ├── wall_dlg.lsp (wall lines, 4 pages)
        │   ├── slab_dlg.lsp (slab edges, 4 pages)
        │   ├── tiltup.lsp (attach/detach panels)
        │   ├── layout.lsp (construction layout)
        │   └── green.lsp (footing/joist connections)
        └── External I/O
            ├── engexp.lsp → dreng/mbeng/wsbeng (export)
            └── engimp.lsp / makepan.lsp (import)

Appendix B: DCL Control Count by Dialog

Dialog

edit_box

popup

toggle

radio

slider

button

Total

wc_dlg

90

30

210

180

90

15

615

wall_dlg

448

256

0

0

0

7

711

slab_dlg

385

256

0

0

0

7

648

fh_dlg

114

38

133

76

114

5

480

fv_dlg

76

38

95

76

76

5

366

grid_dlg

208

1

4

12

0

6

231

wd_dlg

60

0

60

24

60

3

207

nb_dlg

48

0

18

42

48

1

157

sb_dlg

24

0

30

24

24

1

103

lb_dlg

28

12

8

8

28

1

85

ro_dlg

16

0

12

16

16

1

61

dr_dlg

16

0

8

16

16

1

57

rb_dlg

18

0

6

12

18

1

55

mp_dlg

16

2

20

0

10

1

49

dl_dlg

18

0

6

6

18

1

49

site_dlg

2

0

11

0

0

29

42

pp_dlg

8

0

9

16

8

1

42

ll_dlg

15

0

3

6

15

1

40

bp_dlg

8

0

5

12

8

1

34

pl_dlg

12

0

3

6

12

1

34

lyr_dlg

0

0

31

0

0

0

31

ch_dlg

0

0

5

24

0

1

30

revision

30

0

0

0

0

0

30

sd_dlg

12

0

3

0

12

1

28

calc_dlg

15

0

0

0

9

3

27

dreng_dlg

15

2

0

8

0

0

25

wsbeng_dlg

15

2

0

8

0

0

25

mbeng_dlg

13

2

0

8

0

0

23

btch_dlg

0

3

10

8

0

1

22

md_dlg

0

0

0

0

0

19

19

ss_dlg

6

0

2

4

6

1

19

ts_dlg

4

0

2

4

4

1

15

fs_dlg

4

0

2

4

4

1

15

wc_edit

8

0

0

0

3

4

15

tp_dlg

3

3

1

2

3

1

13

viewpt

0

0

0

0

0

10

10

sdwg_dlg

0

0

0

0

0

7

7

dwg

0

0

0

0

0

4

4

project

0

0

0

0

0

4

4

warning

0

0

0

0

0

3

3

new

2

0

0

0

0

0

2

process

0

0

0

0

0

1

1

invar

1

0

0

0

0

0

1

matl_dlg

0

0

0

0

0

0

0

TOTAL

1,826

645

721

622

~1,750

172

~5,736