Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Constructivision Docs
Logo
Constructivision Docs
  • Commit History
  • ConstructiVision Modernization (2026) — Project Plan
    • ConstructiVision Modernization 2026
    • Project Charter
    • Inventory & Gap Analysis
    • Target Architecture (Modern Windows + Modern AutoCAD)
    • Phase Plan (P0-P5)
    • 2026 Timeline (Week-by-Week)
    • ConTech Optimizer – Revised Hypothetical Business Plan
    • Risk Register (2026)
    • Testing & Validation Strategy
    • Release & Distribution Plan (Modern Windows + Web)
    • v3.60 Source Recovery — Missing Dependency Fix
    • ConstructiVision TB11-01x32 — Architecture & Deployment
    • ConstructiVision TB11-01x64 — Architecture & Deployment
    • 30 — AutoCAD Evolution Analysis: Version-by-Version Impact on ConstructiVision
    • 31 — Comprehensive Workflow & Human Factors Analysis
    • Bug Tracker — Validation Campaign
    • XData Refactor Plan — Eliminate Text File Serialization
    • 34 — Tech Support Modernization
    • Software Development Lifecycle
    • Windows 10 Upgrade Study - Constructivision Compatibility
    • Demo Plan — White Cap + World of Concrete (End of 2026)
    • AI Enhancements Roadmap (P5)
    • Milestones Dashboard
    • Weekly Updates
    • Skill Development Guide
    • Templates
      • Weekly Update â” Template
      • Decision Log â” Template
      • Issue â” Template
  • Web Deployment
    • Deployment Architecture
  • Legacy ConstructiVision
    • Legacy ConstructiVision Versions: Comprehensive Analysis
    • ConstructiVision v3.60 Documentation
      • CSV.lsp - Main Application Entry Point
      • csvmenu.lsp - Menu Installation Entrypoint
      • CSV.VLX - Visual LISP Compiled Binary Analysis
      • CSV menu file family: .mnu, .mns, .mnc, .mnr, .prj, .prv
      • csv.mnu â” menu macros and âoeRun Programâ wiring
      • csv.prj and Csv.prv â” legacy menu build/toolchain notes
      • v3.60 Module Analyses Index
      • Legacy ConstructiVision v3.60 Installer and Payload
      • v3.60 file catalog
      • WINCSS.REG — Binary Registry Payload
      • v3.60 Subdirectory Analysis (OMITTED FROM PREVIOUS INVENTORY)
      • ConstructiVision v3.60 Module Documentation
        • Core Application Modules
          • CSV.lsp — Main Application Entry Point (CRITICAL)
          • CSVMENU.lsp — Main Menu System
          • ENABLE.lsp — Dialog Control State Management
          • ERR.lsp — Dialog Input Validation & Error Display
          • SETVARS.lsp — AutoCAD System Variable Configuration
          • UPDVAR.lsp — Dialog Variable Update & Conversion
          • WARNING.lsp — Warning Dialog Display System
          • WARNING - Module functionality
        • Project Management
          • DWGNEW.lsp — New Drawing Template Selection
          • DWGOLD.lsp — Existing Drawing Selection
          • NEW.lsp — New Project Creation Workflow
          • PJ_NAME.lsp — Project Name Extraction & Panel Prefix Generation
          • PROJECT.lsp — Project Selection & Initialization
        • Panel Drawing & Layout
          • DRAWPAN.lsp — Panel Drawing Generation Engine
          • FINPAN.lsp — Panel Finalization & Cleanup
          • INSPANEL.lsp — Panel Insertion & Placement
          • MAKEPAN.lsp — Panel Block & Entity Creation
          • PANATT.lsp — Panel Attributes & Variable Initialization
          • PANEL.lsp — Panel Entry Point & Validation
          • RENPAN.lsp — Panel Renumbering & Renaming
        • Dialog Boxes
          • Batch & Calculation Dialogs
            • BTCH_DLG - Batch Dialog Module (LSP)
          • BP_DLG.lsp — Base Plate Dialog Handler
          • CALC_DLG.lsp — Calculation Dialog
          • CH_DLG.lsp — Chamfer Dialog Handler
          • DL_DLG.lsp — Dowel/Lift Dialog Handler
          • DR_DLG.lsp — Dowel/Rebar Dialog Handler
          • FH_DLG.lsp — Foundation Head Dialog
          • FS_DLG.lsp — Foundation Slab Dialog
          • FV_DLG.lsp — Foundation Void Dialog
          • GRID_DLG.lsp — Grid Layout Dialog
          • LB_DLG.lsp — Ledger Beam Dialog
          • LL_DLG.lsp — Load Line Dialog
          • LYR_DLG.lsp — Layer Management Dialog
          • MATL_DLG.lsp — Material Selection Dialog
          • MD_DLG.lsp — Main Dialog Controller
          • MP_DLG.lsp — Mix Profile Dialog Handler (CRITICAL)
          • NB_DLG.lsp — Note Block Dialog
          • OPENING.lsp — Panel Opening Management
          • PL_DLG.lsp — Plate Line Dialog
          • PP_DLG.lsp — Panel Parameters Dialog Handler
          • RO_DLG.lsp — Roof Panel Dialog
          • SB_DLG.lsp — Slab Base Dialog
          • SDWG_DLG.lsp — Site Drawing Details Dialog
          • SD_DLG.lsp — Site Drawing Dialog
          • SLAB_DLG.lsp — Slab Panel Dialog Handler
          • SS_DLG.lsp — Slab Side Dialog
          • TP_DLG.lsp — Top Plate Dialog
          • TS_DLG.lsp — Tilt Slab Dialog
          • WALL_DLG.lsp — Wall Panel Dialog Handler
          • WC_DLG.lsp — Weld Connection Dialog Handler (CRITICAL)
          • WD_DLG.lsp — Weld Detail Dialog
        • Drawing & Dimensioning
          • BASEDIM.lsp — Base Dimension Calculations (CRITICAL)
          • DRAWDIM.lsp — Panel Dimensioning Engine (CRITICAL)
          • DRAWDIMLST.lsp — Dimension List Management
          • DRWBAS.lsp — Drawing Base Setup
          • LAYOUT.lsp — Drawing Layout Management
          • PLT.lsp — Plot Configuration
          • SLIDE.lsp — Slide File Management
        • Feature Generation
          • BOLT.lsp — Bolt Connection Generation
          • BRACE.lsp — Brace Point Generation
          • CHAMFER.lsp — Chamfer Feature Generation
          • COLUMN.lsp — Column Connection Generation
          • DOWELS.lsp — Dowel/Lift Insert Generation
          • FOOTING.lsp — Footing Connection Generation
          • MITER.lsp — Miter Joint Generation
          • WELD.lsp — Weld Symbol Generation
          • WELDCONN.lsp — Weld Connection Generation (CRITICAL)
        • Engineering Calculations
          • CENTGRAV - Module functionality
          • FEATURE - Module functionality
          • POINTS - Point/coordinate
          • THICK - Thickness calculations
          • TILTUP.lsp — Tilt-Up Panel Utility
          • WC_EDIT.lsp — Weld Connection Editor
        • Data Import/Export
          • DRENG - Module functionality
          • DRREAD - Module functionality
          • ENGEXP - Module functionality
          • ENGIMP - Module functionality
          • MBENG - Module functionality
          • MBREAD - Module functionality
          • WSBENG - Module functionality
          • WSBREAD - Module functionality
        • Automation & Batch Operations
          • BPAUTO - Automation routine
          • BTCH - Batch processing
          • PPAUTO - Automation routine
          • PPCENT - Module functionality
        • Validation & Checking
          • CHRCHK - Validation/checking
          • DBCHK - Validation/checking
          • DIRCHK - Validation/checking
          • RANGCHCK - Module functionality
        • List Management & Sorting
          • NEWLIST - List management
          • STRLSORT - Module functionality
          • WCEDLST - Module functionality
          • WCLIST - List management
          • WCMOD - Module functionality
        • Block & Attribute Management
          • MKBLK - Module functionality
          • NBBLOCK - Block management
          • NBENABLE - Feature enable/disable handler
        • Revision & Markup
          • DONEREV - Module functionality
          • ELEVMRKR - Module functionality
          • REVISION - Revision control
          • REVISION - Revision control
        • Page & Layout Management
          • FPAGE - Page/layout management
          • WCPAGE - Page/layout management
          • WDPAGE - Page/layout management
        • Helper Modules
          • CONVERT - Data conversion
          • dwg.dcl â” dialog inventory
          • EDITBX - Module functionality
          • FENABLE - Feature enable/disable handler
          • GREEN - Module functionality
          • INVAR - Module functionality
          • INVAR - Module functionality
          • J - Module functionality
          • NATIVE - Module functionality
          • OKCANHLP - Module functionality
          • PDISABLE - Module functionality
          • PICK - Module functionality
          • POINTMAP - Point/coordinate
          • process.dcl â” dialog inventory
          • SAVELAY - Module functionality
          • SBENABLE - Feature enable/disable handler
          • SCR - Module functionality
          • SHOW - Module functionality
          • TEST - Module functionality
          • viewpt.dcl â” dialog inventory
          • WCENABLE - Feature enable/disable handler
          • WDENABLE - Feature enable/disable handler
        • DCL Definitions
          • bp_dlg.dcl — Base Plate / Anchor Bolt Configuration
          • btch_dlg.dcl — Batch Processing Configuration
          • calc_dlg.dcl — Foot/Inch Calculator Utility
          • ch_dlg.dcl — Chamfer Configuration
          • dl_dlg.dcl — Dowel/Lift Insert Configuration
          • dreng_dlg.dcl — Rebar Engineering Calculations
          • dr_dlg.dcl — Dowel/Rebar Projection Configuration
          • dwg-dcl.md — Drawing Generation Configuration
          • fh_dlg.dcl — Foundation/Bearing Configuration
          • fs_dlg.dcl — Finish/Surface Configuration
          • fv_dlg.dcl — Field Verification Dialog
          • grid_dlg.dcl — Grid Layout System Configuration
          • invar-dcl.md — Invariant Properties Dialog
          • lb_dlg.dcl — Ledger Beam Connection Configuration
          • ll_dlg.dcl — Lintel/Ledger Configuration
          • lyr_dlg.dcl — Layer Management Configuration
          • matl_dlg.dcl — Material Specification Configuration
          • mbeng_dlg.dcl — Moment/Bending Engineering
          • md_dlg.dcl — Material Database Configuration
          • mp_dlg.dcl — Master Panel Dialog (CRITICAL)
          • nb_dlg.dcl — Note/Bubble Configuration
          • new.dcl — New Project Creation
          • pl_dlg.dcl — Panel List Management
          • pp_dlg.dcl — Panel Parameters / Pick Point Configuration
          • process-dcl.md — Process Status Dialog
          • project.dcl — Project Selection Dialog
          • revision-dcl.md — Revision Control Dialog
          • ro_dlg.dcl — Roof Features Configuration
          • sb_dlg.dcl — Schedule/Bill Configuration
          • sdwg_dlg-dcl.md — Sheet Drawing Setup
          • sd_dlg.dcl — Schedule/Detail Drawing Configuration
          • slab_dlg.dcl — Slab Panel Configuration
          • ss_dlg.dcl — Section/Slice Configuration
          • tp_dlg.dcl — Top Plate Configuration
          • ts_dlg.dcl — Tolerance Specification
          • viewpt-dcl.md — Viewport Configuration
          • wall_dlg.dcl — Wall Panel with Openings Configuration
          • warning-dcl.md — Warning and Error Dialog
          • wc_dlg.dcl — Weld Connection Configuration (CRITICAL FEATURE)
          • wc_edit-dcl.md — Weld Connection Edit Dialog
          • wd_dlg.dcl — Window/Door Detail Configuration
          • wsbeng_dlg.dcl — Wall/Slab Bending Engineering
      • Legacy Installer Analysis
        • ConstructiVision v3.60 Installer Sequence Analysis
        • ConstructiVision v3.60 Installer File Dependencies Analysis
        • Cross-Check Analysis & Menu Installation Bug Fix
        • InstallShield CAB/HDR Inventory (data1, _sys1, _user1)
        • InstallShield stub + support files on the ConstructiVision media
        • Readme-derived Installation Notes (Legacy Analysis - Updated)
        • Setup.ini notes
        • Setup.ins Installer Logic (Legacy Analysis - Superseded)
        • Updating the ConstructiVision 3.60 InstallShield Installer
        • v3.60 install â-’ hot patch (overlay newer files)
        • Rebuild installer vs. install+hotpatch (AutoCAD 2000)
    • ConstructiVision v7.0 Documentation
      • v7.0 CSV.lsp — Main Application Entry Point
      • CSV.VLX (v7.0) — Visual LISP Compiled Binary Analysis
      • Enhanced DCL Documentation - Template with Context & Integration
      • v7.0 Documentation Consolidation Report
      • wincss2000.exe — License Manager Executable
      • ConstructiVision v7.0 Module Documentation
        • v7.0 Module Documentation - Overview
        • csv.lsp � v7.0 Module
        • csvmenu.lsp � v7.0 Module
        • enable.lsp � v7.0 Module
        • err.lsp � v7.0 Module
        • updvar.lsp � v7.0 Module
        • warning.lsp � v7.0 Module
        • Project Management (Deprecated in v7.0)
        • Panel Drawing & Layout (Deprecated in v7.0)
        • Dialog Boxes (Extended)
          • Base/Foundation Dialogs
          • Batch & Calculation Dialogs
          • Feature Dialogs
          • Material & Connection Dialogs
          • Panel Dialogs
          • BP_DLG.lsp — Base Plate Dialog Handler
          • btch_dlg.lsp � v7.0 Module
          • CALC_DLG.lsp — Calculation Dialog
          • CH_DLG.lsp — Chamfer Dialog Handler
          • DL_DLG.lsp — Dowel/Lift Dialog Handler
          • DR_DLG.lsp — Dowel/Rebar Dialog Handler
          • FH_DLG.lsp — Foundation Head Dialog
          • FS_DLG.lsp — Foundation Slab Dialog
          • FV_DLG.lsp — Foundation Void Dialog
          • GRID_DLG.lsp — Grid Layout Dialog
          • LB_DLG.lsp — Ledger Beam Dialog
          • let_dlg.lsp � v7.0 Module
          • LL_DLG.lsp — Load Line Dialog
          • MATL_DLG.lsp — Material Selection Dialog
          • MD_DLG.lsp — Main Dialog Controller
          • MP_DLG.lsp — Mix Profile Dialog Handler (CRITICAL)
          • num_dlg.lsp � v7.0 Module
          • OPENING.lsp — Panel Opening Management
          • PL_DLG.lsp — Plate Line Dialog
          • PP_DLG.lsp — Panel Parameters Dialog Handler
          • rb_dlg.lsp � v7.0 Module
          • RO_DLG.lsp — Roof Panel Dialog
          • SB_DLG.lsp — Slab Base Dialog
          • SDWG_DLG.lsp — Site Drawing Details Dialog
          • SD_DLG.lsp — Site Drawing Dialog
          • site_dlg.lsp � v7.0 Module
          • SLAB_DLG.lsp — Slab Panel Dialog Handler
          • SS_DLG.lsp — Slab Side Dialog
          • TP_DLG.lsp — Top Plate Dialog
          • TS_DLG.lsp — Tilt Slab Dialog
          • WALL_DLG.lsp — Wall Panel Dialog Handler
          • WC_DLG.lsp — Weld Connection Dialog Handler (CRITICAL)
          • WD_DLG.lsp — Weld Detail Dialog
        • Drawing & Dimensioning (Deprecated in v7.0)
        • drawdim.lsp � v7.0 Module
        • drawpan.lsp � v7.0 Module
        • layout.lsp � v7.0 Module
        • plt.lsp � v7.0 Module
        • slide.lsp � v7.0 Module
        • Feature Generation
          • brace.lsp � v7.0 Module
          • chamfer.lsp � v7.0 Module
          • dowels.lsp � v7.0 Module
          • feature.lsp � v7.0 Module
          • green.lsp � v7.0 Module
          • weld.lsp � v7.0 Module
          • weldconn.lsp � v7.0 Module
        • Engineering Calculations & Utilities
          • Engineering Calculations (Deprecated in v7.0)
          • bpauto.lsp � v7.0 Module
          • btch.lsp � v7.0 Module
          • centgrav.lsp � v7.0 Module
          • chrchk.lsp � v7.0 Module
          • column.lsp � v7.0 Module
          • convert.lsp � v7.0 Module
          • dbchk.lsp � v7.0 Module
          • dirchk.lsp � v7.0 Module
          • donerev.lsp � v7.0 Module
          • dwgnew.lsp � v7.0 Module
          • dwgold.lsp � v7.0 Module
          • fenable.lsp � v7.0 Module
          • finpan.lsp � v7.0 Module
          • footing.lsp � v7.0 Module
          • fpage.lsp � v7.0 Module
          • Inspanel.lsp � v7.0 Module
          • invar.lsp � v7.0 Module
          • main.lsp � v7.0 Module
          • miter.lsp � v7.0 Module
          • mkblk.lsp � v7.0 Module
          • new.lsp � v7.0 Module
          • newlist.lsp � v7.0 Module
          • opening.lsp � v7.0 Module
          • panatt.lsp � v7.0 Module
          • panel.lsp � v7.0 Module
          • pdisable.lsp � v7.0 Module
          • pick.lsp � v7.0 Module
          • points.lsp � v7.0 Module
          • ppauto.lsp � v7.0 Module
          • ppcent.lsp � v7.0 Module
          • rangchck.lsp � v7.0 Module
          • renpan.lsp � v7.0 Module
          • revision.lsp � v7.0 Module
          • rndblock.lsp � v7.0 Module
          • savelay.lsp � v7.0 Module
          • sbenable.lsp � v7.0 Module
          • scr.lsp � v7.0 Module
          • strlsort.lsp � v7.0 Module
          • thick.lsp � v7.0 Module
          • TILTUP.lsp — Tilt-Up Panel Utility
          • wcenable.lsp � v7.0 Module
          • wclist.lsp � v7.0 Module
          • wcpage.lsp � v7.0 Module
          • WC_EDIT.lsp — Weld Connection Editor
          • wdenable.lsp � v7.0 Module
          • wdpage.lsp � v7.0 Module
        • WF.zip — AISC Wide Flange Steel Beam Library
        • Automation & Batch Operations (Deprecated in v7.0)
        • Validation & Checking (Deprecated in v7.0)
        • List Management & Sorting (Deprecated in v7.0)
        • Block & Attribute Management
        • Revision & Markup (Deprecated in v7.0)
        • Page & Layout Management (Deprecated in v7.0)
        • Helper Modules
        • DCL Definitions
          • bp_dlg-dcl.md — Base Plate Configuration (v7.0)
          • btch_dlg-dcl.md — Batch Processing Configuration (v7.0)
          • calc_dlg-dcl.md — Engineering Calculator (v7.0)
          • ch_dlg-dcl.md — Panel Chamfer Configuration (v7.0)
          • dl_dlg-dcl.md — Door/Large Opening Configuration (v7.0)
          • dr_dlg-dcl.md — Dowel/Rebar Projection Configuration (v7.0)
          • dwg-dcl.md — Drawing Generation Configuration (v7.0)
          • fh_dlg-dcl.md — Foundation/Bearing Configuration (v7.0)
          • fs_dlg-dcl.md — Finish/Surface Configuration (v7.0)
          • fv_dlg-dcl.md — Field Verification Dialog (v7.0)
          • grid_dlg-dcl.md — Reference Grid Configuration (v7.0)
          • invar-dcl.md — Invariant Properties Dialog (v7.0)
          • lb_dlg-dcl.md — Lifting/Bearing Configuration (v7.0)
          • ll_dlg-dcl.md — Lintel/Ledger Configuration (v7.0)
          • matl_dlg-dcl.md — Material Selection Dialog (v7.0)
          • md_dlg-dcl.md — Material Database Management (v7.0)
          • mp_dlg-dcl.md — Main Panel Configuration (v7.0)
          • new-dcl.md — New Project Setup (v7.0)
          • pl_dlg-dcl.md — Panel List Management (v7.0)
          • pp_dlg-dcl.md — Panel Properties Configuration (v7.0)
          • project-dcl.md — Project Configuration (v7.0)
          • rb_dlg-dcl.md — Rebar Configuration (v7.0)
          • revision-dcl.md — Revision Control (v7.0)
          • ro_dlg-dcl.md — Rough Opening Configuration (v7.0)
          • sb_dlg-dcl.md — Schedule/BOM Configuration (v7.0)
          • sdwg_dlg-dcl.md — Sheet Drawing Setup (v7.0)
          • sd_dlg-dcl.md — Schedule Detail Drawing (v7.0)
          • site_dlg-dcl.md — Site Coordination Dialog (v7.0)
          • slab_dlg-dcl.md — Slab Panel Configuration (v7.0)
          • ss_dlg-dcl.md — Section/Slice Configuration (v7.0)
          • tp_dlg-dcl.md — Top Plate Configuration (v7.0)
          • ts_dlg-dcl.md — Tolerance Specification (v7.0)
          • viewpt-dcl.md — Viewport Configuration (v7.0)
          • wall_dlg-dcl.md — Wall Panel Configuration (v7.0)
          • warning-dcl.md — Warning and Error Dialog (v7.0)
          • wc_dlg-dcl.md — Weld Connection Configuration (v7.0)
          • wc_edit-dcl.md — Weld Connection Edit (v7.0)
          • wd_dlg-dcl.md — Window/Door Configuration (v7.0)
    • Version Comparisons
      • CSV.lsp Version Comparison (v3.60 vs v7.0)
      • Complete File Analysis: v3.60 Installer vs v7.0(patch) Payload
      • ConstructiVision v3.60 vs v7.0 - Complete Module Comparison
      • Source Code Comparison: v3_60/v3.60 vs v7.0(patch)
      • File Diff: v3.60 Installer vs v11 Patch (Source Payload)
      • ConstructiVision Module Documentation - Final Status Report
      • Final Documentation Verification - v3.60 vs v7.0
      • Legacy Documentation Reorganization - Verification Report
    • Developer Notes
      • File Types Dictionary
      • AutoLISP Compilation Architecture
      • Menu System Architecture
      • File Creators Dictionary
      • File Consumers Dictionary
      • Developer Environment Setup
      • VLX Compilation & Verification Guide
      • AutoCAD Web Migration Guide
    • ConstructiVision User Manual
