070a211c69
fix(nxopen): simplify sketch extrude and correct rule/builder APIs
2026-02-17 00:55:36 +00:00
4c3457c17c
fix: add missing NXOpen.Features and NXOpen.GeometricUtilities imports
...
NXOpen submodules must be imported explicitly in NX's Python
environment - they're not accessible as attributes of the
parent module.
2026-02-17 00:46:50 +00:00
ecba40f189
feat(import_profile): auto-extrude after sketch creation
...
Full cycle now automated:
1. Delete old extrude (if exists)
2. Delete old sketch (try ReplaceFeatureBuilder first, fallback to delete)
3. Create new sketch with rib geometry
4. Extrude new sketch by rib thickness along face normal
5. Name both features for identification on next iteration
Rib thickness read from profile JSON (parameters_used.thickness)
with fallback to geometry JSON or default 10mm.
No more manual extrude step needed between iterations.
2026-02-17 00:40:00 +00:00
515eef145f
feat(import_profile): use ReplaceFeatureBuilder for sketch replacement
...
Replaces naive ReplaceEntity approach with NX's proper
ReplaceFeatureBuilder API. This mirrors the interactive
right-click → Replace Feature workflow:
- SelectFeature: old sketch to replace
- ReplacementFeature: new sketch taking over
- DoAutomaticGeomMatch: auto-maps curves
- DeleteOriginalFeature: removes old after remap
- Fallback: manual delete if builder fails
All downstream features (extrude, trim) automatically
re-reference the new sketch.
2026-02-16 23:36:14 +00:00
c4d98ee97c
Importer: rename sketch feature + replace/delete old sketch on update
2026-02-16 22:00:18 +00:00
1bfc747cf9
Fix importer: always create new sketch + generate sandbox 2 rib profile (11 pockets)
2026-02-16 21:49:07 +00:00
c5226084fe
Generate sandbox 2 rib profile (11 pockets, validated)
2026-02-16 21:33:58 +00:00
98e4b2be02
Add sandbox 2 rib profile geometry
2026-02-16 21:27:27 +00:00
379801c8aa
demo: cantilever scenario ready for NX test (52 pockets, 343 entities)
...
rib_profile_sandbox_1.json now contains the cantilever demo profile.
Also includes 4 demo scenarios with density heatmaps + profiles.
2026-02-16 21:15:09 +00:00
1021f57abc
fix(pockets): skip pocketing in high-density zones (eta > eta_solid)
...
High density (η > 0.7) means high stress → leave solid, no pocket.
Only low-density regions get lightweighted.
Scenario comparison with s_min=30, s_max=70:
- Baseline uniform (w=0.5): 78 pockets, 2886g
- Bottom-right heavy: 41 pockets, 3516g (bottom stays solid)
- Left-side mount: 27 pockets, 3799g (left stays solid)
- Center pressure: 15 pockets, 4295g (center stays solid)
2026-02-16 21:05:56 +00:00
4f051aa7e1
refactor(triangulation): hex grid isogrid layout replaces constrained Delaunay
...
Complete rewrite of triangulation engine:
- Regular hexagonal-packed vertex grid (equilateral triangles)
- Density-adaptive refinement: denser near holes, coarser in open areas
- Boundary-conforming vertices along frame edge and hole keepouts
- Delaunay on point set + clip to valid region (inside frame, outside keepouts)
- Result: proper isogrid layout, 87 pockets from 234 triangles
- 553 NX entities, min fillet 4.89mm, mass 2770g
- No more dependency on Shewchuk Triangle library (scipy.spatial.Delaunay)
2026-02-16 20:58:05 +00:00
239e2f01a9
tune(brain): uniform triangulation + bigger spacing for r_f=6mm fillets
...
- Switched to uniform triangulation (no density-adaptive refinement for
initial pass — saves that for stress-informed iterations)
- s_min=45mm, s_max=55mm (was 12/35) — larger triangles fit 6mm fillets
- Boss keepout circles: 12 segments (was 32) — less boundary clutter
- Fillet must be >= 80% of r_f at every corner or pocket is skipped
- Result: 75 pockets, 481 NX entities, min fillet 4.85mm, mass 4066g
- adaptive_density=True param enables density refinement for future stress iterations
2026-02-16 20:51:20 +00:00
30981fa066
fix(brain): enforce r_f=6mm minimum, reject pockets that can't fit fillets
...
- Default r_f raised from 1.5mm to 6mm (machining constraint)
- Default min_pocket_radius raised to 6mm
- Pockets that can't fit r_f at any corner (within 80% tolerance) are
skipped entirely — left solid for more stiffness in tight areas
- Result: 26 pockets (was 432), 187 NX entities (was 13,061)
- Min fillet radius: 4.88mm, all >= 4.8mm (80% of 6mm)
- Mass: 4,601g (was 3,480g — more solid = heavier but manufacturable)
2026-02-16 20:42:46 +00:00
da9b579bcf
refactor(brain): structured pocket output — 3 lines + 3 arcs per pocket
...
Replaced Shapely buffer-based fillet (59-pt polylines) with exact geometric
fillet computation. Each pocket now outputs:
- 3 straight edges (line start/end pairs)
- 3 fillet arcs (center, radius, tangent points, angles)
NX import updated to use SketchLineBuilder + SketchArcBuilder (3-point).
Total NX entities: ~2,600 (was ~13,000). Includes arc fallback to 2-line
segments if SketchArcBuilder fails.
Also outputs circular hole definitions for future NX circle creation.
2026-02-16 20:17:49 +00:00
fdcafe96a9
fix(import): use SketchLineBuilder instead of model curves + AddGeometry
...
Model curves (part.Curves.CreateLine) are SmartObjects that can't be added
to a sketch via AddGeometry. Switch to SketchLineBuilder which creates
native sketch geometry directly (SetStartPoint/SetEndPoint/Commit).
2026-02-16 20:02:11 +00:00
fbdbf6b362
fix(import): use Sketch.InferConstraintsOption enum (nested under NXOpen.Sketch, not NXOpen)
2026-02-16 19:56:31 +00:00
4e0c9cd24d
fix: correct enum names from MCP - InferNoConstraints, TreatAsEllipse, UpdateLevel.Model runtime resolve
2026-02-16 19:50:24 +00:00
c93239c9c6
fix: strip closing duplicate points in triangulation (segfault fix), batch line creation for NX speed, 6mm endmill params
2026-02-16 19:29:41 +00:00
61dcefb5ea
fix: resolve ViewReorient/UpdateLevel enum at runtime with multiple fallback paths
2026-02-16 19:15:57 +00:00
8143da96e9
fix: correct enum names - ViewReorient.FalseValue, UpdateLevel.Model (verified from MCP)
2026-02-16 19:14:22 +00:00
9534ba9ed9
fix: Builder.Commit() not CommitFeature(), correct AddGeometry signature, verbose commit logging
2026-02-16 19:11:28 +00:00
4fc129e35b
fix: try setattr/SetX/method patterns for SketchInPlaceBuilder properties (NXOpen Python getter/setter naming collision)
2026-02-16 19:08:06 +00:00
bf1f461e2b
fix: use Plane (SmartObject) not DatumPlane, method calls not property setters (verified from MCP stubs)
2026-02-16 19:05:12 +00:00
7a2c002672
fix: use Matrix3x3 for datum plane, property assignment for SketchInPlaceBuilder2
2026-02-16 18:57:31 +00:00
bf4e84d45a
fix: use Planes.CreatePlane + Points.CreatePoint + Directions.CreateDirection for sketch creation
2026-02-16 18:54:21 +00:00
ef8801a5cd
test: add sandbox1 rib profile output for import testing
2026-02-16 18:49:21 +00:00
f4cfc9b1b7
feat(adaptive-isogrid): import_profile.py - push rib profile as NX sketch, sandbox1 brain input test file
2026-02-16 18:45:24 +00:00
23b6fe855b
fix: handle closed circular edges (holes) - UF.Eval + GetLength circle fallback + debug logging
2026-02-16 17:57:06 +00:00
98d510154d
fix: rewrite edge sampling + loop building using verified NXOpen API (GetVertices, GetEdges, GetLength, UF.Eval)
2026-02-16 17:46:52 +00:00
851a8d3df0
fix: replace face.GetLoops() with compatible API (GetEdgeLoops / UF layer / GetEdges fallback)
2026-02-16 17:42:08 +00:00
1166741ffd
fix: add try/except + debug logging around sandbox extraction
2026-02-16 17:31:33 +00:00
afaa925da8
fix: search features + feature names for ISOGRID_SANDBOX attribute (Promote Body stores attrs on feature, not body)
2026-02-16 17:26:31 +00:00
6251787ca5
merge: take remote extract_sandbox.py v2
2026-02-16 12:22:56 -05:00
40213578ad
merge: recover Gitea state - HQ docs, cluster setup, isogrid work
...
Merge recovery/gitea-before-force-push to restore:
- hq/ directory (cluster setup, docker-compose, configs)
- docs/hq/ (12+ HQ planning docs)
- docs/guides/ (documentation boundaries, PKM standard)
- docs/plans/ (model introspection master plan)
- Isogrid extraction work
- Hydrotech-beam: keep local DOE results, remove Syncthing conflicts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 12:22:33 -05:00
26100a9624
feat(adaptive-isogrid): extract_sandbox.py v2 - NX journal compatible, no argparse, sim→idealized navigation, listing window output
2026-02-16 17:20:28 +00:00
ed6874092f
chore: clean hydrotech-beam syncthing conflicts and add new docs
...
- Remove all .sync-conflict-* files
- Remove temp _temp_part_properties.json files
- Add USER_GUIDE.md
- Add dashboard docs (Executive, Technical, Operations, Master Plan)
- Add playbooks (DOE, NX_REAL_RUN, SYNCTHING_RECOVERY)
- Update iteration results
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 12:11:16 -05:00
bb83bb9cab
feat(adaptive-isogrid): rewrite extract_sandbox.py - start from .sim, navigate to idealized part, find sandbox solid bodies by ISOGRID_SANDBOX attribute, inner loops as boundary constraints
2026-02-16 17:07:26 +00:00
fa9193b809
chore(hq): daily sync 2026-02-16
2026-02-16 10:00:29 +00:00
3184eb0d0e
Add doc 12: Context lifecycle management — condensation, threads, staleness
2026-02-16 02:26:19 +00:00
85d40898f0
Revise spec to reserved-region FEM and add Phase 2 NX sandbox scripts
2026-02-16 02:04:19 +00:00
7086f9fbdf
Add doc 11: HQ improvements plan from Bhanu video analysis
2026-02-16 01:19:27 +00:00
e4651c9a40
Adaptive isogrid: min triangle area filtering and circular hole bosses
2026-02-16 01:11:53 +00:00
9d4c37234a
Add standalone brain CLI, test geometries, and robustness sweep outputs
2026-02-16 00:12:12 +00:00
4bec4063a5
feat: add adaptive isogrid tool — project foundations
...
- Python Brain: density field, constrained Delaunay triangulation,
pocket profiles, profile assembly, validation modules
- NX Hands: skeleton scripts for geometry extraction, AFEM setup,
per-iteration solve (require NX environment to develop)
- Atomizer integration: 15-param space definition, objective function
- Technical spec, README, sample test geometry, requirements.txt
- Architecture: Python Brain + NX Hands + Atomizer Manager
2026-02-16 00:01:35 +00:00
cf82de4f06
docs: add HQ multi-agent framework documentation from PKM
...
- Project plan, agent roster, architecture, roadmap
- Decision log, full system plan, Discord setup/migration guides
- System implementation status (as-built)
- Cluster pivot history
- Orchestration engine plan (Phases 1-4)
- Webster and Auditor reviews
2026-02-15 21:44:07 +00:00
3289a76e19
feat: add Atomizer HQ multi-agent cluster infrastructure
...
- 8-agent OpenClaw cluster (Manager, Tech-Lead, Secretary, Auditor,
Optimizer, Study-Builder, NX-Expert, Webster)
- Orchestration engine: orchestrate.py (sync delegation + handoffs)
- Workflow engine: YAML-defined multi-step pipelines
- Agent workspaces: SOUL.md, AGENTS.md, MEMORY.md per agent
- Shared skills: delegate, orchestrate, atomizer-protocols
- Capability registry (AGENTS_REGISTRY.json)
- Cluster management: cluster.sh, systemd template
- All secrets replaced with env var references
2026-02-15 21:18:18 +00:00
d6a1d6eee1
auto: daily sync
2026-02-15 08:00:21 +00:00
6218355dbf
auto: daily sync
2026-02-14 08:00:22 +00:00
0795cccc97
auto: daily sync
2026-02-13 08:00:19 +00:00
580ed65a26
fix: generic mass extraction in solve_simulation.py (beam + bracket)
...
- Extract mass RIGHT AFTER geometry rebuild while part is work part
- Replace unreliable p173 expression lookup with MeasureManager
- Skip re-extraction if mass already captured during rebuild
- Relax displacement constraint to 20mm (DEC-HB-012, CEO approved)
Root cause: journal hardcoded M1_Blank for bracket, failed silently on Beam.prt
Fix by: NX Expert + Manager diagnosis
2026-02-13 02:16:39 +00:00