project.dcl — Project Selection Dialog¶
File: project.dcl
Version: v3.60
Category: Dialog Definitions
Size: 0.9 KB (27 lines)
Note
Project Navigation
Simple but critical dialog - determines whether user creates new project or opens existing one. Gateway to all ConstructiVision work.
Functional Purpose¶
What This Dialog Does¶
Project Workflow Selector
The project.dcl provides the project choice interface:
Prompts user decision - New or Existing project
Routes to appropriate workflow - new.dcl or file browser
Validates project selection before proceeding
Manages project context for entire session
User Need¶
Project Access Gateway
Users need clear decision point:
Create brand new project
Open existing project to continue work
Cancel if launched accidentally
Typical Workflow¶
Application Startup:
1. User launches ConstructiVision (CSV.lsp)
2. project.dcl opens (first dialog shown)
3. User sees prompt: "New Project or Existing Project?"
4. User choice:
Option A: [New Project] ? new.dcl ? create structure
Option B: [Existing Project] ? file browser ? open project
Option C: [Cancel] ? exit to AutoCAD
5. Project loaded ? Main menu (csvmenu) appears
Dialog Structure¶
Visual Layout¶
?? ConstructiVision -- Project Options ???????????????
? ?
? Do you want to start a New Project, or work on ?
? an Existing Project? ?
? ?
? [New Project] [Existing Project] [Cancel] [Help]?
? ?
???????????????????????????????????????????????????????
Simple 4-button interface - intentionally minimal for quick decision
Control Semantics¶
Integration with ConstructiVision¶
LSP Handler¶
Primary Handler: project.lsp
Key Logic:
(defun c:PROJECT ()
; Load project dialog
(load_dialog "project.dcl")
(new_dialog "project" dcl_id)
; Dialog returns pnl variable
(start_dialog)
(unload_dialog dcl_id)
; Route based on selection
(cond
((= pnl "new")
(new) ; Call new.lsp - create project
)
((= pnl "old")
(open-existing-project) ; File browser
)
((= pnl "cancel")
(princ "\nCancelled.")
)
)
)
(defun open-existing-project ()
; Show directory selection
(setq pjdir (getfiled "Select Project Directory" "" "dwg" 16))
(if pjdir
(load-project pjdir)
)
)
Integration Features:
? Simple routing logic
? Variable setting via actions
? Default button (Existing Project most common)
? Cancel safety mechanism
Called By¶
Primary Callers:
csv.lsp- Application startup (automatic)csvmenu.lsp- File ? Switch ProjectDirect command:
PROJECT
Workflow Position:
ConstructiVision Launch (csv.lsp)
?
project.dcl (Project Selection) ? YOU ARE HERE
?? [New] ? new.dcl ? Create project
?? [Existing] ? File browser ? Load project
?? [Cancel] ? Return to AutoCAD
Global Variables¶
Variables Set by Dialog Actions:
New Project Selected:
(set 'pnl "new") ; Flag for new project
Existing Project Selected:
(set 'pnl "old") ; Flag for existing project
Cancelled:
(set 'ld nil) ; Clear load flag
(set 'pnl "cancel") ; Cancel flag
Subsequent Variables (after routing):
pjname- Project name (from selected directory)curdir- Project directory pathproject-active- Flag indicating project loaded
Data Flow¶
CSV.lsp launches
?
project.dcl opens
?
User clicks button
?
Button action sets pnl variable
?
Dialog closes (done_dialog)
?
project.lsp evaluates pnl:
• "new" ? new.lsp
• "old" ? file browser
• "cancel" ? exit
?
Project loaded or created
?
csvmenu.lsp (main menu) activates
User Interaction Examples¶
Example 1: First Time User - New Project¶
Scenario: New user starting from scratch
1. User: Launches ConstructiVision
2. project.dcl: Opens automatically
3. Dialog: "New Project or Existing Project?"
4. User: Clicks [New Project]
5. System: Routes to new.dcl
6. User: Enters project name "First_Project"
7. System: Creates project structure
8. Result: Ready to create panels
Example 2: Returning User - Existing Project¶
Scenario: Continue work on yesterday’s project
1. User: Launches ConstructiVision
2. project.dcl: Opens
3. User: Clicks [Existing Project] (or just hits Enter - it's default)
4. System: Opens file browser
5. User: Navigates to C:\Projects\ABC_Building\
6. User: Selects project directory
7. System: Loads:
• Project settings
• Panel list
• Weld connections
• Defaults
8. Result: Project ready, panels accessible
Example 3: Accidental Launch - Cancel¶
Scenario: User opened ConstructiVision by accident
1. User: Accidentally runs CSV command
2. project.dcl: Opens
3. User: Realizes mistake
4. User: Clicks [Cancel]
5. System: Sets pnl="cancel", ld=nil
6. System: Returns to normal AutoCAD
7. Result: No project loaded, no changes
Special Features¶
Cancel Safety¶
Multiple cancel mechanisms:
:button{
key = "cancel";
is_cancel = true; ? ESC key activates
action = "(set 'ld nil)(set 'pnl \"cancel\")(done_dialog)";
}
Ensures:
ESC key works
Explicit cancel button
Both set proper flags
Safe return to AutoCAD
Design Philosophy¶
Simplicity is Key¶
Why so simple?
Critical decision point
Should not overwhelm user
Clear binary choice
Fast for experts
Obvious for beginners
Two Paths Forward¶
The dialog’s only job:
Question: "Which path?"
?? Path A: Create something new
?? Path B: Continue existing work
No complexity:
No options
No configuration
No confusion
Just a decision
Architectural Role¶
Position in Application¶
Application Launch
?
project.dcl (THE GATEWAY) ? YOU ARE HERE
??? New Project Path
? ?
? new.dcl ? Project Creation
?
??? Existing Project Path
?
File Browser ? Load Project
?
[Both paths converge]
?
csvmenu.lsp (Main Menu)
?
Panel Design Workflows
Critical Gateway Function¶
Why CRITICAL:
First user interaction after launch
Determines entire session context
No project = no work possible
Simple but essential
Impact:
Affects: Every subsequent operation
Controls: Which project is active
Manages: Session-wide context
Technical Notes¶
Dialog Attributes¶
project : dialog {
label = "ConstructiVision -- Project Options";
children_alignment = centered; // Center all elements
// Simple button row layout
}
Minimal Design¶
Intentionally small:
Only 27 lines of DCL
4 buttons total
1 text prompt
No complex controls
Philosophy:
Less is more at decision points
Reduce cognitive load
Enable fast choices
Common Issues & Solutions¶
Issue: User Confused Which to Pick¶
Solution: Help button explains:
New Project: Starting fresh, no existing files
Existing Project: Continue previous work
Issue: User Picks Wrong Option¶
Solution: Can always use File ? Switch Project
Issue: Cancel Doesn’t Work¶
Check:
is_cancel = trueattribute setAction properly sets variables
ESC key handled
Documentation Metadata¶
Analysis Date: 2026-01-20
Method: Manual enhancement with source analysis
Completeness: ? COMPREHENSIVE
Documentation Quality:
? Functional purpose (gateway decision)
? User workflows (all three paths)
? Design philosophy explained
? Architectural role clarified
? Integration with launch sequence
Enhancement Status: ? [5/20] COMPLETE
End of Document