Skip to content

yuanzhongqiao/CADmium

 
 

Repository files navigation

CAD mium

该项目旨在从头开始创建一个新的 CAD 程序。它很小,可以在网络浏览器中运行,源代码可在 Github 上免费获取。

传统的 CAD 程序花费了数千年的集体工程时间才达到如今的水平,因此该程序永远无法在功能广度方面与之竞争。但 CADmium 旨在捕捉 80% 最常见的 CAD 用例,同时只完成不到 10% 的工作。目前,我们的目标是只想为他们的 3D 打印机设计小部件的家庭爱好者,而不是想要设计汽车或飞机的公司,尽管这以后会实现。

如果您正在寻找:

  • 在浏览器中运行的简单、现代、参数化的 CAD UI
  • 可以将实体导出为 .step、.obj 或 .cadmium(该项目正在发明的基于 json 的 CAD 格式)
  • 可以将草图导出为 .svg 或 .dxf
  • 无需网络连接即可工作

那么这个项目可能适合您!

状态:早期原型。此工具尚未成为 MVP,但正在公开开发中。请不要将此分享到 HN 或 Reddit 或类似的东西上。哈,我想那艘船已经开走了

总体规划

演示:我们目前正在努力推出第一个演示版本V0.0.1。这对我们来说是一个很好的初步练习,可以帮助我们决定构建和发布流程。

之后,我们将会发布更多演示版本(V0.0.*),汇总功能直到感觉非常实用为止。

Alpha:当我们感觉我们已经开发出人们可能真正想要使用的 MVP 时,就该发布 Alpha 版本 (V0.1.0) 并积极征求用户的反馈。我们将利用这些反馈做出更多改进,必要时重新发明一些东西,以实现出色的工作流程。

除此之外,我们拭目以待!

技术

引擎盖下的边界表示引擎是truck,它是用 rust 编写的,不依赖于任何传统的 b-rep 引擎。

利用 truck,我们编写了一个名为cadmium的小型 rust 库,它为项目、工作区、草图、挤压和约束提供结构。我们的目标是,这个 rust 库为任何喜欢代码优先 CAD 的人提供与 UI 相同的所有功能。这个库能够将项目以 json 格式保存和加载到磁盘。我们还构建了一组 javascript 绑定,以便可以将整个内容编译为 wasm 并在浏览器中运行。

UI 使用SvelteKitTailwind构建。它托管在 Github Pages 上。我们使用three.js进行渲染,在本例中,它使用 WebGL。我们使用Threlte以声明方式管理场景图。

执照

该软件根据Elastic License 2.0提供。总之,您可以使用该软件做任何您想做的事情,除了将其作为服务提供给第三方。

运行代码

如果您只是想尝试一下,请单击此处查看实时网络演示。

要使用 pnpm Workspace 和 turbo 进行本地构建:

git clone https://github.com/Cadmium-Co/CADmium.git
cd CADmium
pnpm install
pnpm dev

工具设置

韓國

我们使用 pnpm 来管理 monorepo。请按照此处的说明进行安装:https://pnpm.io/installation#using-a-standalone-script

如果你是 Node 新手,那么可以使用 pnpm 来管理 Nodejs:

# https://pnpm.io/cli/env#use
pnpm env use --global 20

首先使用 rustup 安装 rust:https://rustup.rs

然后安装 wasm-pack

cargo install wasm-pack

运行测试

turbo test

Playwright 用于 e2e 测试。系统可能会提示您安装它的命令。

对于 manjaro/archlinux 用户,它可能会报告缺少依赖项。在 manjaro 上,由于此评论,缺少的​​依赖项已得到解决:

yay -S aur/enchant1.6 aur/icu66 aur/libwebp052

仅观看 vitest 单元测试:

cd applications/web
pnpm test:unit -w 

将工作目录更改为 packages/cadmium 并运行 rust 测试:

cd packages/cadmium
cargo test

贡献

我们正在积极寻找贡献者!请加入Discord并提供帮助!

我们尤其需要在以下领域获得帮助:

设计:工具必须外观和感觉良好,而我们不是设计师。我们希望以以下形式做出贡献:

  • 关于如何使不同元素看起来和表现更好的建议、模型或 tailwindcss 示例
  • 特别是帮助选择一个效果好且独特的调色板
  • 帮助了解如何实现暗黑模式

Rust:这是我们使用 Rust 的第一个项目。我们需要经验丰富的 Rustaceans 的帮助来:

  • 弄清楚如何更好地布局 Rust 代码
  • 指出我在使用该语言时存在的任何明显问题(到目前为止,我们完全避免使用 Lifetimes、Traits、Rc、RefCell 等,这可能会妨碍事情的发展)

Svelte:这是我们使用 Svelte 的第一个项目。我们希望有经验的人能够:

  • 检查基本结构,并告诉我们是否犯了重大错误
  • 在 Svelte 5 发布后帮助我们迁移到该版本

如果您愿意并且能够提供帮助,请加入我们的 discord

V0.0.1 版本(演示版)的即时待办事项

用于跟踪进度的 Github 项目在这里

  • 草图
    • 实现独立的一阶二维约束求解器
    • 将新的求解器集成到 sketch.rs 中
    • 能够在实体表面上创建草图
    • 能够在 UI 中创建和修改约束
  • 挤压
    • 配置挤压以创建新实体或从现有实体中减去
  • 项目
    • 可以重命名项目
    • 可以删除步骤
    • 将 ctrl + s 绑定到 .cadmium 导出,将 ctrl + o 绑定到 .cadmium 导入
  • 单位
    • 明确整个文件使用毫米单位
  • 营销
    • Youtube 视频演示了如何制作:
      • 一个简单的立方体
      • 带有螺丝孔的板
      • 类似这样的非常复杂的事情

About

在浏览器中运行的 CAD 程序

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 49.1%
  • Svelte 29.8%
  • TypeScript 13.0%
  • JavaScript 7.8%
  • Shell 0.1%
  • HTML 0.1%
  • CSS 0.1%