


























飞扬集成设计平台(FY_Layout)是一个面向建筑工程设计行业的开源BIM正向设计支撑软件。该平台致力于融合二维设计、三维设计、BIM设计、智能设计、协同设计为一体,为建筑设计师和工程师提供一个完整的设计解决方案。
FY_Layout作为飞扬集成设计平台的场地布置二次开发插件示例,展示了如何基于LightCAD核心框架进行专业功能的扩展开发。这个项目不仅是一个功能完善的场布设计工具,更是一个优秀的CAD二次开发学习范例。
飞扬集成设计平台的核心业务愿景包括:
FY_Layout作为场地布置插件,提供了以下核心功能:
| 功能模块 | 说明 | 命令 |
|---|---|---|
| 草坪(Lawn) | 绿化区域绘制,支持任意绘制、矩形绘制、多段线转换 | Lawn, LawnRec, LawnChange |
| 围栏(Fence) | 工地围挡绘制,支持自定义样式 | Fence |
| 拟建建筑(PlanBuild) | 规划建筑轮廓绘制 | PlanBuild |
| 基坑(FoundationPit) | 基坑开挖区域绘制,支持放坡计算 | FoundationPit, FoundationPitRec |
| 硬化地面(Ground) | 道路和硬化区域绘制 | Ground, GroundRec |
| 土方回填(Earthwork) | 土方回填区域标注 | Earthwork, EarthworkRec |
| 出土道路(Berm) | 出土运输路径绘制 | Berm |
| 防护栏杆(Barrier) | 安全防护设施绘制 | Barrier |
| 城市道路(Road) | 市政道路绘制 | Road |
| 场地(Site) | 场地边界绘制 | Site, SiteRec |
| 用地红线(PropertyLine) | 用地边界绘制 | PropertyLine, PropertyLineRec |
| 板房布置(PlateBuilding) | 临时建筑布置 | PlateBuilding |
二三维一体化
参数化设计
多种创建方式
专业化属性
FY_Layout的项目结构如下:
FY_Layout/
├── LightBIM.sln # 解决方案文件
├── Libs/ # 依赖库目录
│ ├── LightCAD.Core.dll
│ ├── LightCAD.Drawing.dll
│ ├── LightCAD.Drawing.Actions.dll
│ ├── LightCAD.MathLib.dll
│ ├── LightCAD.Model.dll
│ ├── LightCAD.Runtime.dll
│ ├── LightCAD.RenderUtils.dll
│ ├── ThreeJs4Net.dll
│ └── ...其他依赖
├── QdLayout/ # 主插件项目
│ ├── QdLayout.csproj
│ ├── GlobalUsing.cs # 全局using声明
│ ├── LayoutPlugin.cs # 插件入口
│ ├── LayoutCmds.cs # 命令定义
│ ├── LayoutElementType.cs # 元素类型定义
│ ├── LcCurveChangeLoop.cs # 曲线闭合工具
│ ├── Barrier/ # 防护栏杆模块
│ ├── Berm/ # 出土道路模块
│ ├── Earthwork/ # 土方回填模块
│ ├── Equipment/ # 设备模块
│ ├── Fence/ # 围栏模块
│ ├── FoundationPit/ # 基坑模块
│ ├── Ground/ # 硬化地面模块
│ ├── Harden/ # 路面硬化模块
│ ├── Lawn/ # 草坪模块
│ ├── OpenLine/ # 开门边线模块
│ ├── PlanBuild/ # 拟建建筑模块
│ ├── PlateHouse/ # 板房模块
│ ├── PropertyLine/ # 用地红线模块
│ ├── Road/ # 道路模块
│ ├── Site/ # 场地模块
│ ├── TemplateArrange/ # 模板排布模块
│ ├── Properties/ # 资源文件
│ └── Resources/ # 图标等资源
├── QdLayoutProvider/ # Provider项目
│ ├── QdLayoutProvider.csproj
│ ├── GlobalUsing.cs
│ ├── QdLayoutProviderRegist.cs
│ ├── QdBarrierProvider.cs
│ ├── QdBermProvider.cs
│ ├── QdEarthworkProvider.cs
│ ├── QdFenceProvider.cs
│ ├── QdFoundationPitProvider.cs
│ ├── QdGroundProvider.cs
│ ├── QdHardenProvider.cs
│ ├── QdIntersectionProvider.cs
│ ├── QdLawnProvider.cs
│ └── QdSiteProvider.cs
├── Build/ # 编译输出目录
└── 飞扬主程序/ # 主程序文件夹
| 依赖库 | 功能说明 |
|---|---|
| LightCAD.Core | 核心框架,包含文档、元素、事务等基础类 |
| LightCAD.Drawing | 二维绘图引擎 |
| LightCAD.Drawing.Actions | 绘图操作和交互处理 |
| LightCAD.MathLib | 数学库,包含几何运算、CSG等 |
| LightCAD.Model | 模型定义 |
| LightCAD.Runtime | 运行时环境 |
| LightCAD.RenderUtils | 渲染工具 |
| ThreeJs4Net | 三维渲染引擎(基于OpenGL的Three.js .NET实现) |
| Newtonsoft.Json | JSON序列化 |
| Svg | SVG处理 |
| netDxf | DXF文件处理 |
安装Visual Studio 2026
克隆代码仓库
git clone https://gitee.com/qidaosoft/FY_Layout.git
cd FY_Layout
打开解决方案
LightBIM.sln还原NuGet包
选择配置
编译项目
Build目录调试运行
飞扬主程序文件夹下的lightcad.EXEQdLayout项目的csproj文件关键配置:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<BaseOutputPath>..\Build</BaseOutputPath>
</PropertyGroup>
<!-- 引用LightCAD核心库 -->
<ItemGroup>
<Reference Include="LightCAD.Core">
<HintPath>..\Libs\LightCAD.Core.dll</HintPath>
</Reference>
<!-- 其他引用... -->
</ItemGroup>
</Project>
FY_Layout采用标准的LightCAD插件架构:
┌─────────────────────────────────────────────────────────┐
│ LightCAD 主程序 │
├─────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ ILcPlugin │ │ LcDocument │ │ LcRuntime │ │
│ │ 插件接口 │ │ 文档管理 │ │ 运行时环境 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────┤
│ QdLayout 插件 │
├─────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │LayoutPlugin │ │ LayoutCmds │ │ElementTypes │ │
│ │ 插件入口 │ │ 命令定义 │ │ 元素类型 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 场布元素模块 │ │
│ │ Lawn | Fence | FoundationPit | PlanBuild | ... │ │
│ └──────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ QdLayoutProvider │
├─────────────────────────────────────────────────────────┤
│ ┌──────────────────────────────────────────────────┐ │
│ │ 参数化三维模型生成器 │ │
│ │ QdLawnProvider | QdFoundationPitProvider | ... │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
每个场布元素都遵循统一的模型架构:
ElementType(元素类型定义)
↓
Element(元素实例)
├── 属性数据(Properties)
├── 几何数据(Geometry)
└── 样式数据(Style)
ElementAction(元素操作类)
├── Draw() - 二维绘制
├── GetControlGrips() - 控制点
└── SetDragGrip() - 夹点编辑
Element3dAction(三维操作类)
└── Get3dObject() - 三维对象生成
LightCAD使用特性标记的命令系统:
[CommandClass]
public class LayoutCmds
{
[CommandMethod(Name = "Lawn", ShortCuts = "LW")]
public CommandResult DrawLawn(IDocumentEditor docEditor, string[] args)
{
var lawnAction = new LawnAction(docEditor);
lawnAction.ExecCreatePoly(args);
return CommandResult.Succ();
}
}
熟悉C#语言
了解CAD基础概念
学习LightCAD框架
插件开发
元素开发
三维渲染
参数化设计
复杂交互
性能优化
本章介绍了FY_Layout的基本概念、项目结构和快速入门方法。FY_Layout是一个功能完善的场地布置插件,同时也是学习LightCAD二次开发的优秀范例。
通过学习本教程,您将能够:
下一章我们将详细介绍开发环境的搭建和项目配置。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。