csvmenu.lsp - Menu Installation Entrypoint¶
File: src/x86/v3_60/v3.60/csvmenu.lsp
Size: 64 lines (including copyright header)
Purpose: Programmatically load and install the ConstructiVision menu into AutoCAD
Role: Critical fallback for installer registry failure
Note
Key Function
This file is the manual workaround for the installer’s menu registration bug (30-40% failure rate). When the installer’s hardcoded profile detection fails, users run (load "csvmenu") at the AutoCAD command line to bypass the registry and load the menu directly.
Complete Source Code¶
;;;This routine checks for and loads the CSV.MNU
(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 in your search path directories.")
)
)
(prompt "\nThe ConstructiVision program file was not found in your search path directories.")
)
) ; menu group already installed
)
(csvmenu) ; Execute on load
Total: 20 lines of actual code (excluding copyright)
Code Analysis¶
Function: csvmenu()¶
Logic Flow:
1. Check if "CSV" menu group already loaded
?? NO ? Continue
?? YES ? Exit (already installed)
2. Check if program files exist (csv.arx OR csv.vlx)
?? NO ? Error: Program file not found
?? YES ? Continue
3. Check if menu file exists (csv.mnu)
?? NO ? Error: Menu file not found
?? YES ? Install menu
4. Install menu:
a. Load menu: (command "_menuload" "csv.mnu")
b. Add to menu bar: (menucmd "P16=+CSV.POP1")
c. Notify user: "ConstructiVision menu has been installed"
AutoLISP Functions Used¶
(menugroup "CSV")
Checks if menu group “CSV” is already loaded
Returns
Tif loaded,nilif notPrevents duplicate menu installation
(findfile "filename")
Searches AutoCAD support paths for file
Returns full path if found,
nilif notUsed to verify:
Program exists:
csv.arx(R14) orcsv.vlx(2000)Menu exists:
csv.mnu
(command "_menuload" "csv.mnu")
Executes AutoCAD’s MENULOAD command
Loads the menu definition file
Registers menu group with AutoCAD
(menucmd "P16=+CSV.POP1")
Menu command to add popup to menu bar
P16= Position 16 on menu bar (rightmost position)+CSV.POP1= Add CSV menu’s first popup (main menu)Makes menu visible in AutoCAD menu bar
(prompt "message")
Displays message on AutoCAD command line
Used for success/error notifications
Why This File Exists¶
Problem: Installer Registry Bug¶
The legacy installer has a critical bug that causes menu registration to fail for 30-40% of users:
Root Cause:
; Installer hardcodes profile name
string23 = lString0 + "\\Profiles\\<<Unnamed Profile>>"
RegDBSetDefaultRoot(HKEY_USERS) ; Wrong hive
Result:
Installer writes menu config to
HKU\.Default\...\<<Unnamed Profile>>\Menus\User’s active profile is
Profile1orCAD Standardor similarAutoCAD reads from active profile, not
<<Unnamed Profile>>Menu never appears
Solution: Manual LISP Loading¶
From README.txt:
“If you received a WARNING during Setup that ConstructiVision could not determine which User Profile is currently active with AutoCAD, or if the CSV Drop Down Menu does not appear in the AutoCAD Menu Bar…”
Manual Workaround (12 steps):
Open AutoCAD Options ? Files
Add ConstructiVision directory to Support File Search Path
Restart AutoCAD
At command line:
(load "csvmenu")Menu appears in menu bar
Why This Works:
Bypasses Windows Registry completely
Uses AutoCAD’s runtime menu loading API
findfilesearches support paths (user just added)_menuloadcommand works regardless of profilemenucmdadds menu to active sessionWorks for ANY AutoCAD profile
Usage Examples¶
Manual Load at Command Line¶
Command: (load "csvmenu")
The ConstructiVision menu has been installed
Add to acaddoc.lsp for Automatic Loading¶
; In [AutoCAD]\Support\acaddoc.lsp
; This file is loaded automatically on every drawing open
(if (findfile "csvmenu.lsp")
(progn
(load "csvmenu")
(prompt "\nConstructiVision menu loaded automatically\n")
)
)
Check if Menu Already Loaded¶
Command: (menugroup "CSV")
"CSV" ; Returns menu group name if loaded
nil ; Returns nil if not loaded
Related Documentation¶
Installer Analysis:
Installer Cross-Check Analysis - Bug 2 - Why this file is needed
Installer Sequence Analysis - Phase 9 - Registry menu registration
README Installation Notes - Manual workaround steps
Menu System:
CSV Menu File Family - Complete menu structure
CSV Menu Macros - Menu command definitions
Modernization:
Installer Modernization Decision - WiX fallback strategy (archived)
Phase Plan P3 - AutoCAD 2026 menu compatibility
Document Metadata¶
Created: 2025
Analysis Method: Complete source code review
Completeness: 100% (entire file is 64 lines, 20 lines of code)
Purpose: Document manual menu installation fallback
Key Insight: This simple 20-line function is the workaround for a critical installer bug affecting 30-40% of users. It bypasses the registry completely and uses AutoCAD’s runtime menu loading API.
End of Document