Commit Graph

  • c25b6bc23a feat(ui): render DXF text annotations in CAD converter preview master aj 2026-04-29 21:45:44 -04:00
  • 1c994718fb feat(io): add DWG file import support via ACadSharp DwgReader aj 2026-04-27 22:58:26 -04:00
  • 9d58e6fba8 fix(ui): stay on drawings tab after DXF import aj 2026-04-25 23:34:05 -04:00
  • 2bae5340f0 test: add nest invariance tests for fill count across import orientations aj 2026-04-23 21:32:56 -04:00
  • 0b322817d7 fix(core): use chain tolerance for entity gap check to prevent spurious rapids aj 2026-04-23 21:32:08 -04:00
  • e41f335c63 feat: remove duplicate arcs matching circles on same layer during DXF import aj 2026-04-23 10:44:54 -04:00
  • 0ab33af5d3 feat: add WeldEndpoints to ShapeBuilder for gap repair on import aj 2026-04-23 10:40:43 -04:00
  • e04c9381f3 feat: add IComparable<Box> and comparison operators to Box aj 2026-04-23 10:36:23 -04:00
  • ceb9cc0b44 refactor: move Fraction from OpenNest.IO.Bom to OpenNest.Math aj 2026-04-23 10:33:57 -04:00
  • 4cecaba83a fix(core): emit line instead of arc for near-zero sweep to avoid full-circle misinterpretation aj 2026-04-23 08:50:38 -04:00
  • 4053f1f989 fix(core): arc bounding box inflated for near-zero sweep arcs aj 2026-04-23 08:20:39 -04:00
  • ca67b1bd29 fix(io): handle flipped OCS normal on DXF ellipse import aj 2026-04-23 08:01:45 -04:00
  • 199095ee43 fix(engine): canonicalize PlaceBestFitPairs builds to match BestFitCache frame aj 2026-04-20 09:43:56 -04:00
  • eb493d501a feat(engine): wrap single-item Fill with canonicalize/un-rotate bookends aj 2026-04-20 09:36:13 -04:00
  • 6c98732117 feat(engine): BestFitCache operates in canonical frame; TryPlaceBestFitPair builds from canonical drawing aj 2026-04-20 09:26:34 -04:00
  • a2e9fd4d14 feat(engine): extract ML features from canonical drawing frame aj 2026-04-20 09:23:21 -04:00
  • d228b6b812 refactor(engine): share MBR between PartClassifier and CanonicalAngle aj 2026-04-20 09:20:33 -04:00
  • c634aecd4b docs(core): refresh SourceInfo.Angle doc now that setter wiring lands aj 2026-04-20 09:18:54 -04:00
  • 14b7c1cf32 feat(core): store Source.Angle; recompute when Program changes aj 2026-04-20 09:13:37 -04:00
  • 402af91af5 feat(engine): add CanonicalFrame helper for drawing-to-canonical rotation aj 2026-04-20 09:06:30 -04:00
  • 9a6b656e3c feat(core): add CanonicalAngle helper for MBR-aligning angle aj 2026-04-20 08:57:03 -04:00
  • d2f9597b0c refactor(fill): use native entity geometry for linear copy distance aj 2026-04-16 23:26:21 -04:00
  • c40dcf0e25 chore: remove unused debug logging to desktop aj 2026-04-16 23:24:40 -04:00
  • 28653e3a9f feat(shapes): generate unique drawing names from parameters and add toolbar button aj 2026-04-16 15:48:45 -04:00
  • 7c3246c6e7 fix(cutting): restrict tabs to external perimeter and clarify tab UI aj 2026-04-16 08:55:30 -04:00
  • bd48f57ce0 feat(ui): distinct Dark palette and recolor drawings on scheme switch aj 2026-04-15 22:06:14 -04:00
  • a6ec21accc fix(ui): address code review issues in color scheme feature aj 2026-04-15 21:56:15 -04:00
  • 320cf40f41 feat(ui): ship Schemes folder for user-defined color scheme JSON aj 2026-04-15 21:52:45 -04:00
  • 3beca10429 feat(ui): add color scheme picker to Options dialog aj 2026-04-15 21:52:00 -04:00
  • 8bea5dac6c feat(ui): apply active color scheme at startup aj 2026-04-15 21:50:03 -04:00
  • 12f8bbf8f5 feat(ui): add ActiveColorScheme user setting aj 2026-04-15 21:49:31 -04:00
  • d15790b948 feat(ui): add ColorSchemeRegistry with Classic/Pastel/Dark built-ins aj 2026-04-15 21:48:46 -04:00
  • d80f76e386 feat(ui): add ColorScheme.Name/PartColors instance props and JSON serializer aj 2026-04-15 21:46:51 -04:00
  • 07bce8699a refactor(core): make Drawing.PartColors mutable for scheme overrides aj 2026-04-15 21:45:18 -04:00
  • 9b84508ff4 refactor(shapes): generalize OctagonShape to NgonShape aj 2026-04-15 13:42:02 -04:00
  • 6fdf0ad3c5 refactor(cnc): extract rapid enumeration into RapidEnumerator aj 2026-04-15 12:49:04 -04:00
  • 4f7bfcc3ad Merge remote-tracking branch 'origin/master' aj 2026-04-15 12:46:40 -04:00
  • 3c53d6fecd fix(engine): default FillContext.Policy to avoid null-deref in ReportProgress v0.2.0 aj 2026-04-15 06:28:58 -04:00
  • e239967a7b feat(cincinnati): emit SubProgramCall features as M98 hole calls aj 2026-04-15 06:17:31 -04:00
  • 9d57d3875a fix(cnc): offset SubProgramCall positions in Program.Offset aj 2026-04-15 06:17:26 -04:00
  • 0e299d7f6f feat(cincinnati): seed material library defaults and add selector dropdown aj 2026-04-15 06:16:29 -04:00
  • c6f544c5d7 feat(ui): populate material combobox from post processors aj 2026-04-15 06:12:54 -04:00
  • 9563094c2b fix(ui): show Drawings tab before Plates in EditNestForm aj 2026-04-14 09:10:58 -04:00
  • a3ae61d993 fix(cutting): emit open contours raw instead of applying lead-in/lead-out aj 2026-04-12 22:37:56 -04:00
  • 838a247ef9 fix(geometry): replace closest-point heuristic with analytical arc-to-line directional distance aj 2026-04-12 22:33:48 -04:00
  • a5e5e78c4e refactor(geometry): deduplicate axis branches in SpatialQuery.OneWayDistance aj 2026-04-12 21:58:45 -04:00
  • c386e462b2 docs(readme): add CAD converter section with screenshots aj 2026-04-12 21:36:39 -04:00
  • 2c0457d503 feat(ui): add bend line editing to CAD converter aj 2026-04-12 21:36:26 -04:00
  • b03b3eb4d9 fix(bending): detect bend lines on layer "0" in addition to "BEND" aj 2026-04-12 21:36:21 -04:00
  • 29c2872819 fix(geometry): add Entity.Clone() and stop NormalizeEntities from mutating originals aj 2026-04-12 21:35:13 -04:00
  • 3e96c62f33 docs(readme): reformat features as tables and document cutout-aware splitter aj 2026-04-10 22:55:11 -04:00
  • 6880dee489 fix(splitter): preserve disconnected strips and trim cuts around cutouts aj 2026-04-10 22:46:47 -04:00
  • 0e45c13515 feat(shapes): add PlateSizes catalog and wire Ctrl+P to snap-to-standard aj 2026-04-10 20:16:29 -04:00
  • 54def611fa refactor(ui): switch CreateShapeFromInputs to control-type branching aj 2026-04-10 17:52:03 -04:00
  • b1d094104a feat(ui): add filtered pipe size dropdown to shape library aj 2026-04-10 17:50:01 -04:00
  • 9d66b78a11 feat(ui): add bool checkbox support to ShapeLibraryForm aj 2026-04-10 17:47:36 -04:00
  • eddbbca7ef test(shapes): verify PipeFlangeShape JSON loading and shipped config integrity aj 2026-04-10 17:45:46 -04:00
  • 4e7b5304a0 chore(shapes): migrate flange config to PipeFlangeShape schema aj 2026-04-10 17:42:16 -04:00
  • 06485053fc test(shapes): cover empty-string PipeSize in addition to null aj 2026-04-10 17:39:50 -04:00
  • 92a57d33df feat(shapes): add pipe bore, clearance, and blind flag to PipeFlangeShape aj 2026-04-10 17:36:10 -04:00
  • 6adc5b0967 refactor(shapes): rename FlangeShape to PipeFlangeShape aj 2026-04-10 17:33:28 -04:00
  • d215d02844 style(shapes): remove redundant usings and document PipeSizes bound aj 2026-04-10 17:31:22 -04:00
  • 57863e16e9 feat(shapes): add ANSI pipe OD lookup table aj 2026-04-10 17:27:25 -04:00
  • 091e750e1b chore(cad-importer): remove dead code and cover named detector branch aj 2026-04-10 14:13:44 -04:00
  • 87b965f895 refactor(ui): use CadImporter in BomImportForm aj 2026-04-10 14:11:49 -04:00
  • 08f60690a7 docs: document CadImporter service in CLAUDE.md aj 2026-04-10 13:27:46 -04:00
  • a4609c816c refactor(ui): use CadImporter.BuildDrawing in CadConverterForm.GetDrawings aj 2026-04-10 13:24:26 -04:00
  • 5a4272696e refactor(ui): use CadImporter.Import in CadConverterForm.AddFile aj 2026-04-10 13:18:49 -04:00
  • 2cf03be360 refactor(training): use CadImporter for DXF import aj 2026-04-10 13:13:00 -04:00
  • 041e184d93 refactor(api): use CadImporter for DXF import in NestRunner aj 2026-04-10 13:08:35 -04:00
  • 26df3174ea refactor(mcp): use CadImporter for DXF import aj 2026-04-10 13:05:28 -04:00
  • 0f5aace126 refactor(console): use CadImporter for DXF import aj 2026-04-10 13:03:16 -04:00
  • 399f8dda6e feat: add CadImporter.ImportDrawing convenience method aj 2026-04-10 12:59:06 -04:00
  • d921558b9c feat: add CadImporter.BuildDrawing stage aj 2026-04-10 12:51:58 -04:00
  • bf3e3e1f42 feat: add CadImporter.Import stage with bend detection aj 2026-04-10 12:37:12 -04:00
  • e120ece014 feat: add CadImportResult data object for CadImporter aj 2026-04-10 12:28:17 -04:00
  • 264e8264be feat: add CadImportOptions for CadImporter service aj 2026-04-10 12:25:04 -04:00
  • 24babe353e fix: show both offset and rotation in SubProgramCall.ToString aj 2026-04-10 08:37:46 -04:00
  • e63be93051 fix: emit G52 bracket for hole sub-program calls aj 2026-04-10 08:21:15 -04:00
  • ba3c3cbea3 fix: draw sub-program rapid directly to lead-in pierce aj 2026-04-10 08:17:35 -04:00
  • 572fa06a21 fix: track tool position through sub-programs in ConvertMode aj 2026-04-10 07:51:51 -04:00
  • a6c2235647 fix: let DrawRapids track actual tool position through sub-programs aj 2026-04-09 18:26:39 -04:00
  • 5c918a0978 fix: draw rapid move to hole center before sub-program lead-in aj 2026-04-09 17:46:44 -04:00
  • 92461deb98 fix: apply SubProgramCall offset additively and restore curpos after expansion aj 2026-04-09 17:40:05 -04:00
  • bc859aa28c feat: handle SubProgramCall offsets in BoundingBox and Rotate aj 2026-04-09 14:47:40 -04:00
  • 09eac96a03 feat: handle SubProgramCalls in Cincinnati post feature splitting aj 2026-04-09 14:44:58 -04:00
  • df65414a9d feat: serialize and deserialize hole sub-programs in nest file format aj 2026-04-09 14:40:13 -04:00
  • 4aed231611 feat: emit SubProgramCalls for circle holes in ContourCuttingStrategy aj 2026-04-09 14:35:56 -04:00
  • c641b3b68e feat: expand SubProgramCalls with Offset in ConvertProgram aj 2026-04-09 14:31:13 -04:00
  • f3b27c32c3 feat: add SubPrograms dictionary to Program with deep-copy support aj 2026-04-09 14:28:37 -04:00
  • c270d8ea76 feat: add Offset property to SubProgramCall for hole positioning aj 2026-04-09 14:26:55 -04:00
  • de6877ac48 feat: add option to round lead-in angles for circle holes aj 2026-04-09 12:41:33 -04:00
  • 3481764416 perf: use perimeter-only drawing in best fit pair evaluation aj 2026-04-09 12:14:02 -04:00
  • 640814fdf6 fix: marshal timer callbacks to UI thread to prevent GDI+ threading exception aj 2026-04-09 10:41:18 -04:00
  • 6a30828fad feat: optimize external lead-in placement using next-part pierce points aj 2026-04-09 10:33:55 -04:00
  • 786b6e2e88 fix: show cutting parameters dialog before assigning lead-ins v0.1.0 aj 2026-04-08 14:32:41 -04:00
  • ba89967448 fix: respect suppression state in filter panel and guard DetermineWinding aj 2026-04-08 13:58:11 -04:00
  • b566d984b0 fix: preserve suppression state when reopening converter aj 2026-04-08 13:32:18 -04:00
  • c1e6092e83 feat: add entity-based suppression with stable GUIDs aj 2026-04-08 13:25:48 -04:00
  • df86d4367b fix: update drawings in-place when editing in converter so parts reflect changes aj 2026-04-08 12:58:51 -04:00