Back to top
View this page
Edit this page

Menu System Architecture¶

The ConstructiVision menu system: how the 6-file family works together, how it evolved from v3.60 to v11, and the step-by-step procedure for making menu changes.

Note

This document is reverse-engineered from the src/TB11-01x32/ and src/x86/v3_60/ source trees, the v11 architecture documentation, and the csv.cui XML analysis. It consolidates scattered menu intel from 6+ documents into one actionable reference.


The 6-File Menu Family¶

ConstructiVision’s menu is represented by six interrelated files that all describe the same pulldown menu. Understanding which is “master” and which are derived is critical before making any changes.

File Inventory (v11 / TB11-01x32)¶

File

Size

Format

Role

Editable?

csv.mnu

7 KB

Text

Master source — human-authored menu definition

Yes

csv.mns

7 KB

Text

AutoCAD-generated working copy of .mnu

No — regenerated

csv.mnc

8 KB

Binary

Compiled menu (faster loading)

No — compiled

csv.mnr

1 KB

Binary

Menu resources (bitmap icons)

No — compiled

csv.cui

37 KB

XML

Modern CUI equivalent (AutoCAD 2006+)

Conditional (see below)

csvmenu.lsp

3 KB

AutoLISP

Menu loader script

Yes

Relationship Diagram¶

                    MASTER SOURCE
                   ┌─────────────┐
                   │   csv.mnu   │ ← Edit this (AutoCAD 2000)
                   └──────┬──────┘
                          │
            ┌─────────────┼─────────────┐
            │ AutoCAD     │ AutoCAD     │ AutoCAD 2006+
            │ _menuload   │ compiles    │ CUIIMPORT
            ▼             ▼             ▼
      ┌──────────┐  ┌──────────┐  ┌──────────┐
      │ csv.mns  │  │ csv.mnc  │  │ csv.cui  │
      │ (working │  │ (binary  │  │ (XML     │
      │  copy)   │  │  cache)  │  │  format) │
      └──────────┘  └──────────┘  └──────────┘
            │             │
            └──────┬──────┘
                   │
      ┌────────────┴────────────┐
      │      csvmenu.lsp        │ ← Loads csv.mnu into AutoCAD
      │  (load "csv.mnu")       │    Installs CSV.POP1 at position 16
      └─────────────────────────┘

