A native macOS application for creating architectural floor plans with precise measurements and elevation views.
- Interactive Drawing: Click and drag to draw walls on a grid-based canvas
- Snap to Grid: Automatically snaps to 12-inch (1-foot) grid for precise alignment
- Real-time Measurements: See wall dimensions as you draw
- Scale Support: Configurable scale (pixels per inch) for accurate representations
- Unit Support: Switch between Imperial (feet/inches) and Metric (meters/centimeters)
- Four Directions: Automatic generation of North, South, East, and West elevations
- Wall Heights: Configurable wall heights (default 8 feet)
- Visual Representation: Simple elevation drawings showing wall positions and heights
- Floor Plan Naming: Name your floor plans for easy organization
- Scale Adjustment: Zoom in/out to adjust working scale
- Statistics: View total number of walls and cumulative length
- Save/Load: Export and import floor plans as JSON files
- macOS 14.0 or later
- Xcode 15.0 or later
- Swift 5.9 or later
# Build the project
swift build
# Run the application
swift run- Open the project folder in Xcode
- Select the FloorPlan scheme
- Build and run (⌘R)
- Click once to set the starting point of a wall
- Drag to the ending point
- Release to create the wall
- Walls automatically snap to the grid for alignment
- Switch to the "Elevations" tab using the segmented control
- View all four elevation directions simultaneously
- Walls perpendicular to each viewing direction are shown
- Save: Click "Save" in the toolbar to export your floor plan as JSON
- Load: Click "Load" to import a previously saved floor plan
Use the left sidebar to:
- Change floor plan name
- Switch between Imperial and Metric units
- Adjust scale/zoom level
- View statistics
- Clear all walls
FloorPlan/
├── FloorPlanApp.swift # App entry point
├── ContentView.swift # Main view coordinator
├── Models/
│ ├── Wall.swift # Wall data model
│ └── FloorPlan.swift # Floor plan data model
└── Views/
├── FloorPlanCanvasView.swift # 2D drawing canvas
├── ElevationView.swift # Elevation view renderer
└── SettingsPanel.swift # Settings sidebar
- Start and end points (CGPoint)
- Thickness (default 6 inches)
- Height (default 96 inches / 8 feet)
- Calculated length and angle
- Collection of walls
- Scale (pixels per inch)
- Measurement unit (Imperial/Metric)
- Name and metadata
Potential features for future development:
- Door and window placement
- Room labeling and area calculation
- Multiple floor support
- 3D preview (basic wireframe)
- PDF export of plans and elevations
- Dimension lines and annotations
- Wall material/finish properties
- Furniture placement
- Print layouts
All rights reserved