#cad #程序化 #代码CAD

fj-kernel

处于早期阶段、下一代、以代码为主的CAD应用。因为世界需要另一个CAD程序。

40个重大版本

0.46.0 2023年5月8日
0.44.0 2023年4月25日
0.42.0 2023年3月27日
0.29.0 2022年12月19日
0.9.0 2022年7月25日

#10 in #code-cad

Download history 17/week @ 2024-03-11 40/week @ 2024-03-18 65/week @ 2024-03-25 69/week @ 2024-04-01 62/week @ 2024-04-08 52/week @ 2024-04-15 55/week @ 2024-04-22 36/week @ 2024-04-29 50/week @ 2024-05-06 83/week @ 2024-05-13 76/week @ 2024-05-20 44/week @ 2024-05-27 96/week @ 2024-06-03 70/week @ 2024-06-10 93/week @ 2024-06-17 60/week @ 2024-06-24

324每月下载量
用于 3 个crate(2个直接)

0BSD 许可证

370KB
8K SLoC

Fornjot

博客 | 社区 | 贡献指南

关于

Fornjot是一个旨在创建一个 下一代、以代码为主的CAD应用早期项目。因为 世界需要另一个CAD程序

Screenshot of Fornjot

关于项目的目标,请 查看网站

赞助商

Fornjot 由以下人员支持:@webtrax-oz@reivilibre@lthiery@ahdinosaur@martindederer@bollian@rozgo@nullstyle@tachiniererin@sucaba@Kethku@jessebraham@seanjensengrey@MattOslin@benwis@happysalada@jminer@jeevcat@voxpelli@U007D@guillaumechauvat@MitchellHansen@mayfieldiv@ksindi,以及 我的其他赞助者。谢谢!

请考虑 支持我,帮助 Fornjot 持续发展。

目录

状态

Fornjot 正在积极开发,但仍然是实验性的。目前的工作重点是为用户提供一套稳定的 CAD 基础功能集。

如果您对 Fornjot 感兴趣并考虑使用它,您应该完全预计到会立即遇到限制。除非您愿意为其开发做出贡献,否则最好是等一年或十年,等待其成熟。有关当前限制和未来可能实现的功能改进的更多信息,请 查看开放问题

有关项目的长期方向,请参阅 路线图

特性

Rust 优先的 CAD

模型被定义为 Rust 代码。为了确保编译速度快,它们被单独编译,并作为插件加载到 Fornjot 应用程序中。

use fj::syntax::*;

#[fj::model]
pub fn model(
    #[param(default = 1.0, min = inner * 1.01)] outer: f64,
    #[param(default = 0.5, max = outer * 0.99)] inner: f64,
    #[param(default = 1.0)] height: f64,
) -> fj::Shape {
    let outer_edge = fj::Sketch::from_circle(fj::Circle::from_radius(outer));
    let inner_edge = fj::Sketch::from_circle(fj::Circle::from_radius(inner));

    let footprint = outer_edge.difference(&inner_edge);
    let spacer = footprint.sweep([0., 0., height]);

    spacer.into()
}

这是 spacer 模型 的代码。

基本建模功能

目前,Fornjot 支持基本的 2D 形状(由线段、圆以及它们之间有限的组合制成的草图),并将这些 2D 形状沿直线路径扫掠以创建 3D 形状。

短期到中期的主要优先事项是提供 CSG 支持、更灵活的草图和更灵活的扫掠(沿圆或螺旋线)。长期计划是继续添加更高级的 CAD 建模功能,以支持更复杂的三维模型和工作流程。

支持主流桌面平台

截至本文撰写时,Fornjot 在 Linux、Windows 和 macOS 上运行。该项目主要在 Linux 上开发,因此其他平台可能会存在错误。如果您想帮忙,定期在 Windows 和 macOS 上测试并报告错误是一个好方法。

短期到中期,计划增加对 Web 平台的支持,以便 Fornjot 可以在浏览器中运行。长期计划是另外支持主流移动平台。

导出为 3MF & STL

支持将模型导出为3D打印所使用的3D制造格式 (3MF) 和STL格式。

用法

安装

Fornjot使用Rust语言来定义模型,因此需要安装Rust工具链才能使用Fornjot。

要安装Fornjot,您有以下几种选择

  1. 最新版本下载二进制文件。
  2. 自己编译最新版本: cargo install fj-app
  3. 从本仓库编译开发版本: cd 路径/to/仓库; cargo install --path crates/fj-app

虽然Fornjot应用程序是一个图形应用程序,它可以打开窗口并显示您的模型的3D视图,但它目前只能通过命令行启动。下面的说明假定您已经在您的路径中某个地方安装了Fornjot应用程序,其名称为fj-app

Mac OS

如果您下载的是最新版本的二进制文件,在本地计算机上运行时需要注意以下两个问题。

  1. Mac会提示“fj-app-x86_64-apple-arwin”不能打开,因为它来自未知开发者。

解决方案是:打开Mac系统偏好设置。在偏好设置界面中,点击打开安全性与隐私。在安全性与隐私界面中,点击通用。在呼叫设置面板中,点击仍要打开按钮。在弹出的窗口中,点击打开按钮。

  1. 无法打开文档“fj-app”。文本编码Unicode (UTF-8) 不适用。

解决方案是:在终端中输入以下命令(我们建议将文件名改为fj-app)

chmod a+x fj-app

通过Nix

在子目录./nix中有一个Nix flake,其中包含一个devshell环境(通过nix developnix-shell)和包fj-app。可以通过启用flake的nix在nix run github:hannobraun/Fornjot?dir=nix中运行/测试,或者在与./nix目录中的传统nix一起,使用nix-build

定义模型

模型是依赖于fj库的Rust库,它们使用该库来定义几何形状。此外,它们需要作为动态库进行构建。只需使用models/目录中的示例作为模板来定义自己的。

查看模型

要查看模型,请运行

fj-app my-model

这通常会在my-model/目录中编译和加载模型。如果有一个配置文件(fj.toml),它可能会定义一个默认路径来加载模型,该路径与当前工作目录不同。这在Fornjot仓库中是这种情况。

按住鼠标左键并移动鼠标旋转模型。按住鼠标右键并移动鼠标移动模型。使用鼠标滚轮缩放。

通过按下 1 来切换模型渲染。通过按下 2 来切换网格渲染。通过按下 3 来切换调试数据渲染。

导出模型

要导出模型到文件,请运行

fj-app my-model --export my-model.3mf

文件类型根据文件扩展名选择。3MF 和 STL 都受支持。

模型参数

模型可以定义可被覆盖的参数。这可以通过使用 --parameters 参数来完成

fj-app my-model --parameters "width=3.0,height=5.0"

社区

如果您对 Fornjot 感兴趣,请考虑加入社区。我们非常希望您能加入我们!

请访问网站上的 社区页面 获取我们的位置信息!

参与其中

如果您想帮忙,只需fork GitHub 上的一个仓库并提交一个 pull request 即可

如果您不知道要做什么,请查看 good first issues。要了解当前优先事项的概述,请查看 开放里程碑

如果您需要更多指导,请查看 贡献指南或直接询问

许可证

本项目是开源的,根据 Zero Clause BSD 许可协议 (0BSD,简称) 许可。这意味着您可以无任何限制地使用它,但不能对作者因问题承担责任。

有关详细信息,请参阅 LICENSE.md

依赖项

~10–16MB
~206K SLoC