znlgis 博客

GIS开发与技术分享

第二十章:学习资源与社区指南

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 贡献指南

  1. Fork仓库到个人账号
  2. 创建功能分支
  3. 提交代码变更
  4. 发起Pull Request
  5. 等待代码审查和合并

20.5 飞扬平台发展方向

20.5.1 技术路线

  • 跨平台:积极采用成熟开源技术(Avalonia)
  • 现代架构:现代应用软件的体系架构和设计模式
  • 多语言支持:核心C#,插件支持C#和JavaScript
  • 双UI框架:Avalonia和WinForms
  • 图形引擎:二维SkiaSharp,三维基于OpenGL的ThreeSharp

20.5.2 核心原则

  1. 对流行CAD系统进行功能裁剪,确保简洁和稳定
  2. 核心代码开源,文件格式开放,兼容DWG/DXF
  3. 统一管理的插件体系,确保互操作性
  4. 二维设计为主、三维设计为辅的实时BIM正向设计

20.6 本章小结

本章提供了FY_Layout的学习资源汇总和社区指南:

  1. 项目资源:GitHub和Gitee仓库地址,完整的项目结构回顾
  2. 学习路径:从基础到进阶的5阶段学习建议
  3. 设计模式:元素四文件模式、三种创建模式、Provider双注册模式
  4. 社区支持:联系方式、商业模式和贡献指南
  5. 发展方向:飞扬平台的技术路线和核心原则

希望本教程能帮助开发者快速掌握FY_Layout的开发技能,为建筑工程场地布置设计贡献力量。


上一章:常见问题与解决方案 返回目录