Which File Is “Master”?¶

For AutoCAD 2000 (current target): csv.mnu is master.

  • csv.mns — AutoCAD generates this from csv.mnu on first _menuload. It’s nearly identical but may gain a ***TOOLBARS section. Do not edit — AutoCAD overwrites it.

  • csv.mnc — Binary compilation of the menu. AutoCAD generates this automatically. Delete to force recompile from .mns.

  • csv.mnr — Resource file for bitmap icons. ConstructiVision has no custom icons (only 6 bytes), so this is essentially empty.

  • csv.cui — Generated by CUIIMPORT in AutoCAD 2006+. It encodes the same menu tree in XML. AutoCAD 2000 does not read this file.

For future AutoCAD 2006+ targets: csv.cui becomes master, and the .mnu/.mns/.mnc/.mnr files become irrelevant.


Menu Evolution: v3.60 → v11¶

v3.60 Menu (7 items)¶

CSV (POP1)
├── Run Program         → arxload csv.arx OR load csv.vlx → csv
├── Program Maintenance → startapp wincss.exe
├── Unload Program      → arxunload csv, pcms, pcms2
├── Import Data         → load csv → makepan
├── Help                → csv.hlp
├── CSV Web Page        → constructivision.com
└── About CSV           → csv.hlp "About_CSV"

