NetBox plugin: visual floor-plan management linked to Sites and Locations, with DXF/DWG import
Project description
netbox-cadplan
NetBox plugin for visual floor-plan management. A plan is attached to a
NetBox Site (required) and, optionally, to a Location within that site,
based on an imported DXF/DWG file. The plan is split into zones associated
with locations (descendant Locations of the plan's Location, or the whole
site if no Location is specified), with the SVG of each location displayed
in a dedicated tab on its NetBox page.
Compatibility
| Package | NetBox | Python |
|---|---|---|
| 0.2.x | 4.6.0 – 4.6.99 | ≥ 3.10 |
| 0.1.x | 4.6.0 – 4.6.99 | ≥ 3.10 |
Installation
1. Install the package
pip install netbox-cadplan
# or from source:
pip install git+https://github.com/SelfSimon/netbox-cadplan.git
2. Enable the plugin in NetBox
Add the plugin to configuration.py (or configuration/plugins.py depending
on your setup):
PLUGINS = [
# ... other plugins
'netbox_cadplan',
]
3. Run migrations and restart NetBox
python manage.py migrate netbox_cadplan
sudo systemctl restart netbox netbox-rq
Usage
- Import a DXF/DWG file to create a Plan, linked to a Site and optionally a Location, and pick the drawing layer that defines the floor's closed boundaries.
- The plan is automatically split into zones matched to Locations descending from the plan's scope. Each zone can be associated with a Location from the plan's own tab.
- Each Location gets a dedicated tab showing the SVG of its zone.
- Object placement: device types with a configured plan shape appear in an "Objects to place" list and can be dropped onto a zone, then dragged, rotated, and repositioned interactively on the canvas.
- Position by distance: move a placed object to an exact offset instead of dragging it by hand.
- Selecting an object highlights it and shows its properties (location, rotation, distances) in a side panel.
- Center view / fit-to-view controls keep the canvas readable regardless of the plan's real-world size, with theme-aware colors for labels.
- Plans can be re-exported to DXF once zones and layer selection are set.
Configuring device type plan shapes
To make a device type placeable on a plan, configure its shape (width, height, rotation handling) from the device type's edit page — devices without a configured shape show up as "unplaceable" in the plan editor with a direct link to that configuration screen.
License
MIT — see LICENSE.
Contributors
See CONTRIBUTORS.md.
Developer setup
Quick setup for contributors — creates a virtualenv, installs development
dependencies and installs the pre-commit git hooks.
PowerShell (Windows):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e ".[dev]"
pre-commit install
pre-commit run --all-files
POSIX (macOS / Linux):
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e '.[dev]'
pre-commit install
pre-commit run --all-files
If you prefer automation, run scripts/bootstrap.ps1 on Windows or
scripts/bootstrap.sh on POSIX systems to perform these steps.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netbox_cadplan-0.2.1.tar.gz.
File metadata
- Download URL: netbox_cadplan-0.2.1.tar.gz
- Upload date:
- Size: 76.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c088905e5a36a6904613f5220f87c7fc5ee1a0cdd3c636f8945f663cf780989
|
|
| MD5 |
1a7279d9181172d1f96508af38c48583
|
|
| BLAKE2b-256 |
88e1ca8f7c3c294fc2017bd87bd88ad59f8227ce60f3446418436153fc2173fc
|
Provenance
The following attestation bundles were made for netbox_cadplan-0.2.1.tar.gz:
Publisher:
publish.yml on SelfSimon/netbox-cadplan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbox_cadplan-0.2.1.tar.gz -
Subject digest:
8c088905e5a36a6904613f5220f87c7fc5ee1a0cdd3c636f8945f663cf780989 - Sigstore transparency entry: 2192740912
- Sigstore integration time:
-
Permalink:
SelfSimon/netbox-cadplan@e056110efa10504d1e44441f32d6a93b46f9f75a -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/SelfSimon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e056110efa10504d1e44441f32d6a93b46f9f75a -
Trigger Event:
push
-
Statement type:
File details
Details for the file netbox_cadplan-0.2.1-py3-none-any.whl.
File metadata
- Download URL: netbox_cadplan-0.2.1-py3-none-any.whl
- Upload date:
- Size: 85.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9634f2a5bad85c603bbbc800a6399c29a7fe45b4a996d57f25cf5473b0cb350f
|
|
| MD5 |
b255afefa873290e6a63838f33ac26db
|
|
| BLAKE2b-256 |
c60b07fbf7f77272754563d70571793b0e20fafb07b2f736b2a044db74ad16af
|
Provenance
The following attestation bundles were made for netbox_cadplan-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on SelfSimon/netbox-cadplan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbox_cadplan-0.2.1-py3-none-any.whl -
Subject digest:
9634f2a5bad85c603bbbc800a6399c29a7fe45b4a996d57f25cf5473b0cb350f - Sigstore transparency entry: 2192741330
- Sigstore integration time:
-
Permalink:
SelfSimon/netbox-cadplan@e056110efa10504d1e44441f32d6a93b46f9f75a -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/SelfSimon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e056110efa10504d1e44441f32d6a93b46f9f75a -
Trigger Event:
push
-
Statement type: