Commit Graph
506 Commits
Author SHA1 Message Date
Hakan SevenandClaude Opus 5.5 17d2954098 Cargo: codec ab2eecd, kernel bf44e68, graph 194e619
DWG layout owners and the overall paper-space viewport read back as
written (opencadcodec#78, opencadcodec#80).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 11:07:37 +03:00
Hakan SevenandClaude Opus 5.5 1bf584a1c1 Cargo: codec 937745d, kernel 86497ae, graph 81bf45f
DXF drawing properties (opencadcodec#98) and spline parameterization
flags (opencadcodec#99).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:57:57 +03:00
Hakan SevenandClaude Opus 5.5 ac086def56 review(#1653): upstream pins, registered expression xdata, table apply refreshes sweeps
- Cargo: drop the fork patches; codec 8e93175, kernel 0665fc9, graph
  3b91e67 in every manifest and lock.
- A swept surface's expression link is written through set_entity_xdata,
  so OCS_SWEEP_EXPRESSION has its APPID record and the record its handle.
- Applying the whole named-parameter table also rebuilds the swept
  surfaces linked to expressions, not only a single-row edit.
- swept_surface_entity keeps its doc comment.
- The native-constraint tests find a scope's network through its own
  dictionary, where it is now stored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:38:17 +03:00
ramox81andClaude Opus 5.5 07499968d8 Sweep spatial profiles as surfaces, keep swept surfaces linked to expressions
A closed 3D polyline profile that does not lie in one plane sweeps a
surface with the reference's refusals. Swept surfaces made with an
Expression scale or twist follow the named parameters, and reference
surfaces linked through their associative action are picked up on open.
Saving keeps the associative actions the constraint graph does not
rebuild and stores each scope network through its own dictionary.
Kernel 23138fc, codec 64fe2a6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:47:30 +03:00
ramox81andClaude Opus 5.5 0c3ca96822 SWEEP: sweep from the picked path end; kernel run faces and placed ends
- An open path is swept from its end nearest the pick point (in plan), as
  the reference does; the record keeps the original path and the placed
  frame marks the start.
- Kernel from ramox81/cadkernel 1df75f5: one face per path run for
  twisted, scaled and spline sweeps, placed records swept from the placed
  end, end caps without pcurves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:34:34 +03:00
Hakan SevenandClaude Opus 5.5 d1f3bf3013 Cargo: codec 063c106, kernel 3f3781a, graph ca3e6a2
Solid histories with boolean steps: merged graphs, tree reads, tree
rebuilds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:14:13 +03:00
Hakan SevenandClaude Opus 5.5 893ea7e605 Cargo: codec 3bafbc9, kernel 4d08dd4, graph bee971d
Mirrored dimension text keeps its direction; polyline arc segments offer
their quadrants.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:50:06 +03:00
Hakan Seven 0149a276ef Merge pull request #1632 from ramox81/codex/sweep-miter-history
Sweep history records in the reference layout.

Pins resolved to upstream: codec bff95f5 (#93, #94, #95, #96, #97 and
review fixes), kernel 6146d31 (#75 and review fixes), graph 9635ba7.
2026-10-06 21:09:40 +03:00
Hakan SevenandClaude Opus 5.5 4f0040b542 Cargo: kernel e13f37f, graph f8bbf40; hole/boss edge blends, local fillets, sphere-cylinder booleans; DWT in web open dialog
- Fillet/chamfer hole and boss rims, edges of non-convex bodies, and a
  chamfer next to a fillet (and the reverse).
- Fillet after an extruded PRESSPULL: booleans now join coplanar faces.
- Union/subtract/intersect of a sphere with an off-axis cylinder.
- Web open dialog lists drawing templates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:08:42 +03:00
Hakan SevenandClaude Opus 5.5 1eae36e726 Cargo: codec 76d2a1c, kernel e652b4d, graph 0545fa9; text styles, templates, solid edges
- Text styles keep their TrueType typeface through save and reopen (codec
  reads and writes the STYLE record's ACAD extended data) (#1633)
- Unnamed shape-file entries no longer show in text style lists (#1634)
- Save As offers DWT 2018; NEW asks for the template to start from, while
  Ctrl+N and the quick-access New run QNEW with the default template (#1635)
- An edge next to an earlier fillet of the same radius rounds together with
  it (kernel); the solid stays drawn and pickable while edges are chosen
  (#1625, #1107)
- A full cache rebuild drops the B-rep cache too, so an undone fillet does
  not come back with the next edge operation (#1107)
- Selected solids in shaded styles highlight only their visible edges (#1031)
- VIEW ISO / SWISO / SEISO / NEISO / NWISO snap to the isometric corners

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:32:43 +03:00
ramox81andClaude Opus 5.5 632540efff Sweep history records in the reference layout; kernel and codec revs
New sweep records store the source and placed profile frames, the
default mitred joint, groups 292-294 and a 3D polyline path as a wire
body, so the reference re-evaluates them. Builds against the sweep
history codec and kernel revisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:33:47 +03:00
Karim Jerbi abf302eba5 feat(gpu): route legacy hardware to OpenGL, add hardware info to About, and expose Graphics options tab 2026-10-06 12:23:59 +01:00
Hakan SevenandClaude Opus 5.5 81bb8d48cf Cargo: codec aad7053, kernel 1a52eaf, graph 263de59; honour viewport clipping
Brings codec PRs #84 (cross-version visual styles, table styles,
subentity managers), #88 (viewport clipping flag, DXF boundary handle),
#89 (DXF viewport snap/twist in degrees) and #92 (field format codes,
event updates).

With #88 a viewport keeps a stored boundary whether or not clipping is
on, so a linked boundary alone no longer means "clipped": rendering,
paper picking, VPCLIP and the Clipped property check the clipping flag
too, and VPCLIP / MVIEW Object and Polygon set it. Before, OCS never set
the flag, so its clipped viewports opened rectangular elsewhere.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 13:57:55 +03:00
Hakan SevenandClaude Opus 5.5 2dfa9f3f2a Cargo: codec 1ca7d33 (acadrust 0.6.0 sync), kernel 7fb0abb, graph d7908a8
The codec now carries upstream acadrust 0.6.0 (foldhash, thiserror 2,
MLINE / legacy class / layer handle fixes). Its new Spline::dwg_scenario
is serde-skipped, so the Python plugin's generated entity records could
not name it; they now take such fields from the type's Default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 11:06:44 +03:00
Hakan SevenandClaude Opus 5.5 43a1d3ebf6 Cargo: codec 04b26f2, kernel 16059db, graph e7f8b45
#1617 pinned the codec at ramox81/cadcodec through a [patch] block. Its
codec PR (#83) is merged upstream together with #85 and #86, so every
manifest now pins the upstream revision and the patch is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:30:22 +03:00
ramox81andClaude Opus 5.5 024101afe8 Name the center mark/line action body in the associative data rows
The codec now reads AcDbCenterMarkActionBody and AcDbCenterLineActionBody
as a SmartCenterActionBody variant; the Properties associative-data rows
label it "Center Mark/Line Action". The codec dependency is patched to the
fork commit that adds the variant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:30:22 +03:00
Hakan Seven 7d5ee91665 Release v2026.40.1 2026-10-05 16:07:00 +03:00
Hakan SevenandClaude Opus 5.5 4cfcc9dc38 chore: bump codec fe69506, kernel ae28f66, graph 892f942
The codec writes R2018 AuxHeader maintenance fields as RL, so AutoCAD no
longer reads a 2018 save as student-made. The kernel drops zero-area
spikes before triangulating, so a hatch whose boundary folds back on
itself fills on screen instead of vanishing.

Fixes #1564
Fixes #1569

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 20:44:08 +03:00
github-actions[bot] 8e122a4e34 Release v2026.40 2026-10-04 16:40:44 +00:00
Hakan SevenandClaude Opus 5.5 54a4a02d62 Merge PR #1589 from ramox81/codex/history-frame-lift: centre-framed boxes and wedges; no double transform after ACIS lift
The PR pinned codec and kernel to its fork through [patch]; codec #77 and
kernel #73 are merged upstream, so the patch sections are replaced by
the upstream pins (codec 8d23408, kernel d22a270, graph 9b5ae39) in this
same commit: the kernel now applies the body transform during the lift,
and an OCS without this PR's change would apply it twice. The new codec
also brings AssocCurveValue, registered with the plugin API's type
registry, and EmbeddedEntity::Body, named as a polyline profile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:08:19 +03:00
ramox81andClaude Opus 5.5 07facf465c fix(solids): box and wedge histories framed at the bounding-box centre; no second transform after ACIS lift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:10:37 +03:00
Hakan Seven 0de1e91f99 Merge PR #1585 from ramox81/codex/field-command: FIELD command and Field dialog; attribute definition field buttons
The PR pinned the codec to its fork through [patch]; codec #75 is merged
upstream and main already points at it, so the patch section is dropped.
The two windows-sys features it adds (Globalization, Identity) stay.
2026-10-02 14:14:15 +03:00
Hakan SevenandClaude Opus 5.5 2c7e4355b5 chore: bump codec d96e3fa, kernel 9cdd36d, graph 10d0858
Codec PRs #75 (field authoring API) and #76 (solid history evaluation
graphs, ACSH layouts); kernel PR #71 (sweep history with a placed profile).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:09:23 +03:00
ramox81andClaude Opus 5.5 a735b10b34 feat(field): Formula, Hyperlink and plot fields; local-time field dates, file times and display name; header dates on save
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:38:49 +03:00
ramox81 762cf1e7e4 Merge remote-tracking branch 'origin/main' into codex/field-command
# Conflicts:
#	src/ui/window/attdef_dialog.rs
2026-10-02 10:46:53 +03:00
Hakan SevenandClaude Opus 5.5 558b5f6526 fix(attdef): SVG dialog buttons, upper-case tags from Properties, Cargo.toml blank line
#1574's dialog drew its pick, close, field and editor buttons with glyph
text (⌖ × ƒ …) that renders as tofu where the font lacks it; they use the
snap and close SVG icons and plain ASCII now. A tag set from Properties is
stored upper case like one from the dialogs, and the stray blank line the
PR left in Cargo.toml is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:20:34 +03:00
ramox81andClaude Opus 5.5 f830084be7 FIELD: codec field fixes, six-decimal real system variables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:14:54 +03:00
ramox81andClaude Opus 5.5 87211f4654 FIELD: Field dialog, FIELD command and the ATTDEF field buttons
A Field dialog with the fields the application evaluates and the
reference format choices, FIELD placing a field as multi-line text, the
attribute definition dialogs' field buttons, field attachment on commit,
system variable / file size / regional date providers for field
evaluation, and the codec patch with the field authoring API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:56:54 +03:00
ramox81 53f2983e9c Merge remote-tracking branch 'origin/main' into codex/attdef-parity
# Conflicts:
#	Cargo.lock
#	src/modules/draw/draw/attdef.rs
2026-10-02 09:09:21 +03:00
Karim Jerbi 02c470aac7 feat(pdf): searchable text layer with per-style subset font embedding
Real BT/Tj text objects ride alongside the vector outlines (Tr 3,
zero visual change): runs preserved at layout time, TTF styles embedded
as allsorts subsets with ToUnicode, width-matched Tm, clip-culled.
WireModel literals moved to ..Default::default() tails.
2026-10-01 23:30:35 +01:00
Hakan SevenandClaude Opus 5.5 443b935a3f chore: bump codec d28fd71, kernel a03e4f0, graph 79bdc4b
Codec: PRs #71-#74 merged (MPOLYGON layout, multiline ATTDEF/ATTRIB DXF,
DXF MATERIAL/ACSH matrix, restorable SAT/SAB + history roots) and issues
#55 #64-#69 fixed. EntityType now boxes Surface, Extended, Table,
MultiLeader and Helix (2344 B -> 848 B per entity): construction sites
wrap in Box, the entity traits forward through Box, and the python
plugin generator converts with into(). Kernel: PR #70 (cuboid ring
winding).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 00:08:55 +03:00
Hakan SevenandClaude Opus 5.5 f08eb77b97 chore: bump kernel 8b4980b, graph 5384cbe (#1563 boolean speed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:23:19 +03:00
Hakan SevenandClaude Opus 5.5 c8caac2e10 chore: bump kernel 605612f, graph efe8b2c (#1563 booleans)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:19:05 +03:00
ramox81andClaude Opus 5.5 c5790c74a9 ATTDEF: dialog, -ATTDEF prompts, tag display, Properties and ribbon
Attribute Definition dialog and Edit Attribute Definition dialog, -ATTDEF
with the reference prompts and modes (AFLAGS), tag shown in the drawing,
justification-aware grips, reworked Properties with validation, Home Block
slide-out and Insert Block Definition panel, and the codec patch for
ATTDEF DXF output and the R2013+ solid wire cache.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:55:32 +03:00
Hakan SevenandClaude Opus 5.5 9fc4e381b3 chore: bump kernel 7d106bf, graph 9c3af92 (#1563 booleans)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:38:32 +03:00
Hakan SevenandClaude Opus 5.5 3dcebf0dc6 Merge pull request #1553 from ramox81/codex/pointcloud-attach
Point clouds: drawn from their scans, attached, cropped and stylized.

The fork's codec patch is resolved to the upstream pins: the point cloud
records landed in opencadcodec 5ef9376, carried through opencadkernel
68eeda1 and opencadgraph e204966.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:49:25 +03:00
Hakan SevenandClaude Opus 5.5 0aefc5ff79 chore: bump kernel c637716, graph dd40a10 (#1563 folding tool)
Every face of the #1563 folding tool draws (balls bounded only by slits,
periodic spline edges stored reversed), and its bearings, hubs, washers
and shafts union and subtract: coaxial torus/sphere/cone intersections,
ray casts through tori and whole-surface faces, annulus imprints.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:20:21 +03:00
Hakan SevenandClaude Opus 5.5 9c4aa5f896 chore: bump codec fe3984f, kernel 9300a30, graph 5260f33 (condominium solids draw every face)
The #1538 drawing's solids now draw every face: extrusion, sum and
offset surfaces and summary-only intcurves are read, vertex blends are
filled over their boundary, and the mesher closes boundaries fitted to a
few thousandths, notched cylinders and torus bands.

Fixes #1538

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 18:59:27 +03:00
Hakan SevenandClaude Opus 5.5 74c48ff5e3 chore: bump opencadkernel to ea5f291, opencadgraph to 60e7aef
Brings the #1538 NURBS face fixes: reversed intcurves, period-folded
explicit pcurves, and pcurves cut to their edge instead of dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:54:35 +03:00
Karim Jerbi 046196a5d5 perf(cargo): tune dev and test profiles for faster linking and smaller binaries
Sets debug = 1 on dev and test profiles to emit line tables only, reducing debug executable sizes by ~50% (~700 MB per binary) and substantially cutting linker memory overhead and disk I/O.

Sets opt-level = 2 on external dependencies in dev mode ([profile.dev.package.*]) so cached third-party libraries run optimized without affecting developer code compilation speeds, improving test execution speed by ~4.6x.

Release mode ([profile.release]) remains completely untouched with full -O3 optimizations.
2026-09-30 15:16:10 +01:00
Karim Jerbi 53ff62fc3d test: consolidate integration test suites into a single test runner
Disables Cargo's automatic test target discovery (autotests = false) and gathers all 24 integration test suites under a single integration test target in tests/integration.rs.

This reduces the number of separate integration test binaries from 24 to 1 across all platforms, eliminating redundant linker invocations and peak memory pressure during cargo test while significantly improving build and test times.
2026-09-30 14:23:42 +01:00
Hakan SevenandClaude Opus 5.5 47f3e2e8ef fix(solids): a 3D drawing with bad pcurves opens instead of hanging
Two causes behind the load stalling at the scene-cache step:

- Solids were fitted to the ACIS header's first tolerance-line value,
  which is the millimetres-per-unit scale (25.4 in this inch drawing,
  1 in most), not a tolerance. It is now resabs, the second value.
- The kernel (37b6902) drops pcurves that miss their edge and caps the pcurve
  walk, so a solid carrying a bad pcurve no longer refines an edge
  hundreds of thousands of times. Graph b741bd6.

The attached drawing now meshes all 76 solids in 3.4 s (release) and
opens in 19 s in a debug build.

Fixes #1538

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:55:28 +03:00
ramox81andClaude Opus 5.5 09e9e44c19 Point clouds: scan and region visibility in the cloud record
The manager's switches write the cloud's hidden scans (by the scan
identifier its project and scan file carry) and hidden regions (the
unassigned points are region 0), as the reference stores them, instead
of extended data. A parent switch shows mixed while some of its rows
are on. A cloud that shows none of its points draws its extents box.
The codec reads and writes both lists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:38:45 +03:00
Hakan SevenandClaude Opus 5.5 6dbdeb62e8 chore: bump codec 54e6fa1, kernel 019d3b1, graph 455c878 (DXF shape-file styles)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:19:51 +03:00
ramox81 3afd547e28 Merge remote-tracking branch 'origin/main' into codex/pointcloud-attach
# Conflicts:
#	Cargo.lock
2026-09-30 09:15:26 +03:00
Hakan SevenandClaude Opus 5.5 7ea5c3d459 chore: bump codec 8464e0a, kernel 7dc1e79, graph 2e40a7b (ellipse transform)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 22:58:12 +03:00
ramox81andClaude Opus 5.5 e9c4e501db Point clouds: drawn from their scans, placed, cropped and attached as the reference does
Scans (.rcs) and projects (.rcp) are read and their points drawn as
screen-sized dots, coloured by the cloud's stylization. The cloud's
placement carries its scale and rotation; its extents and crops stay in
the scan's coordinates. A missing scan shows the extents with the saved
path. -POINTCLOUDATTACH / POINTCLOUDATTACH, POINTCLOUDCROP and the
POINTCLOUD* settings follow the reference's prompts and messages, the
Properties list is the reference's, and a locked cloud is left alone by
edits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 17:08:46 +03:00
Hakan SevenandClaude Opus 5.5 5e8b86df65 chore: bump kernel 52a9ebe, graph 597c8b8 (sphere booleans)
Booleans now cut a sphere wherever the other solid crosses it — box
edges and corners, planes through its centre, another sphere, a
cylinder on its axis — instead of refusing or keeping the wrong piece.
Reported in discussion #1499.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 08:07:59 +03:00
Hakan SevenandClaude Opus 5.5 a8aa402fb7 chore: bump codec cdf2277, kernel 8fe5928, graph fc936b6 (#1436 image scale)
Fixes #1436

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 18:16:10 +03:00
Hakan SevenandClaude Opus 5.5 f0526bbe19 chore: bump codec e03eccb, kernel 29e1bec, graph 044998b (#1438 QGIS DXF layouts)
Fixes #1438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 18:13:23 +03:00