Key characteristics:

  • Menu title: &CSV (abbreviated)

  • ARX/VLX dual-load: (if(< (distof(getvar "acadver")) 15)(arxload "csv.arx")(load "csv.vlx")) — R14 uses ARX, R15+ uses VLX

  • External program launch: wincss.exe (registration manager was a separate Windows executable)

  • No submenus, no layer management, no printing, no viewpoints

v11 Menu (38 macros, 40 click paths)¶

ConstructiVision (POP1)
├── Program Options           → progcont=1
├── ──────────────
├── Create New Project        → progcont=262153
├── Create New Drawing        → progcont=262161
├── Edit Existing Drawing     → progcont=262145
├── ──────────────
├── Batch Utilities           → progcont=262177
├── ──────────────
├── Change 3D Viewpoint →     (10 view commands)
├── ──────────────
├── View Layers →
│   ├── Panel →               (6 layer presets)
│   └── Site →                (Select Layers dialog)
├── ──────────────
├── Shading →                 (Off / Hidden / Shaded)
├── ──────────────
├── Print →
│   ├── Panel →               (6 print-layer presets + All)
│   └── Site →                (Select Layouts dialog)
│   ├── Materials List        → progcont=263169
│   └── Revision History      → progcont=264193
├── ──────────────
├── Slope Calculator          → progcont=8193
├── ──────────────
├── Registration Manager      → csvreg (compiled in VLX)
├── ──────────────
├── Help                      → csv.hlp
├── ConstructiVision Web Page → constructivision.com
├── About ConstructiVision    → csv.hlp
└── Tech Support              → csvtech (compiled in VLX)

