{"id":26664495,"url":"https://github.com/mustafakbaser/dxf-viewer","last_synced_at":"2025-06-29T04:38:57.363Z","repository":{"id":282686257,"uuid":"917531217","full_name":"mustafakbaser/DXF-Viewer","owner":"mustafakbaser","description":"A modern DXF file viewer and editor application with a clean, professional interface.","archived":false,"fork":false,"pushed_at":"2025-03-16T09:16:31.000Z","size":256,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T10:23:35.484Z","etag":null,"topics":["dxf","dxf-viewer","ezdxf","python","python-gui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mustafakbaser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-16T06:56:10.000Z","updated_at":"2025-03-16T09:16:34.000Z","dependencies_parsed_at":"2025-03-16T10:33:44.556Z","dependency_job_id":null,"html_url":"https://github.com/mustafakbaser/DXF-Viewer","commit_stats":null,"previous_names":["mustafakbaser/dxf-viewer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FDXF-Viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FDXF-Viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FDXF-Viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FDXF-Viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mustafakbaser","download_url":"https://codeload.github.com/mustafakbaser/DXF-Viewer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245500930,"owners_count":20625681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dxf","dxf-viewer","ezdxf","python","python-gui"],"created_at":"2025-03-25T16:35:49.450Z","updated_at":"2025-03-25T16:35:50.119Z","avatar_url":"https://github.com/mustafakbaser.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DXF Viewer\n\nA modern DXF file viewer and editor application with a clean, professional interface.\n\n![DXF Viewer](https://res.cloudinary.com/mustafakbaser/image/upload/v1742116434/DXF-Viewer-2_ylkr4j.png)\n\n## Features\n\n### Viewing and Navigation\n- Load and display DXF files with accurate rendering\n- Zoom in/out using mouse wheel\n- Pan by dragging with left mouse button\n- Automatic centering and scaling of loaded drawings\n- High-quality antialiasing for smooth rendering\n\n### Multi-Language Support\n- English and Turkish language options\n- Dynamic language switching without restarting the application\n- Language preference saved between sessions\n- Complete translation of all UI elements, menus, and messages\n- Easy to extend with additional languages\n\n### Layer Management\n- Show/hide individual layers\n- Select all or clear all layers with one click\n- Navigate between layers (previous/next)\n- Full support for layer colors (ACI and RGB)\n- Visual layer tree with color indicators\n\n### Selection and Editing\n- Create selection area with CTRL + left mouse button\n- Multiple entity selection (hold CTRL key)\n- Highlight selected entities\n- Edit entity properties (color, layer, geometry)\n- Delete selected entities\n\n### Supported DXF Entities\n- Lines (LINE)\n- Circles (CIRCLE)\n- Arcs (ARC)\n- Polylines (LWPOLYLINE)\n- Polygons (POLYLINE)\n- Splines (SPLINE)\n- Ellipses (ELLIPSE)\n- Points (POINT)\n- Text (TEXT)\n\n### Interface Features\n- Modern and user-friendly design\n- File information display\n- Layer tree view\n- Customizable toolbar\n- Fill mode for better visualization\n- Language menu for switching between English and Turkish\n- Persistent settings via JSON configuration\n\n## Requirements\n\n- Python 3.7 or higher\n- PyQt6\n- ezdxf\n- numpy\n\n## Installation\n\n### Option 1: Using pip (Recommended)\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/mustafakbaser/DXF-Viewer.git\ncd DXF-Viewer\n```\n\n2. Create a virtual environment (optional but recommended):\n```bash\npython -m venv venv\n\n# On Windows\nvenv\\Scripts\\activate\n\n# On macOS/Linux\nsource venv/bin/activate\n```\n\n3. Install the required packages:\n```bash\npip install -r requirements.txt\n```\n\n### Option 2: Manual Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/mustafakbaser/DXF-Viewer.git\ncd DXF-Viewer\n```\n\n2. Install the required packages manually:\n```bash\npip install PyQt6 ezdxf numpy\n```\n\n## Usage\n\n### Running the Application\n\n```bash\npython src/main.py\n```\n\n### Basic Operations\n\n1. **Opening a DXF File**:\n   - Click the \"Open File\" button\n   - Select a DXF file from your computer\n   - The file will be loaded and displayed in the canvas\n\n2. **Navigation**:\n   - Zoom: Use the mouse wheel\n   - Pan: Click and drag with the left mouse button\n   - Reset view: Right-click and select \"Reset View\" from the context menu\n\n3. **Layer Management**:\n   - Show/hide layers: Check/uncheck layers in the layer tree\n   - Select all layers: Click \"Select All\" button\n   - Hide all layers: Click \"Clear All\" button\n   - Navigate layers: Use \"Prev\" and \"Next\" buttons to cycle through layers\n\n4. **Entity Selection**:\n   - Select single entity: Hold CTRL and click on an entity\n   - Select multiple entities: Hold CTRL and drag to create a selection rectangle\n   - Clear selection: Right-click and select \"Clear Selection\"\n\n5. **Language Settings**:\n   - Change language: Go to Language menu and select English or Turkish\n   - Language preference is automatically saved for future sessions\n   - All UI elements will update immediately to the selected language\n\n6. **Entity Editing**:\n   - Edit properties: Select an entity, right-click and select \"Edit Properties\"\n   - Delete entities: Select entities, right-click and select \"Delete\"\n\n7. **Fill Mode**:\n   - Toggle fill mode: Click the \"Fill\" button to toggle fill mode for closed entities\n\n## Project Structure\n\n```\nDXF-Viewer/\n├── src/\n│   ├── main.py           # Application entry point\n│   ├── viewer.py         # Main window and application logic\n│   ├── dxf_handler.py    # DXF file operations\n│   └── widgets/\n│       ├── canvas.py     # Drawing canvas\n│       └── file_panel.py # File and layer management panel\n├── requirements.txt      # Package dependencies\n└── README.md             # This file\n```\n\n## Development\n\n### Building from Source\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/mustafakbaser/DXF-Viewer.git\ncd DXF-Viewer\n```\n\n2. Create a virtual environment:\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n```\n\n3. Install development dependencies:\n```bash\npip install -r requirements-dev.txt  # If you have a separate dev requirements file\n```\n\n4. Run the application:\n```bash\npython src/main.py\n```\n\n### Creating an Executable\n\nYou can create a standalone executable using PyInstaller:\n\n```bash\npip install pyinstaller\npyinstaller --onefile --windowed src/main.py\n```\n\nThe executable will be created in the `dist` directory.\n\n## Future Enhancements\n\n- [ ] Support for more DXF entities (MTEXT, DIMENSION)\n- [ ] Scale indicator\n- [ ] Measurement tools\n- [ ] Printing support\n- [ ] Export to different formats (PNG, PDF)\n- [ ] Multi-file support (tabs)\n- [ ] Undo/redo operations\n- [ ] Performance optimizations for large files\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Acknowledgments\n\n- [ezdxf](https://ezdxf.readthedocs.io/) for DXF file handling\n- [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) for the GUI framework\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafakbaser%2Fdxf-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmustafakbaser%2Fdxf-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafakbaser%2Fdxf-viewer/lists"}