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:
Panel shop drawings — 3D solid models of individual concrete wall panels with openings, blockouts, reveals, chamfers, hardware, and dimensioning
Site drawings — plan-view layouts showing panel placement on building footprints with grid lines, wall lines, slab edges, and footing connections
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
Materials lists — quantity take-offs for concrete, form material, hardware, chamfer, reveal strip, and connections
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.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:
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 toprogcontbitmasks.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.VLX’s compiled
c:csvreadsprogcontand routes to different dialogs per value. The sourcecsv.lspnever readsprogcont— it usespnlandldvariables 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:
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.
Drawing type choice dialog added: New file
dwgtype.dclwith helper functioncsv_ask_dwgtypein 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
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 |
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 |
BRK-03 |
csv.GID index |
❌ Orphaned |
Global index for csv.hlp — useless without WinHelp runtime. |
BRK-04 |
|
⚠️ Source-mode broken |
Every menu item sets |
BRK-05 |
Source md_dlg ≠ VLX md_dlg |
⚠️ Missing source |
The VLX’s embedded |
BRK-06 |
Panel/site auto-detection is fragile |
✅ Fixed |
|
7.2 Naming / Documentation Discrepancies¶
# |
Issue |
Detail |
|---|---|---|
DIS-01 |
“Roof Line” vs “Rough Opening” |
Manual section “Roof Line” refers to |
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 |
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 |
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 |
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; |
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 |
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 |
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:
RPN 500 — csv.hlp Help system — completely non-functional, affects all users
RPN 360 — Weld connection data entry — cognitive overload + safety-critical output
RPN 315 — Dimensional data entry — high error probability with no visual preview
10. Recommended Modernization Priorities¶
Based on the workflow analysis, human factors evaluation, and DFMEA:
Immediate Priority (Before Distribution)¶
Convert csv.hlp to CHM or HTML help (RPN 500) – 45 topics identified in csv.hlp → convert to searchable help – Wire help buttons to new format – Effort: ~2 weeks
Remove pcAnywhere references (BRK-01) – Delete remote support menu item and documentation – Effort: ~2 hours
Reconstruct progcont routing for source-mode (BRK-04/05, RPN 240 — upgraded from 70) – ✅ Partial: Menu renamed “Program Options” → “Drawing Setup”; drawing type auto-detection replaced with explicit user choice dialog (dwgtype.dcl) when type cannot be determined – Discovery (Mar 1, 2026):
progcontis NOT dead code — it works in VLX mode. The VLX was compiled from source never committed to the repo. The VLX’smd_dlg.dclis a different dialog (“Program Options” with numeric keys) than the sourcemd_dlg.dcl(“Panel Options” with string keys). OCR from VM 102 confirms each progcont value produces a distinct dialog. – Remaining: Reverse-engineer or rewrite the progcont routing incsv.lspand the numeric-keymd_dlg.dcl/md_dlg.lspbased on OCR evidence andcsv.mnubitmask definitions – Effort: ~3–5 days (significant reverse-engineering)Replace cv.bat/cvplst.bat with native LISP (RPN 192) – Use
(vl-directory-files)instead of DIR command – Eliminates antivirus concerns – Effort: ~4 hours
High Priority (v11.1 Release)¶
Add progress feedback to batch processing (H1) – Add panel counter; display N of M during batch operations – Effort: ~1 day
Add per-panel error handling in batch (RPN 270) – Wrap panel processing in error handler, skip failed, log report – Effort: ~2 days
Validate enabled-but-empty features (RPN 245) – Check: if toggle is on, required dimension fields must be non-zero – Effort: ~2 days
Update manual content (DIS-01 through DIS-06) – Correct all naming inconsistencies, addresses, version numbers – Now maintainable in csv-manual.md – Effort: ~1 day
Future Modernization (v12+)¶
Visual preview in panel dialog (H6, RPN 315)
Table/grid UI for weld connections (RPN 360)
Dynamic feature slots (replace fixed N-slot pattern)
Opening intersection pre-validation (RPN 224)
Transaction-based dialog commits (RPN 126)
Template library with thumbnails
11. Cross-References¶
ConstructiVision User Manual — Converted user manual (source of truth for documented behavior)
Menu System Architecture — Menu loading and MENUGROUP analysis
AutoLISP Compilation Architecture — VLX compilation and module bundling
File Types Dictionary — File extension reference
30 — AutoCAD Evolution Analysis: Version-by-Version Impact on ConstructiVision — AutoCAD version compatibility analysis
Target Architecture (Modern Windows + Modern AutoCAD) — Target architecture for modernization
Testing & Validation Strategy — Testing framework and validation plan
Risk Register (2026) — Project risk register (supplement with DFMEA findings)
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 |