Key changes from v3.60:

  • Menu title changed: &CSV → &ConstructiVision

  • ARX loading dropped — VLX only: (load "csv.vlx")

  • progcont dispatch added — single csv command routes via integer flags

  • wincss.exe replaced by csvreg (compiled into VLX)

  • Entire submenu hierarchy added: 3D views, layers, shading, printing

  • csvtech tech support command added (compiled-only, no source)

  • Layer management via direct AutoCAD commands (-layer s 0 off * on ...)

Macro Pattern Comparison¶

v3.60 pattern (ARX/VLX dual-load, direct command):

^C^C(setvar "menuecho" 1);(if(not(type c:csv))(if(<(distof(getvar "acadver"))15)(arxload "csv.arx")(load "csv.vlx")));^C^Ccsv;

v11 pattern (VLX-only, progcont dispatch):

^C^C(setvar "menuecho" 1);(setvar "cmdecho" 0);(if(not(type c:csv))(load "csv.vlx"));(setq progcont 262153);csv;

v11 additions:

  • (setvar "cmdecho" 0) — suppress command echo (cleaner UX)

  • (setq progcont N) — set dispatch flag before calling csv

  • No more ^C^C between load and command — semicolons chain instead


The progcont Dispatch Table¶

Most v11 menu items set progcont before calling csv. This integer tells csv.lsp which dialog hub to open. The values are bitmask-based:

