From ce40e5092d7a8138159decc83d14d008e7f7b348 Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Fri, 1 May 2026 10:59:41 +0300 Subject: [PATCH] docs: rewrite README to document all features added since initial release Co-Authored-By: Claude Sonnet 4.6 --- README.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 713b5268..16d9f1cb 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,102 @@ # H7CAD -resim +H7CAD screenshot -A CAD application for 2D/3D drawing and design, built with Rust. +A CAD application for 2D drafting and 3D modeling, built with Rust. Reads and writes DWG and DXF files natively. ## Features -- 2D drafting and 3D modeling -- DXF file import/export -- GPU-accelerated rendering via WebGPU -- Snap and annotation tools -- Modular ribbon interface (Home, Annotate, Insert, View, Manage) +### File Formats +- **DWG** read/write (R13 through R2018) +- **DXF** read/write (R13 through R2018) +- **STL** export (`STLOUT` / `EXPORTSTL`) +- **STEP AP203** export (`STEPOUT`) +- **OBJ** import (`IMPORTOBJ`) +- **PDF** export (plot layouts to PDF) +- **WBLOCK** — write selected entities or a block to an external file +- **XREF** — attach, reload, and auto-resolve external references + +### 2D Drafting +| Command | Description | +|---------|-------------| +| `LINE`, `PLINE`, `RECTANG`, `POLYGON` | Basic geometry | +| `CIRCLE`, `ARC`, `ELLIPSE`, `SPLINE` | Curves | +| `HATCH`, `HATCHEDIT` | Hatch fills with pattern, scale, angle editing | +| `OFFSET`, `TRIM`, `EXTEND`, `FILLET` | Modify geometry (supports lines, arcs, ellipses, polylines, splines) | +| `BREAK`, `STRETCH`, `LENGTHEN` | Shape editing | +| `ARRAY`, `MIRROR`, `MOVE`, `COPY`, `ROTATE`, `SCALE` | Transformations | +| `EXPLODE` | Explode blocks, dimensions, polylines, mlines | +| `DDEDIT` | Double-click text editing | +| `MASSPROP` | Area, perimeter, centroid of selected entities | + +### 3D Modeling +| Command | Description | +|---------|-------------| +| `BOX`, `SPHERE`, `CYLINDER` | Solid primitives | +| `EXTRUDE`, `REVOLVE` | Profile-based solids | +| `LOFT` | Ruled-surface loft through cross-sections | +| `SWEEP` | Sweep a profile along a path | +| `ARRAY3D` | 3D array | +| ACIS tessellation | Renders `3DSOLID`, `REGION`, and `BODY` entities | + +### Annotations & Dimensions +- **Dimensions**: Linear, Aligned, Angular, Radial, Diameter, Ordinate — with full `DIMSTYLE` support (`DIMASZ`, `DIMSCALE`, `DIMEXO`, `DIMEXE`, and more) +- **Text**: `MTEXT`, `TEXT`, `DTEXT` with font browser (`STYLE DIALOG`) +- **Leaders**: `MLEADER` with straight and spline path types; `MLEADERSTYLE` manager +- **Tolerances**: GD&T feature control frames +- **Tables**: `TABLE` entity render; `TABLESTYLE` manager +- **MLine**: `MLINE` entity with `MLSTYLE` manager and `EXPLODE` support + +### Paper Space & Layouts +- Multi-tab layout system with model space and unlimited paper space tabs +- **Viewport projection**: Model content correctly projected into paper-space viewport rectangles +- **Camera persistence**: View position and zoom saved per layout; restored on file open and tab switch +- **Correct paper size**: Physical paper dimensions read from embedded PlotSettings (not drawing limits) +- Inline MSPACE overlay — enter a viewport with double-click; edit model entities in place +- `VPORTS` — preset viewport configurations (single, 2H, 2V, 4-way) +- `LAYOUTMANAGER` / `LAYOUTPANEL` — GUI layout manager +- `PLOTSTYLEPANEL` / `STYLESMANAGER` — plot style table editor (CTB/STB) +- `PRINT` — send layout to system printer + +### Blocks & References +- `INSERT` with attribute prompting (`ATTREQ`) +- `ATTEDIT` — edit block attribute values interactively +- `REFEDIT` / `REFCLOSE` — in-place block reference editing +- `XREF` — attach, reload, and resolve external DWG/DXF references +- `DATAEXTRACTION` — export entity property data to CSV + +### Snapping & Precision +- Object snaps: Endpoint, Midpoint, Center, Node, Quadrant, Intersection, Perpendicular, Tangent, Nearest, Insertion, and more +- Ellipse arc endpoints, LWPolyline arc midpoints, Hatch boundary points +- **Object Snap Tracking** (`OTRACK` / `F11`) +- **Polar Tracking** with configurable angle increment +- **Dynamic Input** overlay (`DYNMODE` / `F12`) +- Grid snap with adaptive spacing +- Command history navigation (↑ / ↓) + +### Rendering +- GPU-accelerated via WebGPU (wgpu) +- 4× MSAA anti-aliasing +- Orthographic and perspective camera +- ViewCube with face/edge/corner snapping +- **Wide polylines**: LWPolyline and Polyline2D filled strokes +- **Raster images**: GPU-textured quad pipeline (`IMAGE` command) +- **Wipeout**: Solid fill masking +- **Complex linetypes**: Text and shape elements rendered in linetype patterns +- White/black entity colors adapt to background luminance +- Per-viewport background color (`BACKGROUND`) +- Visual style selector (Wireframe, Shaded, etc.) +- X-ray ghost pass for selected wires occluded by geometry + +### UI +- Modular ribbon interface — Home, Insert, Annotate, View, Manage, Layout +- Command line with autocomplete and history +- Layer Manager with per-viewport freeze columns +- Properties panel +- `COLORSCHEME` — runtime theme switching +- `SHORTCUTS` — keyboard shortcuts panel +- `SPLINEDIT` — close, open, reverse spline control points +- UCS icon with 3D foreshortening and axis labels ## Installation @@ -24,6 +110,10 @@ flatpak install H7CAD.flatpak flatpak run io.github.HakanSeven12.H7CAD ``` +### Windows + +Download `H7CAD.exe` from the [latest release](https://github.com/HakanSeven12/H7CAD/releases/latest) and run it directly. + ### Build from Source Requirements: Rust 1.75+ @@ -31,7 +121,7 @@ Requirements: Rust 1.75+ ```bash git clone https://github.com/HakanSeven12/H7CAD.git cd H7CAD -cargo build --release +cargo build --release --bin H7CAD ./target/release/H7CAD ```