[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81653":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":12,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":10,"rankLanguage":10,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":17,"hasPages":17,"topics":19,"createdAt":10,"pushedAt":10,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":14,"starSnapshotCount":14,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},81653,"KinetiCAD","AndrewBlumson\u002FKinetiCAD","AndrewBlumson","Repository for https:\u002F\u002Freplit.com\u002F@andrewblumson\u002FKinetiCAD-Browser","https:\u002F\u002Freplit.com\u002F@andrewblumson\u002FKinetiCAD-Browser",null,"TypeScript",21,1,0,40.9,"MIT License",false,"main",[],"2026-06-12 04:01:34","# KinetiCAD\n\nBrowser-native parametric CAD with B-rep geometry and live physics simulation.\n\nBuilt during the Replit 10 Buildathon (May 2026) by Andrew Blumson (@AndrewBlumson) using Replit Agent. Co-built with Kevin Blumson (@KevinBlumson).\n\n## Live demo\n\nhttps:\u002F\u002Fkineticad.co.uk\u002Fapp\n\nLanding page: https:\u002F\u002Fkineticad.co.uk\u002F — Story at `\u002Fstory`, Terms of Service at `\u002Fterms`, Privacy Policy at `\u002Fprivacy`. Open Graph tags and `sitemap.xml` are in place.\n\nTwo pre-built demo assemblies load from the browser console:\n\n```\nwindow.loadSeed('windmill')\nwindow.loadSeed('orrery')\n```\n\n`windmill` is a single motor-driven revolute joint, used as the physics regression canary. `orrery` is a 13-body solar-system mechanism with 12 motorised revolute joints.\n\n## Stack\n\n- React 19, Vite 8, TypeScript 6\n- Three.js r184 with WebGPURenderer\n- OpenCascade.js 2.0.0-beta.94e2944 for B-rep geometry, in a Web Worker via Comlink\n- Rapier3D 0.12.0 for physics, in a separate Web Worker\n- Zustand state, Tailwind, Sonner toasts, Howler.js\n- Coordinate system: Z-up, millimetre units. Locale: en-GB.\n\n## What works\n\nModeller:\n\n- Sketching on the global XY, XZ and YZ planes (line, rectangle, three-point arc, circle) with a snap engine\n- Extrude and Revolve features, with forward, backward and symmetric extrude directions\n- Modifier features: Fillet, Chamfer, Hole\n- Boolean operations at assembly level: Union, Subtract, Intersect\n- Multi-part assemblies with per-part visibility and a translate\u002Frotate transform gizmo\n- Edge and face picking for mate creation\n- Five mate types: Revolute, Prismatic, Spherical, Fixed, Planar\n- Motor configuration in RPM on Revolute and Prismatic mates\n- Material Library: eight engineering presets (aluminium, steel, brass, titanium, nylon, PLA, ABS, acrylic) with physically-based colours and density values; per-part material selection; mass and volume readout in the inspector\n- Save and Load: full assembly state to and from a JSON file\n\nPhysics:\n\n- Real-time rigid-body simulation via Rapier3D, driven by the mate joints\n- Four mate types actuate in simulation: Revolute, Prismatic, Spherical, Fixed\n- Motorised joints sustain a commanded velocity\n- Mass properties derived from the B-rep geometry\n\nFile interop:\n\n- STL export, binary\n- STEP import, single-part and multi-part assembly\n- STEP export\n- Full STEP round-trip with geometry, hierarchy and relative positions preserved\n- Imported parts auto-grounded to the Z=0 plane\n\nThe build follows a 12-phase spec; phases 0 to 10 are complete, with later post-phase work covering the seed registry, the orrery, and Save\u002FLoad. See `replit.md` at the repository root for the phase-by-phase log.\n\n## Verified\n\n### Windmill physics canary\n\nThe windmill seed is the standing physics regression test. Target: 30 RPM, which is pi rad\u002Fs, 3.141592653589793.\n\n| Channel | Value |\n|---|---|\n| bodyBangvelMag | 3.14159270 to 3.14159298 |\n| bodyBangvel.x | approximately 3e-16 (floating-point precision floor) |\n| bodyBangvel.y | approximately 4e-10 (floating-point precision floor) |\n| bodyBangvel.z | 3.14159 (pure Z-axis rotation) |\n\nStable to plus or minus 5e-7 rad\u002Fs with no drift. Off-axis components sit at the single-precision floor.\n\n### Multi-mate kinematic chains\n\nThe orrery seed runs 13 rigid bodies connected by 12 motorised revolute joints in nested chains: planet arms on a central hub, with moons on three of the planet arms. It confirms the mate and motor system holds up under a non-trivial multi-joint assembly.\n\n### File interop (08\u002F05\u002F2026)\n\nSTL export: the windmill STL renders correctly in macOS Preview; a programmatic check confirms binary format, 408 triangles, 20,484 bytes, watertight per part, zero degenerate triangles. Bambu Studio sliced it to a complete print plan.\n\nSTEP import: a McMaster-Carr M3 socket-head screw (91290A115) imported as a single grounded part; a McMaster-Carr torque-limiting coupling (9132K11) imported as a 12-part assembly with relative positions preserved.\n\nSTEP round-trip: KinetiCAD-exported STEP files re-import cleanly with geometry, hierarchy and relative positions intact.\n\n## Known issues and limitations\n\n### STEP format limitations (apply to all CAD tools)\n\nSTEP files do not carry mate or joint information. Round-tripping an assembly through STEP loses the kinematic relationships; mates must be re-established after import. This affects Onshape, SolidWorks and Fusion equally.\n\nSTEP export flattens compound-of-solids hierarchy. Geometry is preserved, sub-assembly grouping is lost.\n\n### KinetiCAD-specific\n\nImported STEP parts do not survive a page refresh. B-rep shapes live in WebAssembly memory, which clears on reload. Sketch-based parts survive because the feature regeneration pipeline rebuilds them; imported parts have no regeneration path. Save and Load persists sketch-based parts, features and mates, but not imported B-rep geometry. An IndexedDB layer for raw STEP bytes is on the roadmap.\n\nImported parts are named after the source filename. STEP files do carry a PRODUCT entity name per component, but reading it back is not possible in this OpenCascade.js binding. This was investigated and confirmed to be a binding limitation, not a roadmap item. File-stem naming is permanent documented behaviour.\n\nArc-edge pivots: the underlying fix is in. topology.ts now emits the true geometric circle centre for circle and arc edges; previously the centre was computed but never written to the emitted metadata, so callers fell back to an arc centroid that is offset for partial arcs. The windmill canary holds pi after this fix. The end-to-end pick path for a partial-arc edge, that is, clicking an arc on a cut rim through the mate inspector, is not yet verified.\n\nOther known issues:\n\n- Boolean result meshes can be selected only from the BOOLEANS sidebar, not by clicking in the 3D view\n- The Hole feature position-picker clears the face selection on the second click\n- Sketch profiles cannot contain multiple closed loops, for example a plate with a hole\n- Sketches can be created only on the global XY, XZ and YZ planes; sketch on a selected face is not implemented\n- The Planar mate can be created in the Modeller but does not actuate in simulation; Rapier 0.12 has no native planar joint\n- No undo\u002Fredo\n\n### Not yet covered\n\nA contribution to-do list for anyone wanting to extend test coverage:\n\n- Cross-browser testing beyond Chrome and Safari\n- Performance on assemblies larger than a handful of parts\n- Mobile, currently unsupported: WebGPU only, no WebGL2 fallback\n\n## Roadmap and contribution opportunities\n\nPull requests are genuinely welcome. The most useful contributions:\n\n- IndexedDB persistence so imported STEP parts survive a page refresh\n- End-to-end verification of the arc-edge pivot pick path\n- Multi-loop sketch profiles (plates with holes, ring shapes)\n- Sketch on a selected face\n- Hole feature position-pick fix\n- IGES import and export for wider CAD interop\n- Undo\u002Fredo via Zustand history middleware\n- WebGL2 fallback for browsers without WebGPU\n- Mobile responsive layout\n- 3D click-to-select on boolean result meshes\n\nCAD or graphics experience is particularly valuable on the sketch-on-face, multi-loop sketch and arc-pivot items.\n\n## Demo files for testing\n\nReal-world STEP files for verification, all free:\n\n- McMaster-Carr: industrial parts catalogue. Search any part number, open Product CAD, download the STEP file. Good single-part and assembly test cases include 91290A115 (M3 socket-head screw) and 9132K11 (torque-limiting coupling).\n- GrabCAD: community-uploaded parts and assemblies, free with signup.\n\n## Local development\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002FAndrewBlumson\u002FKinetiCAD.git\ncd KinetiCAD\npnpm install\ncd artifacts\u002Fkineticad\npnpm dev\n```\n\nThe dev server runs at http:\u002F\u002Flocalhost:5173. Outside Replit, `BASE_PATH` is not set so the app serves at `localhost:5173\u002F` with base path `\u002F`, not `\u002Fapp\u002F` as on the deployed site. WebGPU is required: use Chrome on an M-series Mac. The Replit preview iframe does not support WebGPU and will show a \"WebGPU required\" message; test on the deployed URL instead.\n\nBuild for production with `pnpm build`.\n\n## Built with\n\nReplit and Replit Agent.\n\n## Author\n\nAndrew Blumson (@AndrewBlumson on GitHub and X). Adevious AI Ltd. UK Replit Ambassador. Co-built with Kevin Blumson (@KevinBlumson).\n\n## Licence\n\nMIT. See LICENSE for the full text.\n\n## Acronym index\n\nB-rep: Boundary Representation\nCAD: Computer-Aided Design\nIGES: Initial Graphics Exchange Specification\nJSON: JavaScript Object Notation\nMIT: Massachusetts Institute of Technology\nRPM: Revolutions Per Minute\nSTEP: Standard for the Exchange of Product Model Data\nSTL: Stereolithography\nURL: Uniform Resource Locator\nWebGPU: browser graphics and compute API\n","KinetiCAD 是一个基于浏览器的参数化CAD工具，支持B-rep几何体和实时物理模拟。其核心功能包括在XY、XZ和YZ平面上绘制草图、进行拉伸和旋转操作、布尔运算以及创建多种类型的连接件，并且能够处理多部件装配。技术上，KinetiCAD利用了React、TypeScript、Three.js等现代前端技术栈，并通过Web Workers运行OpenCascade.js和Rapier3D来实现高性能的几何建模与物理仿真。此外，它还提供了STL和STEP文件格式的导入导出能力，确保了与其他CAD软件的良好兼容性。此项目非常适合需要快速原型设计、教学演示或简单机械系统设计分析的场景使用。",2,"2026-06-11 04:05:50","CREATED_QUERY"]