Menu Item

UID

progcont

Hex

Purpose

Program Options

ID_CSVRUN

1

0x00001

Program options dialog

Edit Existing Drawing

ID_CSV0

262145

0x40001

Edit existing + load modules

Create New Project

ID_CSV8

262153

0x40009

New project dialog

Create New Drawing

ID_CSV16

262161

0x40011

New drawing dialog

Batch Utilities

ID_CSV32

262177

0x40021

Batch utilities dialog

View All Layers

ID_AllLayers

262209

0x40041

Turn on all layers

Select Layers (View)

ID_CustomLayers

262273

0x40081

Layer selection dialog

Print All Layers

ID_CSV256

262465

0x40101

Print all layers

Print (after layer set)

ID_PFormLayers etc.

262401

0x400C1

Print current layer preset

Select Layouts (Print)

ID_CSV512

262657

0x40201

Print layout selection

Materials List

ID_CSV1024

263169

0x40401

Print materials list

Revision History

ID_CSV2048

264193

0x40801

Print revision history

Slope Calculator

ID_CSVSLOPE

8193

0x02001

Slope calculator dialog

Warning

Redundancy observation (Feb 23, 2026): Many menu items with different progcont values ultimately route to the same sub-dialogs inside csv.lsp. For example, the 6 “Print → Panel” layer-preset items (ID_PFormLayers, ID_PGreenLayers, ID_PConnLayers, ID_PFeatureLayers, ID_PPointLayers) each set specific layers via -layer commands but then all use progcont=262401 and call csv — which opens the same print dialog. Similarly, the “View Layers → Panel” items manipulate layers directly via AutoCAD commands and never call csv at all (except “All Layers” which uses progcont=262209). This suggests the menu was designed to combine direct AutoCAD commands with CV dialog routing, but the resulting UX has many paths that converge to the same destination — a potential simplification target for modernization.

Bitmask structure (reverse-engineered):

Bit Range

Mask

Meaning

Bit 0

0x00001

Base “run CSV” flag

Bits 3–5

0x00038

Operation: 1=new project, 2=new drawing, 4=batch

Bit 6

0x00040

View layers

Bit 7

0x00080

Select layers (custom)

Bit 8

0x00100

Print all layers

Bit 9

0x00200

Print select layouts

Bit 10

0x00400

Materials list

Bit 11

0x00800

Revision history

Bit 13

0x02000

Slope calculator

Bit 18

0x40000

“Load modules” flag (present on most items)

Non-progcont Commands¶

Three menu items bypass progcont and call dedicated commands directly:

Menu Item

UID

Command

Source

Registration Manager

ID_CSVPROG

csvreg

Compiled-only (inside CSV.VLX, no .lsp source)

Tech Support

ID_CSVSUPPORT

csvtech

Compiled-only (inside CSV.VLX, no .lsp source)

Help

ID_CSVHELP

(help "csv.hlp" ...)

AutoCAD built-in help command


csvmenu.lsp — The Menu Loader¶

v3.60 Version (20 lines of code)¶

(defun csvmenu()
  (if (not (menugroup "CSV"))
    (if (or (findfile "csv.arx") (findfile "csv.vlx"))
      (progn
        (if (findfile "csv.mnu")
          (progn
            (command "_menuload" "csv.mnu")
            (menucmd "P16=+CSV.POP1")
            (prompt "\nThe ConstructiVision menu has been installed\n")
          )
          (prompt "\nThe CSV.MNU file was not found...")
        )
      )
      (prompt "\nThe ConstructiVision program file was not found...")
    )
  )
)
(csvmenu)

Behavior: Load once only. If CSV menu group exists, skip silently.

v11 Version (key differences)¶

(defun csvmenu (/ msg)
   (setvar "filedia" 0)
   (if (menugroup "CSV")
      (progn
        (command "_menuunload" "csv")
        (setq msg "The ConstructiVision menu has been reinstalled.")
      )
      (setq msg "The ConstructiVision menu has been installed.")
   )
   (if (findfile "csv.mnu")
     (progn
       (command "_menuload" "csv.mnu")
       (menucmd "P16=+CSV.POP1")
       (alert msg)
     )
     (alert "The ConstructiVision menu file was not found...")
   )
   (setvar "filedia" 1)
)
(csvmenu)

Key changes from v3.60:

  • Always reloads: If CSV menu group exists, it _menuunloads first, then reloads. This makes it an “update” mechanism, not just a one-time installer.

  • No ARX/VLX check: Doesn’t verify the program file exists before loading the menu.

  • Uses alert (modal dialog box) instead of prompt (command line message).

  • Disables filedia during load to suppress file dialogs, re-enables after.

