第二十章:学习资源与社区指南
20.1 项目资源
20.1.1 官方仓库
| 资源 | 地址 | 说明 |
|---|---|---|
| GitHub仓库 | https://github.com/znlgis/FY_Layout | 源代码托管 |
| Gitee仓库 | https://gitee.com/qidaosoft/FY_Layout | 国内镜像 |
| 授权协议 | CC-BY-NC 4.0 | 非商业使用免费 |
20.1.2 项目结构回顾
FY_Layout/
├── QdLayout/ # 场布插件主项目
│ ├── Barrier/ # 防护栏杆
│ ├── Berm/ # 出土道路
│ ├── Earthwork/ # 土方回填
│ ├── Equipment/ # 场布设备
│ ├── Fence/ # 围墙(含WinForms UI)
│ ├── FoundationPit/ # 基坑
│ ├── Ground/ # 硬化地面
│ ├── Harden/ # 路面硬化
│ ├── Lawn/ # 草坪
│ ├── OpenLine/ # 开门边线
│ ├── PlanBuild/ # 拟建建筑
│ ├── PlateHouse/ # 板房系统(最复杂模块)
│ ├── PropertyLine/ # 用地红线
│ ├── Road/ # 城市道路
│ ├── Site/ # 场地
│ ├── TemplateArrange/ # 模板排布
│ ├── LayoutPlugin.cs # 插件入口
│ ├── LayoutCmds.cs # 命令注册(33个命令)
│ ├── LayoutElementType.cs # 元素类型定义(16种)
│ ├── LcCurveChangeLoop.cs # 曲线闭合工具
│ └── GlobalUsing.cs # 全局命名空间
├── QdLayoutProvider/ # 三维Provider项目
│ ├── QdBermProvider.cs
│ ├── QdEarthworkProvider.cs
│ ├── QdFenceProvider.cs
│ ├── QdFoundationPitProvider.cs
│ ├── QdGroundProvider.cs
│ ├── QdHardenProvider.cs
│ ├── QdIntersectionProvider.cs
│ ├── QdLawnProvider.cs
│ ├── QdSiteProvider.cs
│ ├── QdLayoutProviderRegist.cs
│ └── QdLayoutProviderUtils.cs
├── Libs/ # 依赖库(36+ DLL)
├── 飞扬主程序/ # 主程序和文档
├── LightBIM.sln # VS解决方案
└── README.md # 项目说明
20.2 技术栈学习路径
20.2.1 必备基础
| 技术 | 学习内容 | 推荐资源 |
|---|---|---|
| C# | .NET 8.0, async/await, 属性, 特性 | Microsoft Learn |
| WinForms | 窗体设计, 控件使用 | MSDN文档 |
| 几何学 | 向量计算, 多边形, 曲线 | 计算几何教材 |
| OpenGL基础 | 顶点, 面片, 材质, 渲染管线 | LearnOpenGL |
20.2.2 进阶学习
| 技术 | 学习内容 | 与FY_Layout的关系 |
|---|---|---|
| CAD内核原理 | 文档模型, 图层系统, 事务处理 | LightCAD框架核心 |
| BIM概念 | 参数化设计, 组件化, LOD | Provider系统 |
| 三维图形学 | 三角剖分, CSG, 网格生成 | 三维模型生成 |
| 设计模式 | 插件模式, 观察者模式, 命令模式 | 插件架构 |
20.2.3 推荐学习顺序
第一阶段(基础入门):
第1章 → 第2章 → 第3章 → 第4章
目标:理解平台架构,搭建开发环境,创建第一个插件
第二阶段(元素开发):
第5章 → 第6章 → 第7章
目标:掌握元素类型系统,理解各种场布元素的实现
第三阶段(图形系统):
第8章 → 第9章 → 第10章
目标:掌握二维绘图和三维渲染,理解Provider系统
第四阶段(工程能力):
第11章 → 第12章 → 第13章 → 第14章
目标:掌握UI开发和命令系统,完成实战案例
第五阶段(进阶提升):
第15章 → 第16章 → 第17章 → 第18章
目标:掌握文件格式、调试优化、部署发布和API参考
20.3 核心设计模式总结
20.3.1 元素四文件模式
每个场布元素通常由4个文件组成:
ElementName/
├── QdXxx.cs # 元素数据类(继承DirectComponent)
├── QdXxxDef.cs # 元素定义类(组件元数据)
├── XxxAction.cs # 二维操作类(继承DirectComponentAction)
└── Xxx3dAction.cs # 三维操作类(实现IElement3dAction)
20.3.2 三种创建模式
大多数区域类元素支持三种创建方式:
| 模式 | 方法名 | 命令后缀 | 说明 |
|---|---|---|---|
| 多边形 | ExecCreatePoly | 无 | 逐点绘制多边形轮廓 |
| 矩形 | ExecCreateRec | Rec | 对角点定义矩形 |
| 转换 | ExecCreate | Change | 选择已有线段自动组合 |
20.3.3 Provider双注册模式
每个Provider需要注册Shape(二维)和Solid(三维)两个生成器:
internal static void RegistProviders()
{
// 二维形状
ConvertToProviders(new List<(string uuid, string name, CreateShape creator)>
{
("uuid", "名称", 形状生成方法)
});
// 三维实体
ConvertToProvider("uuid", "名称", 实体生成方法, 材质获取方法);
}
20.4 社区与支持
20.4.1 加入项目
- 微信联系:qishou003
- 平台私信:通过Gitee平台联系
- 技术服务群:扫描README中的二维码加入
20.4.2 商业模式
- 个人用户:永久免费
- 学校用户:永久免费
- 企业用户:需要授权
- 插件开发者:可自行决定商业规则
20.4.3 贡献指南
- Fork仓库到个人账号
- 创建功能分支
- 提交代码变更
- 发起Pull Request
- 等待代码审查和合并
20.5 飞扬平台发展方向
20.5.1 技术路线
- 跨平台:积极采用成熟开源技术(Avalonia)
- 现代架构:现代应用软件的体系架构和设计模式
- 多语言支持:核心C#,插件支持C#和JavaScript
- 双UI框架:Avalonia和WinForms
- 图形引擎:二维SkiaSharp,三维基于OpenGL的ThreeSharp
20.5.2 核心原则
- 对流行CAD系统进行功能裁剪,确保简洁和稳定
- 核心代码开源,文件格式开放,兼容DWG/DXF
- 统一管理的插件体系,确保互操作性
- 二维设计为主、三维设计为辅的实时BIM正向设计
20.6 本章小结
本章提供了FY_Layout的学习资源汇总和社区指南:
- 项目资源:GitHub和Gitee仓库地址,完整的项目结构回顾
- 学习路径:从基础到进阶的5阶段学习建议
- 设计模式:元素四文件模式、三种创建模式、Provider双注册模式
- 社区支持:联系方式、商业模式和贡献指南
- 发展方向:飞扬平台的技术路线和核心原则
希望本教程能帮助开发者快速掌握FY_Layout的开发技能,为建筑工程场地布置设计贡献力量。
| 上一章:常见问题与解决方案 | 返回目录 |