

























LightCAD是由启道软件(Qidao Soft)开发的一款专业级开源CAD平台,基于.NET 10构建,采用C#语言编写。作为一个完整的二维/三维计算机辅助设计系统,LightCAD致力于为建筑工程设计、机械制图、参数化建模等领域提供一个功能丰富且高度可扩展的设计解决方案。
LightCAD的设计理念源于对主流CAD系统的深入分析和改进。它不仅提供了传统CAD系统所具备的绑图、建模和标注功能,还通过模块化架构和插件系统,让开发者能够根据行业需求进行深度定制和二次开发。
LightCAD具备以下核心特性:
LightCAD采用严格的分层架构设计,从底层到上层的依赖关系如下:
┌─────────────────────────────────────────────┐
│ 用户界面层 │
│ LightCAD.WinForm / LightCAD.Model │
├─────────────────────────────────────────────┤
│ 应用运行时层 │
│ LightCAD.Runtime │
├─────────────────────────────────────────────┤
│ 绘图交互层 │
│ LightCAD.Drawing │
├─────────────────────────────────────────────┤
│ 渲染工具层 │
│ LightCAD.RenderUtils │
├─────────────────────────────────────────────┤
│ 核心数据层 │
│ LightCAD.Core │
├─────────────────────────────────────────────┤
│ 数学基础层 │
│ LightCAD.MathLib │
└─────────────────────────────────────────────┘
| 模块 | 说明 | 关键职责 |
|---|---|---|
| LightCAD.MathLib | 数学基础库 | 向量/矩阵运算、曲线数学、几何变换、交集计算 |
| LightCAD.Core | 核心数据模型 | 文档结构、图元实体、属性定义、元素类型系统 |
| LightCAD.RenderUtils | 渲染工具 | Three.js桥接、资源管理、事件系统、三维控件 |
| LightCAD.Drawing | 二维绘图 | 视口管理、输入系统、捕捉系统、夹点编辑 |
| LightCAD.Runtime | 应用运行时 | 视图构建、投影处理、高层操作逻辑 |
| LightCAD.Model | UI模型控件 | Avalonia XAML控件、模型编辑器、状态栏 |
| LightCAD.WinForm | Windows窗体应用 | 主应用程序入口、字体资源、窗口管理 |
除核心模块外,LightCAD还包含以下辅助模块:
LightCAD基于微软最新的长期支持版(LTS).NET 10平台构建。选择.NET 10的主要原因包括:
LightCAD采用双渲染引擎策略:
Three.js4Net(主要3D渲染)
Three.js4Net是Three.js JavaScript 3D库的.NET封装版本。它提供了:
OpenTK(OpenGL渲染)
OpenTK是.NET平台的OpenGL绑定库,在LightCAD中作为补充渲染后端:
LightCAD使用混合UI架构:
这种混合方案充分利用了Windows Forms的成熟稳定性和Avalonia的现代化UI表达能力。
| 库名称 | 版本 | 用途 |
|---|---|---|
| MathNet.Numerics | 5.0.0 | 高级数学运算 |
| System.Drawing.Common | 8.0.1 | 图形基元 |
| SignalR Client | 9.0.4 | 实时通信 |
| ThreeJs4Net | - | 3D图形渲染 |
| OpenTK | - | OpenGL绑定 |
| Flee | - | 表达式求值 |
| netDxf | - | DXF文件处理 |
| Weikio PluginFramework | - | 插件加载框架 |
| 对比维度 | LightCAD | AutoCAD |
|---|---|---|
| 开源性 | 开源 | 商业闭源 |
| 开发语言 | C# (.NET 10) | C++/ObjectARX |
| 文件格式 | 兼容DWG/DXF | 原生DWG |
| 插件系统 | Weikio Plugin Framework | ObjectARX/.NET API |
| 二次开发 | C# | C++/C#/LISP/VBA |
| 运行平台 | Windows(可扩展跨平台) | Windows/Mac |
| 体积 | 轻量级 | 大型应用 |
| 对比维度 | LightCAD | FreeCAD |
|---|---|---|
| 开发语言 | C# | C++/Python |
| 建模内核 | 自研 | OpenCascade |
| UI框架 | WinForms+Avalonia | Qt |
| 参数化 | 支持 | 支持 |
| BIM支持 | 内置行业插件 | 通过工作台扩展 |
| 学习曲线 | 适中 | 较陡 |
| 对比维度 | LightCAD | LibreCAD |
|---|---|---|
| 维度 | 2D+3D | 仅2D |
| 开发语言 | C# | C++ |
| 3D建模 | 完整支持 | 不支持 |
| 实体建模 | 拉伸/旋转/放样等 | 不支持 |
| 渲染 | Three.js+OpenGL | Qt |
LightCAD适用于以下应用场景:
通过内置的建筑(QdArch)、结构(QdStruct)、暖通(QdHvac)、电气(QdElectric)、给排水(QdWater)插件,LightCAD可以直接用于建筑工程的多专业协同设计。
LightCAD的开源特性和清晰的架构设计,使其成为学习CAD系统内部原理的绝佳教材。开发者可以深入了解:
企业可以基于LightCAD进行行业定制:
作为飞扬集成设计平台的核心组件,LightCAD支持BIM(建筑信息模型)正向设计:
# 从GitHub克隆仓库
git clone https://github.com/znlgis/lightcad1.git
# 进入项目目录
cd lightcad1
克隆完成后,可以看到以下项目结构:
lightcad1/
├── LightCAD1.sln # 解决方案文件
├── src/
│ ├── LightCAD.MathLib/ # 数学库
│ ├── LightCAD.Core/ # 核心数据模型
│ ├── LightCAD.RenderUtils/ # 渲染工具
│ ├── LightCAD.Drawing/ # 绘图模块
│ ├── LightCAD.Runtime/ # 运行时
│ ├── LightCAD.Model/ # UI模型控件
│ ├── LightCAD.WinForm/ # WinForm应用
│ ├── LightCAD.ImportAndExport/ # 导入导出
│ ├── LightCAD.Component.Actions/ # 组件操作
│ ├── LightCAD.PrjManager/ # 项目管理
│ ├── LightCAD.LocalSolution/ # 本地方案
│ ├── LightCAD.DBHelper/ # 数据库帮助
│ ├── LightCAD.DBUtility/ # 数据库工具
│ ├── Libs/ # 第三方库(DLL)
│ ├── Plugins/ # 预编译行业插件
│ ├── ThirdParty/ # 第三方源码
│ └── netDxf/ # DXF处理库
├── test/
│ ├── LightCAD.MathLib.Tests/ # 数学库测试
│ └── WinFormTest/ # 窗体测试
└── QuickStart/ # 快速入门示例
LightCAD1.slnLightCAD.WinForm设为启动项目首次编译可能需要还原NuGet包,请确保网络连接正常。编译成功后,将看到LightCAD的主界面窗口。
为了系统地掌握LightCAD的开发,建议按以下路线学习:
本章介绍了LightCAD的基本概念、核心特性和整体架构。LightCAD是一个功能完整、架构清晰的开源CAD平台,基于.NET 10构建,采用模块化分层设计,集成了Two.js/Three.js和OpenGL双渲染引擎,支持插件扩展和行业定制。
通过后续章节的学习,您将逐步深入LightCAD的各个核心模块,最终具备独立进行CAD二次开发的能力。
下一章:第二章:开发环境搭建与项目配置
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。