Tip

The v11 csvmenu.lsp can be used as a hot-reload mechanism during development. After editing csv.mnu, run (load "csvmenu") at the AutoCAD command line to immediately refresh the menu without restarting AutoCAD.


csv.cui — The XML Menu (AutoCAD 2006+)¶

Structure¶

The CUI file is standard XML with this hierarchy:

<CustSection>
  <FileVersion MajorVersion="0" MinorVersion="1" IncrementalVersion="3" />
  <Header>
    <CommonConfiguration>
      <Revision MajorVersion="16" MinorVersion="2" />   ← AutoCAD 2006 format
    </CommonConfiguration>
  </Header>
  <MenuGroup Name="CSV">
    <MacroGroup Name="CSVMacros">      ← 38 MenuMacro definitions
      <MenuMacro UID="ID_CSVRUN">...</MenuMacro>
      <MenuMacro UID="ID_CSV8">...</MenuMacro>
      ...
    </MacroGroup>
    <MenuRoot>
      <PopMenuRoot>                    ← Pulldown menu tree
        <PopMenu UID="ID_Title">       ← Main "ConstructiVision" menu
          ...nested PopMenuItems and PopMenuRefs...
        </PopMenu>
        <PopMenu UID="ID_CSV3d">       ← "Change 3D Viewpoint" submenu
        <PopMenu UID="ID_CSVLAYER">    ← "View Layers" submenu
        <PopMenu UID="PMU_0005">       ← "Panel" (under View Layers)
        <PopMenu UID="PMU_0007">       ← "Site" (under View Layers)
        <PopMenu UID="ID_CSV8192">     ← "Shading" submenu
        <PopMenu UID="ID_CSVPRINT">    ← "Print" submenu
        <PopMenu UID="PMU_0011">       ← "Panel" (under Print)
        <PopMenu UID="PMU_0013">       ← "Site" (under Print)
      </PopMenuRoot>
      <ToolbarRoot />                  ← Empty (no toolbars defined)
    </MenuRoot>
  </MenuGroup>
</CustSection>

CUI vs MNU UID Mapping¶

The CUI preserves the same ID_ identifiers from the MNU file, plus adds XML-specific UIDs:

MNU ID

CUI MacroRef

CUI PopMenuItem UID

ID_CSVRUN

ID_CSVRUN

PMIU_0001

ID_CSV8

ID_CSV8

PMIU_0003

ID_CSV16

ID_CSV16

PMIU_0004

ID_CSV0

ID_CSV0

PMIU_0005

ID_CSV32

ID_CSV32

PMIU_0007

