ConstructiVision v11 Architecture Documentation¶
Purpose: This document maps the complete architecture of ConstructiVision v11 for the PB11-00x32 (32-bit AutoCAD 2000) platform. Every clickable path is traced from the menu through every dialog, sub-dialog, and sub-sub-dialog to the final leaf action.
Source Location: src/PB11-00x32/
Last Updated: February 16, 2026
Table of Contents¶
System Overview¶
Technology Stack¶
Platform: AutoCAD 2000 (32-bit)
Language: AutoLISP with DCL (Dialog Control Language)
Compiled Format: CSV.VLX (Visual LISP eXecutable) — contains
csvregandcsvtechas compiled-only functions with no sourceMain Entry Point:
c:csvfunction in csv.lsp (loaded via csv.vlx)Menu System: csv.mnu compiled to csv.mns / csv.mnr / csv.mnc / csv.cui
Physical File Inventory¶
Type |
Count |
Notes |
|---|---|---|
LISP source (.lsp) |
~81 |
93 listed in csvlst; 12 missing (see §21) |
DCL dialogs (.dcl) |
26 |
Some contain multiple dialog definitions |
Menu files |
5 |
csv.mnu, csv.mns, csv.mnr, csv.mnc, csv.cui |
Compiled VLX |
1 |
CSV.VLX — compiled application bundle |
Compiled ARX |
1 |
CSV.ARX — ObjectARX extension |
Help file |
1 |
CSV.Hlp — Windows Help |
PDF manual |
1 |
CSV Manual.pdf |
Maximum Dialog Depth¶
The deepest user-interaction path in the system is 6 levels from menu click:
Menu → csv → site_dlg → sdwg_dlg → grid_dlg → num_dlg → insgrid_dlg
The calculator (calc_dlg) is available at nearly every level as a pop-up, making some logical paths 7 levels deep.
Module Load List (csvlst — 93 modules)¶
Defined in csv.lsp lines 130–139. All 93 are loaded via (foreach a csvlst (load a)) at startup. Of these, 12 have no source file on disk (see §21).
A — Program Options¶
Menu: Program Options
ID: ID_CSVRUN
progcont: 1
Action: Loads csv.vlx → calls csv
This is the primary entry point. The csv function (csv.lsp, 281 lines) initializes the system and routes to the appropriate hub dialog.
A — Entry Flow (csv.lsp)¶
Set 30+ AutoCAD system variables (
cmdecho,blipmode,osmode, etc.)Load all 93 modules from
csvlst(or callvl-acad-defunif ARX is loaded)Set
curdirfrom current drawing directoryRouting decision:
No drawing open (Drawing.dwg or acad directory) → Project Dialog (A.1)
panel_listexists in namedobjdict → Panel Options Dialog (A.2)site_listexists in namedobjdict → Site Options Dialog (A.3)Neither → Panel Options Dialog (A.2) as default
Important: The progcont value is set by each menu item but is never checked in the source code. All five menu items (A–E) that call csv pass through the same routing logic regardless of their progcont value.
A.1 — Project Dialog¶
DCL: project.dcl → dialog "project"
Title: “ConstructiVision – Project Options”
Button |
Key |
Action |
Depth |
|---|---|---|---|
New Project |
|
→ A.1.1 New Project Dialog |
+1 |
Existing Project |
|
→ File browser ( |
leaf |
Cancel |
|
Sets |
leaf |
Help |
|
Opens csv.hlp “Project” |
leaf |
A.1.1 — New Project Dialog¶
DCL: new.dcl → dialog "new"
Title: “ConstructiVision – New Project”
Source: new.lsp (32 lines)
Field |
Key |
Type |
Size |
Purpose |
|---|---|---|---|---|
Project Name |
|
edit_box |
32 chars |
Name of project |
Directory |
|
edit_box |
40 wide |
Auto-populated from parent dir |
Button |
Key |
Action |
|---|---|---|
OK |
|
Creates directory via shell ( |
Cancel |
|
Aborts |
Help |
|
Opens csv.hlp “New_Project” |
After A.1 completes → returns to routing → opens A.2 (Panel Options) or A.3 (Site Options).
A.2 — Panel Options Dialog¶
DCL: md_dlg.dcl → dialog "md_dlg" (182 lines)
Title: “ConstructiVision – Panel Options”
Source: md_dlg.lsp (217 lines)
This is the central hub for all panel operations. Contains 18 action buttons plus OK, Cancel, Help, and Calc.
State sensitivity: When no drawing is loaded (olddwg=nil), buttons A.2.3 through A.2.18 are disabled — only Create/Edit and OK/Cancel/Help/Calc are active.
# |
Button Label |
Key |
Action |
See |
|---|---|---|---|---|
A.2.1 |
Create New Panel |
|
→ Drawing Options → Panel Properties |
§A.2.1 |
A.2.2 |
Edit Existing Panel |
|
→ Drawing Options → Panel Properties |
§A.2.2 |
A.2.3 |
View All Layers |
|
Layer commands + |
§A.2.3 |
A.2.4 |
Print All Layers |
|
Layer commands + |
§A.2.4 |
A.2.5 |
View Greenplate |
|
Layer subset + |
§A.2.5 |
A.2.6 |
Print Greenplate |
|
Layer subset + |
§A.2.6 |
A.2.7 |
View Connections |
|
Layer subset + |
§A.2.7 |
A.2.8 |
Print Connections |
|
Layer subset + |
§A.2.8 |
A.2.9 |
View Pick/Brace Points |
|
Layer subset + |
§A.2.9 |
A.2.10 |
Print Pick/Brace Points |
|
Layer subset + |
§A.2.10 |
A.2.11 |
View Feature Strip |
|
Layer subset + |
§A.2.11 |
A.2.12 |
Print Feature Strip |
|
Layer subset + |
§A.2.12 |
A.2.13 |
View Perimeter |
|
Layer subset + |
§A.2.13 |
A.2.14 |
Print Perimeter |
|
Layer subset + |
§A.2.14 |
A.2.15 |
View Solid |
|
Layer subset + |
§A.2.15 |
A.2.16 |
Print Solid |
|
Layer subset + |
§A.2.16 |
A.2.17 |
Site Options |
|
→ A.3 Site Options Dialog |
§A.3 |
A.2.18 |
Batch Utilities |
|
→ A.4 Batch Utilities Dialog |
§A.4 |
— |
Calc |
|
→ calc_dlg (shared) |
§20 |
— |
OK |
|
Closes dialog, returns |
leaf |
— |
Cancel |
|
Aborts |
leaf |
— |
Help |
|
Opens csv.hlp “Panel_Options” |
leaf |
A.2.1 — Create New Panel¶
If no drawing loaded → opens Drawing Options (
dwg.dcl):“This Drawing” → uses current drawing
“Another Drawing” → file browser
“Cancel” → abort
Calls
dwgnew(dwgnew.lsp, 31 lines) — security check, template setupSets
ld="pt", dialog closesAfter dialog: calls
panel()→ A.2.1.x Panel Properties
A.2.2 — Edit Existing Panel¶
If no drawing loaded → file browser (
getfiled)If drawing loaded → opens Drawing Options (
dwg.dcl)Calls
dwgold(dwgold.lsp, 35 lines) — validates panel_list in namedobjdictSets
ld="pt", dialog closesAfter dialog: calls
panel()→ A.2.1.x Panel Properties
A.2.1.x — Panel Properties Dialog (mp_dlg)¶
DCL: mp_dlg.dcl → dialog "mp_dlg" (436 lines of DCL)
Title: “ConstructiVision – Where the Future is Now!”
Source: mp_dlg.lsp (150 lines)
This is the most complex single dialog in the system. It collects all panel parameters and contains 20 feature toggles, each of which opens its own sub-dialog.
Project Details Section¶
Field |
Key |
Type |
Size |
Purpose |
|---|---|---|---|---|
Version |
|
edit_box |
disabled |
Version number (read-only) |
Project Name |
|
edit_box |
disabled |
Auto-populated (read-only) |
Location |
|
edit_box |
18 chars |
Project location |
Contractor |
|
edit_box |
16 chars |
Contractor name |
Drawing Details Section¶
Field |
Key |
Type |
Size/Options |
Purpose |
|---|---|---|---|---|
Panel Number |
|
edit_box |
4 chars |
Validates uniqueness |
Scale Factor |
|
popup_list |
Inches per foot |
Drawing scale |
Viewed From |
|
popup_list |
Interior/Exterior |
View direction |
Drawn By |
|
edit_box |
6 chars |
Drafter initials |
Panel Dimensions Section (all with slider controls)¶
Field |
Key |
Slider |
Range |
Purpose |
|---|---|---|---|---|
Thickness |
|
|
24–96 |
Panel thickness |
Width |
|
|
384–4800 |
Panel width |
Bottom Elevation |
|
|
-960–2880 |
Bottom elevation |
Miter Left |
|
|
-270–270 |
Left miter angle |
Miter Right |
|
|
-270–270 |
Right miter angle |
Top Left |
|
|
384–4800 |
Top left height |
Top Right |
|
|
384–4800 |
Top right height |
Top Peak Elevation |
|
|
0–4800 |
Peak height (0 = no peak) |
Top Peak Distance |
|
|
0–4800 |
Peak distance from left |
Arch Radius |
|
|
0–9600 |
Arch radius (0 = no arch) |
Panel Details — 20 Feature Toggles¶
Each toggle, when checked (value "1"), opens a sub-dialog for that feature. The naming convention is: key "mpXX" → calls function XX_dlg. All 18 existing sub-dialogs are leaf nodes — they do not open further sub-dialogs (except the shared Calc button).
# |
Feature |
Toggle Key |
Sub-Dialog Function |
DCL File |
Status |
|---|---|---|---|---|---|
1 |
Rough Opening |
|
|
ro_dlg.dcl |
✅ Works |
2 |
Square Blockout |
|
|
sb_dlg.dcl |
✅ Works |
3 |
Spandrel Seat |
|
|
ss_dlg.dcl |
✅ Works |
4 |
Top Plate |
|
|
tp_dlg.dcl |
✅ Works |
5 |
Pick Points |
|
|
pp_dlg.dcl |
✅ Works |
6 |
Standard Opening |
|
|
— |
⚠️ MISSING — crashes |
7 |
Round Blockout |
|
|
rb_dlg.dcl |
✅ Works |
8 |
Pilaster |
|
|
pl_dlg.dcl |
✅ Works |
9 |
Ledger |
|
|
lb_dlg.dcl |
✅ Works |
10 |
Brace Points |
|
|
bp_dlg.dcl |
✅ Works |
11 |
Man Door |
|
|
dr_dlg.dcl |
✅ Works |
12 |
Footing Step |
|
|
fs_dlg.dcl |
✅ Works |
13 |
Lintel |
|
|
ll_dlg.dcl |
✅ Works |
14 |
Slab Dowels |
|
|
sd_dlg.dcl |
✅ Works |
15 |
Feature Strip (H) |
|
|
fh_dlg.dcl (67KB) |
✅ Works |
16 |
Dock Leveler |
|
|
dl_dlg.dcl |
✅ Works |
17 |
Top Step |
|
|
ts_dlg.dcl |
✅ Works |
18 |
Chamfer |
|
|
ch_dlg.dcl |
✅ Works |
19 |
Weld Connections |
|
|
— |
⚠️ MISSING — crashes |
20 |
Feature Strip (V) |
|
|
fv_dlg.dcl (51KB) |
✅ Works |
Sub-Dialog Detail: ro_dlg (Rough Opening — representative example)¶
DCL: ro_dlg.dcl
Source: ro_dlg.lsp (89 lines)
Supports up to 4 rough openings per panel. Per opening:
Field |
Purpose |
|---|---|
Width |
Opening width |
Height |
Opening height |
Horizontal Position |
Distance from panel left edge |
Vertical Position |
Distance from panel bottom |
Type |
Dropdown: Window / Door / Louver / etc. |
Buttons: OK, Cancel, Help (“Rough_Opening”), Calc → calc_dlg
After OK in mp_dlg (Panel Generation Pipeline)¶
mp_dlg OK → updvar (store variables to xrecord)
→ drawpan (342 lines — generates panel geometry)
→ drawdim (89KB — dimensioning engine, largest file)
→ mkblk (38KB — title block generation)
→ finpan (finalize + revision prompt)
None of these post-dialog steps have user-visible dialogs (they draw directly in AutoCAD).
A.2.3 — View All Layers¶
layer t * u * on * s custom ;;
zoom a
Thaws, unlocks, turns on all layers, sets “custom” current. Leaf action.
A.2.4 — Print All Layers¶
Same layer setup as A.2.3 → calls plt function (plt.lsp, 22 lines) → AutoCAD plot command. Leaf action.
A.2.5 — View Greenplate¶
layer t * u * off * on 0,solid,solid_dim,perimeter,perimeter_dim,greenplate,greenplate_dim,hardware s custom ;;
zoom a
A.2.6 — Print Greenplate¶
Same layer setup as A.2.5 → plt. Leaf action.
A.2.7 — View Connections¶
layer t * u * off * on 0,solid,solid_dim,perimeter,perimeter_dim,connections,connections_dim s custom ;;
zoom a
A.2.8 — Print Connections¶
Same layer setup as A.2.7 → plt. Leaf action.
A.2.9 — View Pick/Brace Points¶
layer t * u * off * on 0,solid,solid_dim,perimeter,perimeter_dim,points,points_dim s custom ;;
zoom a
A.2.10 — Print Pick/Brace Points¶
Same layer setup as A.2.9 → plt. Leaf action.
A.2.11 — View Feature Strip¶
layer t * u * off * on 0,solid,solid_dim,perimeter,perimeter_dim,feature,feature_dim s custom ;;
zoom a
A.2.12 — Print Feature Strip¶
Same layer setup as A.2.11 → plt. Leaf action.
A.2.13 — View Perimeter¶
layer t * u * off * on 0,solid_dim,solid,perimeter,perimeter_dim s custom ;;
zoom a
A.2.14 — Print Perimeter¶
Same layer setup as A.2.13 → plt. Leaf action.
A.2.15 — View Solid¶
layer u * off * t solid,solid_dim,feature,points,greenplate,connections on solid,solid_dim,feature,points,greenplate,connections s solid ;;
zoom a
A.2.16 — Print Solid¶
Same layer setup as A.2.15 → plt. Leaf action.
A.2.17 — Site Options¶
Sets ld="st", closes md_dlg → routes to A.3 Site Options Dialog.
A.2.18 — Batch Utilities¶
Opens A.4 Batch Utilities Dialog directly from within md_dlg.
A.3 — Site Options Dialog¶
DCL: site_dlg.dcl → dialog "site_dlg" (site_dlg.dcl contains 5 dialog definitions total)
Title: “ConstructiVision – Site Options”
Source: site_dlg.lsp (178 lines)
State sensitivity: When no site drawing is loaded (filename doesn’t contain “site”), buttons A.3.3 through A.3.14 are disabled.
# |
Button Label |
Key |
Action |
See |
|---|---|---|---|---|
A.3.1 |
Create New Site Drawing |
|
Template selection → dwgnew → sdwg_dlg |
§A.3.1 |
A.3.2 |
Edit Existing Site Drawing |
|
File browser → dwgold → sdwg_dlg |
§A.3.2 |
A.3.3 |
Attach Panels |
|
→ |
§A.3.3 |
A.3.4 |
Detach Panels |
|
→ |
leaf |
A.3.5 |
Tilt-up Panels |
|
→ |
leaf |
A.3.6 |
Layout Panels |
|
→ |
§A.3.6 |
A.3.7 |
Print Materials List |
|
→ |
§A.5 |
A.3.8 |
Save Layout |
|
→ |
leaf |
A.3.9 |
View All Layers |
|
Layer commands + |
leaf |
A.3.10 |
Print All Layers |
|
Layer commands + |
leaf |
A.3.11 |
View Selected Layers |
|
Reads layer toggles from dialog → layer cmds |
leaf |
A.3.12 |
Print Selected Layers |
|
Layer commands + |
leaf |
A.3.13 |
Change 3D Viewpoint |
|
→ Viewpoint Dialog (viewpt) |
§A.3.13 |
A.3.14 |
Render |
|
STUB — shows alert “not available” |
leaf |
— |
Calc |
|
→ calc_dlg |
§20 |
— |
OK |
|
Closes dialog |
leaf |
— |
Cancel |
|
Aborts |
leaf |
— |
Help |
|
Opens csv.hlp “Site_Options” |
leaf |
A.3.1 — Create New Site Drawing¶
Opens Drawing Options (dwg.dcl) — “This Drawing” / “Another Drawing” / Cancel
Calls
dwgnew→ setsld="st"After dialog close: calls
sdwg_dlg→ A.3.x Site Drawing Options
A.3.2 — Edit Existing Site Drawing¶
File browser or Drawing Options dialog
Calls
dwgold→ validatessite_listin namedobjdict → setsld="st"After dialog close: calls
sdwg_dlg→ A.3.x Site Drawing Options
A.3.3 — Attach Panels¶
Opens invar dialog (“enter gap dimension”)
Calls
inspanel(inspanel.lsp, 165 lines)Reads wall lines from site drawing → matches panel numbers → inserts panels as xrefs → creates tiltlist.txt
A.3.6 — Layout Panels¶
Opens invar dialog (“enter rotation angle”)
Calls
layout(layout.lsp, 166 lines) — rotates panel blocks for tilt-upCalls
savelay— writes positions to conslist.txt
A.3.13 — Viewpoint Dialog¶
DCL: site_dlg.dcl contains dialog "viewpt"
Title: “ConstructiVision – 3D Viewpoint”
Button |
Key |
Viewpoint Command |
|---|---|---|
Top |
|
|
Left |
|
|
Right |
|
|
Front |
|
|
Back |
|
|
SE Isometric |
|
|
SW Isometric |
|
|
NE Isometric |
|
|
NW Isometric |
|
|
Cancel |
|
Aborts |
All buttons are leaf actions.
A.3.x — Site Drawing Options Dialog (sdwg_dlg)¶
DCL: sdwg_dlg.dcl → dialog "sdwg_dlg"
Title: “ConstructiVision – Site Drawing Options”
Source: sdwg_dlg.lsp (58 lines)
# |
Button Label |
Key |
Action |
Status |
|---|---|---|---|---|
A.3.x.1 |
Grid Lines |
|
→ Grid Dialog (A.3.x.1) |
✅ Active |
A.3.x.2 |
Wall Line |
|
→ |
⚠️ SOURCE MISSING |
A.3.x.3 |
Slab on Grade |
|
→ Slab Dialog (A.3.x.3) |
✅ Active |
A.3.x.4 |
Footings |
|
→ |
STUB (disabled via |
A.3.x.5 |
Column Pads |
|
→ |
STUB (disabled via |
A.3.x.6 |
Weld Connections |
|
→ |
⚠️ SOURCE MISSING (disabled) |
— |
Calc |
|
→ calc_dlg |
✅ Active |
A.3.x.1 — Grid Dialog (grid_dlg)¶
DCL: grid_dlg.dcl — 987 lines, contains 4 dialog definitions
Source: grid_dlg.lsp (356 lines)
Main dialog — “ConstructiVision – Gridline Details”:
Section |
Fields |
|---|---|
Horizontal Axis |
Letters Horizontal ( |
Horizontal Direction |
Ascending L→R ( |
Vertical Axis |
Numbers Vertical ( |
Vertical Direction |
Ascending B→T ( |
Button |
Action |
Depth from grid_dlg |
|---|---|---|
Define Number Grids |
→ Numbered Grids Dialog (num_dlg) |
+1 |
Define Letter Grids |
→ Lettered Grids Dialog (let_dlg) |
+1 |
OK |
Saves to xrecord → calls |
leaf |
Cancel |
Aborts |
leaf |
Calc |
→ calc_dlg |
+1 |
Numbered Grids Dialog (num_dlg)¶
DCL: Inside grid_dlg.dcl → dialog "num_dlg"
Source: num_dlg.lsp (22 lines — wrapper that calls grid_dlg.lsp functions)
Field |
Key |
Purpose |
|---|---|---|
Insert Grid toggle |
|
When checked → opens Insert Grid Dialog (insgrid_dlg) |
Preset Grids toggle |
|
When checked → auto-fills evenly spaced grids |
First Grid Number |
|
Starting number |
Last Grid Number |
|
Ending number |
Default Spacing |
|
Default distance between grids |
Between / Reference |
|
Radio — dimension display mode |
Grid ID 1–50 |
|
50 edit boxes for grid labels |
Distance 1–50 |
|
50 edit boxes for distances |
Button |
Action |
|---|---|
OK |
Returns to grid_dlg |
Cancel |
Aborts |
Calc |
→ calc_dlg |
Lettered Grids Dialog (let_dlg)¶
DCL: Inside grid_dlg.dcl → dialog "let_dlg"
Source: let_dlg.lsp (28 lines — wrapper)
Same structure as num_dlg but defaults A–Z. Keys: ltn1–ltn50 / ltd1–ltd50.
Insert Grid Dialog (insgrid_dlg)¶
DCL: Inside grid_dlg.dcl → dialog "insgrid_dlg"
Field |
Key |
Type |
Purpose |
|---|---|---|---|
Insert After Grid |
|
popup_list |
Which existing grid to insert after |
New Grid ID |
|
edit_box |
Label for the new grid |
Distance |
|
edit_box |
Distance from the reference grid |
Button |
Action |
|---|---|
OK |
Inserts row into grid list, returns to num_dlg/let_dlg |
Cancel |
Aborts |
Calc |
→ calc_dlg |
Full depth path through grid system:
sdwg_dlg → grid_dlg → num_dlg → insgrid_dlg → calc_dlg
→ let_dlg → insgrid_dlg → calc_dlg
A.3.x.3 — Slab Dialog (slab_dlg)¶
DCL: slab_dlg.dcl — 897 lines, contains 4 dialog definitions (slab_dlg, page2, page3, page4)
Source: slab_dlg.lsp (163 lines)
Prerequisite: Requires >20 gridlines defined, otherwise shows alert “Grids must be defined before Slab Line can be drawn”
4 pages, each displaying 16 slab/wall line segments = 64 total segments.
Per segment (10 fields × 64 = 640 total input fields):
Field |
Key Pattern |
Type |
Purpose |
|---|---|---|---|
Begin X Grid |
|
popup_list |
Beginning X gridline |
Begin X Offset |
|
edit_box |
Offset from X grid |
Begin Y Grid |
|
popup_list |
Beginning Y gridline |
Begin Y Offset |
|
edit_box |
Offset from Y grid |
Begin Elevation |
|
edit_box |
Elevation at begin point |
End X Grid |
|
popup_list |
End X gridline |
End X Offset |
|
edit_box |
Offset from X grid |
End Y Grid |
|
popup_list |
End Y gridline |
End Y Offset |
|
edit_box |
Offset from Y grid |
End Elevation |
|
edit_box |
Elevation at end point |
Additional field on Page 1: Slab Thickness (slx1).
Button |
Action |
|---|---|
Page 2 / Page 3 / Page 4 |
Navigates to sibling dialog pages (saves data, opens next) |
OK |
Saves to xrecord → calls |
Cancel |
Aborts |
Calc |
→ calc_dlg |
Note: Although Page 1 is titled “Slab Details”, Pages 2–4 are titled “Wall Line Details”. Wall functionality has been merged into the slab dialog — which is why wall_dlg.lsp doesn’t exist.
A.4 — Batch Utilities Dialog¶
DCL: btch_dlg.dcl → dialog "btch_dlg"
Source: btch_dlg.lsp (165 lines)
Section |
Fields |
|---|---|
Selection |
All Panels ( |
Plot Mode |
None ( |
Processing |
New ( |
Layer Toggles |
Layer toggles (checkboxes):
Toggle |
Key |
Layer |
|---|---|---|
Exports |
|
Enable export |
All Elements |
|
Master toggle (all layers) |
Connections |
|
connections layer |
Custom |
|
custom layer |
Feature Strip |
|
feature layer |
Greenplate |
|
greenplate layer |
Hardware |
|
hardware layer |
Perimeter (Title Block) |
|
perimeter layer |
Openings |
|
openings layer |
Solid |
|
solid layer |
Button |
Action |
|---|---|
OK |
→ |
Cancel |
Aborts |
Help |
Opens csv.hlp “Batch” |
After OK: btch builds a script file that opens each panel drawing sequentially, runs the panel generation pipeline (panel → mp_dlg → drawpan → drawdim → mkblk → finpan), and optionally plots. Completely automated — no further user interaction.
A.5 — Materials List Dialog (matl_dlg)¶
DCL: matl_dlg.dcl
Source: matl_dlg.lsp (336 lines)
This is a progress display dialog (not user input). Shows processing status:
Field |
Key |
Content |
|---|---|---|
Message 1 |
|
“Examining Panels” |
Message 2 |
|
Total panel count |
Message 3 |
|
Current panel number |
Message 4 |
|
Status message |
Processing logic: Iterates all blocks in the site drawing → for each panel block, counts materials (reveals, chamfers, braces, J-bolts, weld connections, cubic yards of concrete) → reads wcl.txt for weld connection definitions → writes formatted report to matlist.txt → sends to printer.
B — Create New Project¶
Menu: Create New Project
ID: ID_CSV8
progcont: 262153
Action: Loads csv.vlx → calls csv
Identical routing to A. The csv function does not check progcont. It enters the same decision tree:
No drawing → Project Dialog (A.1) → New Project (A.1.1)
Panel drawing → Panel Options (A.2)
Site drawing → Site Options (A.3)
All sub-dialogs are shared with A. See §A for complete dialog trees.
C — Create New Drawing¶
Menu: Create New Drawing
ID: ID_CSV16
progcont: 262161
Action: Loads csv.vlx → calls csv
Identical routing to A and B. Same dialog trees apply. See §A.
D — Edit Existing Drawing¶
Menu: Edit Existing Drawing
ID: ID_CSV0
progcont: 262145
Action: Loads csv.vlx → calls csv
Identical routing to A–C. Same dialog trees apply. See §A.
E — Batch Utilities¶
Menu: Batch Utilities
ID: ID_CSV32
progcont: 262177
Action: Loads csv.vlx → calls csv
Identical routing to A–D. The csv function routes to Panel Options (A.2) or Site Options (A.3), from which the user clicks “Batch Utilities” to reach A.4. See §A.4 for the full batch dialog.
F — Change 3D Viewpoint¶
Menu: Change 3D Viewpoint (submenu with 10 items)
ID: ID_CSV3d
Action: Pure AutoCAD commands — no LISP code involved
All 10 items are leaf nodes that execute AutoCAD _-view commands and set the *solid layer color:
# |
Menu Item |
AutoCAD Command |
Layer Color |
|---|---|---|---|
F.1 |
Panel Up Face / Site Plan |
|
color 252 on |
F.2 |
Panel Down Face |
|
color 252 on |
F.3 |
Panel Left Edge / West Elev |
|
color 252 on |
F.4 |
Panel Right Edge / East Elev |
|
color 252 on |
F.5 |
Panel Bottom Edge / North Elev |
|
color 252 on |
F.6 |
Panel Top Edge / South Elev |
|
color 252 on |
F.7 |
SW Isometric |
|
color 255 on |
F.8 |
SE Isometric |
|
color 255 on |
F.9 |
NE Isometric |
|
color 255 on |
F.10 |
NW Isometric |
|
color 255 on |
Color convention: Orthographic views use color 252 (near-black), isometric views use color 255 (white/transparent).
G — View Layers¶
Menu: View Layers (nested submenu)
ID: ID_CSVLAYER
H — Shading¶
Menu: Shading (submenu with 3 items)
ID: ID_CSV8192
Action: Pure AutoCAD commands — no LISP code involved
# |
Menu Item |
AutoCAD Command |
|---|---|---|
H.1 |
Off |
|
H.2 |
Hidden |
|
H.3 |
Shaded |
|
All 3 items are leaf nodes.
I — Print¶
Menu: Print (nested submenu)
ID: ID_CSVPRINT
plt Function (plt.lsp, 22 lines)¶
The plt function checks drawing orientation (portrait vs landscape), sets up plot settings, and calls AutoCAD’s plot command. In batch mode, it also manages layer visibility based on btcha flags. All print paths are leaf actions after the layer setup.
J — Materials List¶
Menu: Materials List
ID: ID_CSV1024
progcont: 263169
Action: Loads csv.vlx → calls csv
Routes through standard csv entry flow → Site Options (A.3) → “Print Materials List” button → A.5 matl_dlg (progress display, automated processing — see §A.5).
K — Revision History¶
Menu: Revision History
ID: ID_CSV2048
progcont: 264193
Action: Loads csv.vlx → calls csv
Routes through csv → Panel Options (A.2) or Site Options (A.3). The revision dialog is called from finpan during the panel generation pipeline.
Revision Dialog¶
DCL: revision.dcl → dialog "revision"
Source: revision.lsp (24 lines)
Fields (per row, 10 rows) |
Key Pattern |
Type |
Purpose |
|---|---|---|---|
Revision # |
|
edit_box |
Revision number |
Date |
|
edit_box |
Revision date |
Description |
|
edit_box |
Revision notes |
Button |
Action |
|---|---|
OK |
Calls |
Cancel |
Aborts |
Help |
Opens csv.hlp “Revision” |
Supports up to 10 revisions. Auto-fills next empty row with current revision number and date. Leaf dialog — no sub-dialogs.
L — Slope Calculator¶
Menu: Slope Calculator
ID: ID_CSVSLOPE
progcont: 8193
Action: Loads csv.vlx → calls csv → routes through dialog chain
Opens calc_dlg — the shared construction calculator. See §20 (Shared Dialogs Reference) for full details.
Leaf dialog — no sub-dialogs beyond calc_dlg.
M — Registration Manager¶
Menu: Registration Manager
ID: ID_CSVPROG
Action: Loads csv.vlx → calls csvreg
Compiled-only function — csvreg exists only inside CSV.VLX. No .lsp source file. Cannot be traced further.
The menu definition also references ID_CSVPROGT (TiltUp) and ID_CSVPROGP (PreCast) registration managers, but these are not present in the active menu.
N — Help¶
Menu: Help
ID: ID_CSVHELP
Action: (help "csv.hlp" "Table_of_Contents")
Opens CSV.Hlp (Windows Help file) to Table of Contents. Leaf action — no dialogs.
O — Web Page¶
Menu: ConstructiVision Web Page
ID: ID_CSVWEB
Action: _browser http://www.constructivision.com
Opens AutoCAD’s built-in browser to the ConstructiVision website. Leaf action — no dialogs. Website likely no longer active.
P — About ConstructiVision¶
Menu: About ConstructiVision
ID: ID_CSVABOUT
Action: (help "csv.hlp" "About_CSV")
Opens CSV.Hlp to the “About” topic. Leaf action — no dialogs.
Q — Tech Support¶
Menu: Tech Support
ID: ID_CSVSUPPORT
Action: Loads csv.vlx → calls csvtech
Compiled-only function — csvtech exists only inside CSV.VLX. No .lsp source file. Cannot be traced further. Likely displays contact information or sends diagnostic data.
Missing and Stub Source Files¶
Missing Source Files (12 modules in csvlst with no .lsp on disk)¶
All missing modules relate to weld connections or standard openings — two feature areas that appear to have been removed or never completed.
Module |
Referenced By |
Impact If Triggered |
|---|---|---|
|
sdwg_dlg button “wl”; csvlst; CSV.MKP build project |
Wall Line button would crash. Functionality merged into slab_dlg pages 2–4 |
|
mp_dlg toggle |
Checking the toggle crashes — undefined function |
|
mp_dlg toggle |
Checking the toggle crashes — undefined function |
|
sdwg_dlg button “wc”; csvlst |
Site weld button — but button is disabled in UI |
|
csvlst |
Loaded at startup — load fails silently or errors |
|
csvlst |
Loaded at startup — no visible UI trigger |
|
csvlst |
Loaded at startup — no visible UI trigger |
|
csvlst |
Loaded at startup — no visible UI trigger |
|
csvlst |
Loaded at startup — no visible UI trigger |
|
csvlst |
Loaded at startup — no visible UI trigger |
|
csvlst |
Loaded at startup — no visible UI trigger |
|
csvlst; used for overwrite confirmations |
May cause errors when overwrite prompt is needed |
Stub Functions (2 modules — exist but show “not available” alert)¶
Module |
Lines |
Message |
|---|---|---|
|
4 |
|
|
4 |
|
Both are also disabled at the UI level via (mode_tile "fg" 1) and (mode_tile "cp" 1) in sdwg_dlg.lsp.
Disabled-at-Runtime UI Elements¶
Dialog |
Button |
Key |
Mechanism |
|---|---|---|---|
sdwg_dlg |
Footings |
|
|
sdwg_dlg |
Column Pads |
|
|
sdwg_dlg |
Weld Connections |
|
|
site_dlg |
Render |
|
Not disabled in UI — shows alert at runtime |
Compiled-Only Functions (No Source — Inside CSV.VLX)¶
Function |
Menu Item |
Purpose |
|---|---|---|
|
M: Registration Manager |
Software licensing/registration |
|
Q: Tech Support |
Technical support contact |
Anomaly: progcont Variable¶
The progcont global variable is set by every menu item that calls csv (values 1, 8193, 262145, 262153, 262161, 262177, 262209, 262273, 262401, 262465, 262657, 263169, 264193) but is never read in any source file. Likely vestigial from an earlier version, or consumed inside the compiled VLX/ARX.
Source File Inventory¶
LISP Source Files (.lsp) — Organized by Role¶
Controllers (system flow & routing)¶
File |
Lines |
Purpose |
|---|---|---|
csv.lsp |
281 |
Main entry point — system init, module loading, routing |
csvmenu.lsp |
— |
Menu initialization |
panel.lsp |
33 |
Panel creation workflow controller |
dwgnew.lsp |
31 |
New drawing handler — security check, template setup |
dwgold.lsp |
35 |
Edit drawing handler — validates panel_list/site_list |
new.lsp |
32 |
New project creation — creates directory structure |
finpan.lsp |
— |
Finalize panel + prompt revision |
btch.lsp |
37 |
Batch script generation — writes btch.scr |
scr.lsp |
— |
Script file builder helper |
Data Input Dialogs (panel features — all leaf nodes)¶
File |
Lines |
DCL |
Purpose |
|---|---|---|---|
mp_dlg.lsp |
150 |
mp_dlg.dcl (436 lines) |
Panel properties — 20 feature toggles |
ro_dlg.lsp |
89 |
ro_dlg.dcl |
Rough openings (up to 4) |
sb_dlg.lsp |
— |
sb_dlg.dcl |
Square blockouts (up to 4) |
ss_dlg.lsp |
— |
ss_dlg.dcl |
Spandrel seats (up to 2) |
tp_dlg.lsp |
— |
tp_dlg.dcl |
Top plates (up to 4) + rebar |
pp_dlg.lsp |
— |
pp_dlg.dcl |
Pick points (auto/manual) |
rb_dlg.lsp |
— |
rb_dlg.dcl |
Round blockouts (up to 4) |
pl_dlg.lsp |
— |
pl_dlg.dcl |
Pilasters (up to 2) |
lb_dlg.lsp |
— |
lb_dlg.dcl |
Ledger angles (up to 4) + rebar |
bp_dlg.lsp |
— |
bp_dlg.dcl |
Brace points (auto/manual, quadrants) |
dr_dlg.lsp |
— |
dr_dlg.dcl |
Man doors (up to 4) |
fs_dlg.lsp |
— |
fs_dlg.dcl |
Footing steps (up to 2) |
ll_dlg.lsp |
— |
ll_dlg.dcl |
Lintels (up to 4) |
sd_dlg.lsp |
— |
sd_dlg.dcl |
Slab dowels (up to 4) |
fh_dlg.lsp |
— |
fh_dlg.dcl (67KB) |
Feature strip horizontal |
dl_dlg.lsp |
— |
dl_dlg.dcl |
Dock levelers (up to 4) |
ts_dlg.lsp |
— |
ts_dlg.dcl |
Top steps (up to 2) |
ch_dlg.lsp |
— |
ch_dlg.dcl |
Chamfers (up to 4) |
fv_dlg.lsp |
— |
fv_dlg.dcl (51KB) |
Feature strip vertical |
num_dlg.lsp |
22 |
(in grid_dlg.dcl) |
Numbered grids (50 rows) |
let_dlg.lsp |
28 |
(in grid_dlg.dcl) |
Lettered grids (50 rows) |
slab_dlg.lsp |
163 |
slab_dlg.dcl (897 lines, 4 dialogs) |
Slab/wall line (4 pages, 64 segments) |
Drawing Generation (no user dialogs — geometry output)¶
File |
Size |
Purpose |
|---|---|---|
drawpan.lsp |
342 lines |
Panel outline geometry |
drawdim.lsp |
89 KB |
Dimensioning engine (largest file) |
mkblk.lsp |
38 KB |
Title block generation |
feature.lsp |
44 KB |
Feature strip geometry |
green.lsp |
35 KB |
Ledgers/top plate geometry |
opening.lsp |
— |
Opening geometry |
chamfer.lsp |
— |
Chamfer geometry |
brace.lsp |
— |
Brace geometry |
pick.lsp |
— |
Pick point geometry |
points.lsp |
— |
Points drawing |
dowels.lsp |
— |
Dowel geometry |
miter.lsp |
— |
Miter joint geometry |
Inspanel.lsp |
165 |
Insert panels into site as xrefs |
layout.lsp |
166 |
Site panel layout/rotation |
tiltup.lsp |
~20 |
Tilt-up panel operations |
Helper/Utility Functions¶
File |
Lines |
Purpose |
|---|---|---|
panatt.lsp |
— |
Panel attribute initialization |
updvar.lsp |
— |
Store panel variables to xrecord |
newlist.lsp |
— |
Update variable lists |
enable.lsp |
— |
Dialog control enabling |
pdisable.lsp |
— |
Panel disable logic |
fenable.lsp |
— |
Feature enable logic |
sbenable.lsp |
— |
Square blockout enable |
fpage.lsp |
119 |
Feature page helper |
slide.lsp |
— |
Slider value handler |
convert.lsp |
— |
Unit/version conversion |
chrchk.lsp |
— |
Character validation |
rangchck.lsp |
— |
Range validation |
rndblock.lsp |
— |
Round block coordinates |
strlsort.lsp |
— |
String list sorting |
centgrav.lsp |
— |
Center of gravity calculation |
bpauto.lsp |
— |
Auto brace point calculation |
ppauto.lsp |
— |
Auto pick point calculation |
ppcent.lsp |
— |
Pick point centering |
thick.lsp |
— |
Thickness calculations |
renpan.lsp |
— |
Rename panel |
donerev.lsp |
— |
Finalize revision |
savelay.lsp |
11 |
Save layout positions to conslist.txt |
dbchk.lsp |
— |
Database check |
dirchk.lsp |
— |
Directory validation |
err.lsp |
— |
Error handler |
plt.lsp |
22 |
Plot/print manager |
Stubs¶
File |
Lines |
Purpose |
|---|---|---|
footing.lsp |
4 |
Footings — alert only |
column.lsp |
4 |
Column pads — alert only |
Test Matrix¶
Testing Strategy¶
Every clickable path must be tested from the menu through to its leaf action. Each test records: precondition (drawing state), dialog depth reached, expected outcome, and whether the path completes successfully.
Deep Dialog Tests (internal paths)¶
ID |
Full Path |
Depth |
Expected |
|---|---|---|---|
T-A1 |
csv → Project Dialog → New Project |
2 |
New project dialog opens |
T-A1a |
csv → Project → New → OK |
3 |
Directory created |
T-A2-1 |
csv → md_dlg → Create New → dwg → panel → mp_dlg |
4 |
Panel Properties dialog |
T-A2-1-RO |
… → mp_dlg → Rough Opening → ro_dlg |
5 |
4 opening fields |
T-A2-1-SB |
… → mp_dlg → Square Blockout → sb_dlg |
5 |
4 blockout fields |
T-A2-1-SS |
… → mp_dlg → Spandrel Seat → ss_dlg |
5 |
2 seat fields |
T-A2-1-TP |
… → mp_dlg → Top Plate → tp_dlg |
5 |
4 plates + rebar |
T-A2-1-PP |
… → mp_dlg → Pick Points → pp_dlg |
5 |
Auto/manual layout |
T-A2-1-WD |
… → mp_dlg → Standard Opening → wd_dlg |
5 |
⚠️ CRASH |
T-A2-1-RB |
… → mp_dlg → Round Blockout → rb_dlg |
5 |
4 blockout fields |
T-A2-1-PL |
… → mp_dlg → Pilaster → pl_dlg |
5 |
2 pilaster fields |
T-A2-1-LB |
… → mp_dlg → Ledger → lb_dlg |
5 |
4 ledgers + rebar |
T-A2-1-BP |
… → mp_dlg → Brace Points → bp_dlg |
5 |
Auto/manual, quadrants |
T-A2-1-DR |
… → mp_dlg → Man Door → dr_dlg |
5 |
4 door fields |
T-A2-1-FS |
… → mp_dlg → Footing Step → fs_dlg |
5 |
2 steps |
T-A2-1-LL |
… → mp_dlg → Lintel → ll_dlg |
5 |
4 lintel fields |
T-A2-1-SD |
… → mp_dlg → Slab Dowels → sd_dlg |
5 |
4 dowel runs |
T-A2-1-FH |
… → mp_dlg → Feature Strip(H) → fh_dlg |
5 |
Horiz features |
T-A2-1-DL |
… → mp_dlg → Dock Leveler → dl_dlg |
5 |
4 levelers |
T-A2-1-TS |
… → mp_dlg → Top Step → ts_dlg |
5 |
2 steps |
T-A2-1-CH |
… → mp_dlg → Chamfer → ch_dlg |
5 |
4 chamfers |
T-A2-1-WC |
… → mp_dlg → Weld Connections → wc_dlg |
5 |
⚠️ CRASH |
T-A2-1-FV |
… → mp_dlg → Feature Strip(V) → fv_dlg |
5 |
Vert features |
T-A2-17 |
csv → md_dlg → Site Options → site_dlg |
3 |
Site Options dialog |
T-A2-18 |
csv → md_dlg → Batch Utilities → btch_dlg → btch |
4 |
Batch processing |
T-A3-1 |
csv → site_dlg → Create New Site → sdwg_dlg |
3 |
Site Drawing Options |
T-A3-3 |
csv → site_dlg → Attach Panels → invar → inspanel |
4 |
Panels inserted |
T-A3-6 |
csv → site_dlg → Layout → invar → layout → savelay |
4 |
Layout saved |
T-A3-13 |
csv → site_dlg → 3D Viewpoint → viewpt |
4 |
9-button dialog |
T-A3-14 |
csv → site_dlg → Render |
3 |
“Not available” alert |
T-A3x1 |
csv → sdwg_dlg → Grid Lines → grid_dlg |
4 |
Grid config dialog |
T-A3x1a |
… → grid_dlg → Number Grids → num_dlg |
5 |
50 grid rows |
T-A3x1b |
… → num_dlg → Insert Grid → insgrid_dlg |
6 |
Insert grid dialog |
T-A3x1c |
… → grid_dlg → Letter Grids → let_dlg |
5 |
50 grid rows |
T-A3x1d |
… → let_dlg → Insert Grid → insgrid_dlg |
6 |
Insert grid dialog |
T-A3x2 |
csv → sdwg_dlg → Wall Line → wall_dlg |
4 |
⚠️ CRASH |
T-A3x3 |
csv → sdwg_dlg → Slab → slab_dlg |
4 |
16 slab rows |
T-A3x3a |
… → slab_dlg → Page 2 |
5 |
Rows 17–32 |
T-A3x3b |
… → slab_dlg → Page 3 |
5 |
Rows 33–48 |
T-A3x3c |
… → slab_dlg → Page 4 |
5 |
Rows 49–64 |
T-A3x4 |
csv → sdwg_dlg → Footings |
4 |
“Not available” (disabled) |
T-A3x5 |
csv → sdwg_dlg → Column Pads |
4 |
“Not available” (disabled) |
T-A3x6 |
csv → sdwg_dlg → Weld Connections |
4 |
Disabled (weld.lsp missing) |
Known Crash Paths (3 paths)¶
Path |
Root Cause |
Severity |
|---|---|---|
mp_dlg → Standard Opening toggle → wd_dlg |
wd_dlg.lsp missing |
Critical |
mp_dlg → Weld Connections toggle → wc_dlg |
wc_dlg.lsp missing |
Critical |
sdwg_dlg → Wall Line → wall_dlg |
wall_dlg.lsp missing |
Critical |
Maximum Depth Paths¶
Depth |
Path |
|---|---|
6 |
Menu → csv → site_dlg → sdwg_dlg → grid_dlg → num_dlg → insgrid_dlg |
6 |
Menu → csv → site_dlg → sdwg_dlg → grid_dlg → let_dlg → insgrid_dlg |
5 |
Menu → csv → md_dlg → panel → mp_dlg → [any of 18 sub-dialogs] |
5 |
Menu → csv → site_dlg → sdwg_dlg → grid_dlg → num_dlg/let_dlg |
5 |
Menu → csv → site_dlg → sdwg_dlg → slab_dlg → page2/3/4 |
4 |
Menu → csv → md_dlg → btch_dlg → btch |
4 |
Menu → csv → site_dlg → invar → inspanel |
4 |
Menu → csv → site_dlg → viewpt |