待补充 Haskell-Things/ImplicitCAD

3/5 🧩 软硬件结合 已发布
Haskell-Things 592 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5

项目简介

A math-inspired CAD program in haskell. CSG, bevels, and shells; 2D & 3D geometry; 2D gcode generation...


ImplicitCAD 是一款基于 Haskell 实现的程序化 CAD 工具,其核心理念是用代码而非鼠标拖拽来设计三维模型。与传统 CAD 软件不同,它允许用户像编写程序一样,通过变量、控制结构和抽象函数来描述几何体,从而带来一系列显著优势:模型可以被抽象和复用,重复性任务能够自动化,设计参数可灵活调整,并且可以无缝接入版本控制系统等软件开发工具。该项目主要解决传统 CAD 在复杂、重复或参数化设计场景下的低效问题,特别适合需要精确控制、批量生成或频繁修改模型的工程师和设计师。

标签

项目特点

**纯代码建模**:用 Haskell 语法描述几何体,支持变量、函数、条件判断等编程结构。
**参数化设计**:所有尺寸和形状都可以定义为参数,修改参数即可自动更新模型。
**模型复用与抽象**:通过函数封装几何体,像调用函数一样复用复杂结构。
**版本控制友好**:模型文件是纯文本代码,可以像管理代码一样用 Git 进行版本管理。
**自动化和批量生成**:结合脚本可以批量生成不同参数的模型,适合工业化场景。
**开源与跨平台**:基于 Haskell 实现,支持 Linux、macOS、Windows 等主流系统。

技术规格

编程语言
核心库
渲染引擎
输出格式
输入格式
依赖管理
最低 GHC 版本
支持操作系统
许可证

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
implicit 1 几何体描述与渲染核心
implicitcad 1 用于将 .hs 文件编译为 STL/SVG
examples/ 若干 包含齿轮、花瓶、螺丝等示例
test/ 1 单元测试与集成测试
stack.yaml / cabal.project 1 用于构建项目

3D 模型

模型名称文件名文件
arbitrary1.ascii.stl arbitrary1.ascii.stl
arbitrary2.ascii.stl arbitrary2.ascii.stl
arbitrary3.ascii.stl arbitrary3.ascii.stl
arbitrary4.ascii.stl arbitrary4.ascii.stl
boundingBoxes.ascii.stl boundingBoxes.ascii.stl
box.ascii.stl box.ascii.stl
boxCylinder.ascii.stl boxCylinder.ascii.stl
boxCylinder.obj boxCylinder.obj
boxCylinder.stl boxCylinder.stl
boxFrame.ascii.stl boxFrame.ascii.stl

能力画像

**记忆与知识检索**:3/5 — 需要查阅 Haskell 语法和 ImplicitCAD 函数库,但模型逻辑清晰后无需频繁检索。
**动手与操作**:2/5 — 主要工作是写代码,物理操作很少,但需要配置 Haskell 开发环境。
**编程与算法**:5/5 — 核心能力,需要编写函数、递归、参数化逻辑来构建几何体。
**设计与建模**:4/5 — 虽然用代码建模,但需要空间想象力和几何设计能力。
**实验与调试**:4/5 — 模型需要反复编译和预览,调试代码逻辑和几何错误是常态。
**协作与分享**:3/5 — 代码可共享和版本控制,但社区较小,协作工具依赖 GitHub。
**学习与研究**:4/5 — 需要学习 Haskell 和函数式建模思维,适合研究程序化设计方法。
**系统集成**:3/5 — 可集成到 CI/CD 流水线或与 OpenSCAD 工具链配合,但生态较窄。

所需技能

Haskell 编程基础(函数、类型、递归) 程序化建模思维(用代码描述几何体) 基本的三维空间几何概念 命令行操作(编译、运行脚本) Git 版本控制基础 参数化设计方法

适用场景

需要批量生成不同尺寸的零件(如齿轮、支架)
设计参数可调的产品原型(如家具、外壳)
将 CAD 模型纳入 CI/CD 流水线(自动生成 STL)
教学程序化设计与函数式编程结合
开源硬件项目中需要精确控制几何形状
替代 OpenSCAD 但希望使用更强大的编程语言