The CUI also encodes <HelpString> elements from the MNU ***HELPSTRINGS section, and adds <Name xlate="true"> elements with translation UIDs (XLS_####) for localization support.

CUI Generation History¶

The CUI file was generated from the v11 MNU, not authored independently. Evidence:

  1. <Revision MajorVersion="16" MinorVersion="2"> — AutoCAD 2006 migration format

  2. <Alias>ConstructVision</Alias> — preserves the typo from csv.mnu (**ConstructVision section header, missing ‘i’)

  3. All macro UIDs match the MNU ID_ tags exactly

  4. Menu structure is a 1:1 translation of the MNU [-> / [<- submenu markers


Menu Update Procedure¶

Scenario A: Add/Remove/Edit a Menu Item (AutoCAD 2000 Target)¶

Master file: csv.mnu

Step 1 — Edit csv.mnu

Add a new item. Follow the existing pattern:

;; Adding a new "Concrete Calculator" item after Slope Calculator:
ID_CSVCONC    [&Concrete Calculator]^C^C(setvar "menuecho" 1);(setvar "cmdecho" 0);(if(not(type c:csv))(load "csv.vlx"));(setq progcont 16385);csv;

Menu syntax rules:

  • ID_XXXXX — unique identifier (used in ***HELPSTRINGS section too)

  • [&Label] — & marks the keyboard accelerator letter

  • [->Label] — starts a submenu

  • [<-Label] — last item in a submenu (closes it)

  • [<-<-Label] — closes two nested submenus at once

  • [--] — separator line

  • ^C^C — cancel any active command (equivalent to pressing Escape twice)

Step 2 — Add help string (optional)

In the ***HELPSTRINGS section at the bottom of csv.mnu:

ID_CSVCONC    [Displays the Concrete Calculator]

Step 3 — Delete derived files

Force AutoCAD to regenerate from the new master:

# On the test VM, delete cached/compiled menu files:
Remove-Item "C:\Program Files\ConstructiVision\csv.mns" -ErrorAction SilentlyContinue
Remove-Item "C:\Program Files\ConstructiVision\csv.mnc" -ErrorAction SilentlyContinue
Remove-Item "C:\Program Files\ConstructiVision\csv.mnr" -ErrorAction SilentlyContinue

Step 4 — Reload menu in AutoCAD

Option A (from command line):

Command: (load "csvmenu")

Option B (manual):

Command: _menuunload csv
Command: _menuload csv.mnu

AutoCAD will regenerate csv.mns, csv.mnc, and csv.mnr automatically from csv.mnu.

Step 5 — If adding a progcont-routed item, update csv.lsp

The new progcont value (e.g., 16385) must be handled in the routing logic inside csv.lsp. Add a new condition branch to the cond statement that dispatches based on progcont.

Step 6 — Update csv.cui (if maintaining forward compatibility)

See Scenario B below. If you’re only targeting AutoCAD 2000, this is optional.

Step 7 — Commit all changed files

git add src/TB11-01x32/csv.mnu src/TB11-01x32/csv.lsp
# Do NOT commit csv.mns/mnc/mnr — they're regenerated on each VM
git commit -m "feat: add Concrete Calculator to CV menu"

Scenario B: Update csv.cui (Modern AutoCAD Target)¶

The CUI file should be regenerated from the MNU whenever the menu changes, to keep the two in sync. There are three approaches:

Approach 1: CUIIMPORT (Recommended)

On an AutoCAD 2006+ installation:

Command: CUIIMPORT

Select csv.mnu. AutoCAD converts it to CUI XML format. Save the resulting csv.cui back to the repo.

Approach 2: Manual XML editing

Add a <MenuMacro> in the <MacroGroup> section and a <PopMenuItem> in the appropriate <PopMenu>. Follow the existing patterns (see CUI structure above). This is tedious but doesn’t require AutoCAD 2006+.

Approach 3: CUI Editor (Interactive)

In AutoCAD 2006+:

Command: CUI

Use the graphical Customize User Interface dialog. The warning at the top of csv.cui (“Do not edit… use the Customize User Interface dialog box”) refers to this tool.

Warning

Never edit csv.cui as master and assume the MNU will follow. The MNU is the source of truth for AutoCAD 2000. If you edit the CUI directly, you must back-port changes to csv.mnu manually, or the AutoCAD 2000 deployment will be out of sync.

Scenario C: Rename a Menu Item¶

  1. Edit the [&Label] text in csv.mnu

  2. Edit the matching ***HELPSTRINGS entry

  3. If maintaining CUI: update the <Name> and <NameRef> elements in csv.cui

  4. Delete csv.mns/csv.mnc/csv.mnr, reload

Scenario D: Restructure Submenus¶

This is the most complex change. In csv.mnu:

  • [->Label] opens a new submenu level

  • [<-Label] closes the current level (must be the last item in that submenu)

  • Submenu markers must balance: every [-> needs a matching [<-

In csv.cui:

  • Submenus are <PopMenu> elements referenced via <PopMenuRef>

  • Nesting is structural (XML parent-child), not marker-based

Any submenu restructuring requires changes in both csv.mnu and csv.cui, and the two formats represent nesting very differently. Test thoroughly.


Development Workflow: Menu Changes on Alpha VMs¶

For the current alpha testing cycle (raw .lsp source on VMs):

  DEV MACHINE                            ALPHA VM (108, 201, 202)
┌──────────────────┐                   ┌─────────────────────────┐
│                  │                   │                         │
│  1. Edit csv.mnu │                   │  4. git pull (nightly)  │
│     in VS Code   │                   │     or manual pull      │
│                  │                   │                         │
│  2. Edit csv.lsp │                   │  5. Delete csv.mns/mnc/ │
│     if new       │──── git push ────→│     mnr (if cached)     │
│     progcont     │                   │                         │
│                  │                   │  6. In AutoCAD:         │
│  3. Commit       │                   │     (load "csvmenu")    │
│                  │                   │     Menu refreshes!     │
└──────────────────┘                   └─────────────────────────┘

Tip

Quick test: After editing csv.mnu on the dev machine, you can SSH into a VM and manually trigger a git pull + menu reload without waiting for the nightly schedule.


Sync Status: MNU vs CUI¶

The v11 csv.mnu and csv.cui are currently in sync — the CUI was generated from the MNU and no independent edits have been made to either. Evidence:

  • All 38 macro UIDs match between files

  • Menu hierarchy is identical (verified against v11 architecture doc’s 40-path tree)

  • The **ConstructVision typo (missing ‘i’) is preserved in both files as <Alias>ConstructVision</Alias>

Note

The typo ConstructVision (vs ConstructiVision) exists in the MNU section header **ConstructVision and was carried into the CUI <Alias>. The menu title is correct in both: [&ConstructiVision] / <Name>&amp;ConstructiVision</Name>. The alias typo is cosmetic — it only affects AutoLISP (menucmd) addressing and could be fixed in both files simultaneously.


Related Documentation¶

  • Compilation Architecture — .lsp → .fas → .vlx pipeline

  • File Types Dictionary — Individual .CUI, .MNC, .MNR, .MNS, .MNU entries

  • v3.60 Menu File Family — v3.60 MNU vs MNS diff analysis

  • v3.60 csvmenu.lsp Analysis — v3.60 menu loader code walkthrough

  • v3.60 Menu Macros — v3.60 MNU macro inventory

  • v11 Architecture — Menu Structure — Complete 40-path menu tree with dialog routing

Next
File Creators Dictionary
Previous
AutoLISP Compilation Architecture
Copyright © 2026
Made with Sphinx and @pradyunsg's Furo
On this page
  • Menu System Architecture
    • The 6-File Menu Family
      • File Inventory (v11 / TB11-01x32)
      • Relationship Diagram
      • Which File Is “Master”?
    • Menu Evolution: v3.60 → v11
      • v3.60 Menu (7 items)
      • v11 Menu (38 macros, 40 click paths)
      • Macro Pattern Comparison
    • The progcont Dispatch Table
      • Non-progcont Commands
    • csvmenu.lsp — The Menu Loader
      • v3.60 Version (20 lines of code)
      • v11 Version (key differences)
    • csv.cui — The XML Menu (AutoCAD 2006+)
      • Structure
      • CUI vs MNU UID Mapping
      • CUI Generation History
    • Menu Update Procedure
      • Scenario A: Add/Remove/Edit a Menu Item (AutoCAD 2000 Target)
      • Scenario B: Update csv.cui (Modern AutoCAD Target)
      • Scenario C: Rename a Menu Item
      • Scenario D: Restructure Submenus
    • Development Workflow: Menu Changes on Alpha VMs
    • Sync Status: MNU vs CUI
    • Related Documentation