惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
About on SuperTechFans
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
G
Google Developers Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Latest news
Latest news
I
Intezer
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
月光博客
月光博客
T
Threatpost
博客园 - 【当耐特】
S
Schneier on Security
P
Privacy International News Feed
G
GRAHAM CLULEY
T
Tenable Blog
AWS News Blog
AWS News Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
博客园 - Franky
Engineering at Meta
Engineering at Meta
美团技术团队
S
Secure Thoughts
T
Troy Hunt's Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第15章:插件与自定义工作台开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw 第07章:参数化表达式与Spreadsheet 第08章:装配设计Assembly 第06章:Part工作台与几何内核 第05章:PartDesign实体特征建模 第04章:草图Sketcher约束建模 第02章:安装版本与工作环境配置 第03章:界面工作台与基础操作 第01章:项目全景与学习路线 第十二章:插件开发、研究功能与最佳实践 第十章:定时任务与自动化(Cron) 第七章:技能、记忆与自学习闭环 第八章:MCP 集成与上下文文件 第六章:工具系统与终端后端 第五章:模型供应商与配置体系 Hermes Agent 教程目录 第十一章:语音、视觉、浏览器与子代理协作 第四章:CLI/TUI 与会话管理 第十二章:学习路线、实战方案与最佳实践 第十一章:源码结构、开发调试与插件开发 第十章:自动化、远程访问、日志与排障 第九章:Control UI、节点、Canvas 与语音能力 第七章:工具、技能、插件与能力扩展 第八章:安全模型、访问控制与沙箱实践 第六章:Agent 工作区、会话与多智能体路由 第五章:多通道消息接入与聊天平台配置 第四章:配置体系、模型接入与认证管理 第三章:Gateway 架构、协议与运行机制 第二章:安装、环境准备与快速上手 第一章:OpenClaw 项目概览与核心定位 oh-my-openagent 教程目录 09-命令模型回退与配置参考 10-实战案例最佳实践与故障排除 05-工作模式-Ultrawork-Prometheus-Atlas 08-Hooks与MCP系统 06-Category与Skill系统 07-核心工具链 04-智能体全景详解 03-安装与环境配置 02-整体架构与多模型编排机制 01-项目简介与核心理念 01-项目概览与学习路线 02-安装部署与工具适配 03-Skill机制与using-superpowers 05-TDD系统化调试与完成前验证 04-需求澄清方案设计与计划编写 07-并行智能体子智能体与Git-Worktree 第六章:代码审查、反馈处理与分支收尾 08-中国特色Skills与本土团队落地 09-MCP构建工作流执行与自定义Skill 第23章:FreeCAD-Python-API Clipper2 C# 源码解读教程 第19章:PolyTree 多边形树结构 第20章:实际应用与最佳实践 第18章:Minkowski 和与差 第17章:RectClip 矩形裁剪优化 第16章:ClipperOffset 偏移类详解 第15章:填充规则详解 第14章:布尔运算执行流程 第13章:ClipperD 浮点裁剪类 第11章:OutRec 与 OutPt 输出结构 第9章:Active 活动边结构 第10章:Vertex 顶点与 LocalMinima 局部极小值 第12章:Clipper64 裁剪类详解 第7章:高精度运算与128位整数 第8章:ClipperBase 基类详解 第5章:枚举类型与常量定义 第6章:InternalClipper 内部工具类 第2章:核心数据结构 - Point64、PointD 第3章:路径与多边形表示 - Path64、PathD、Paths64、PathsD 第4章:矩形边界 - Rect64、RectD
FY_Layout概述与入门
我才是银古 · 2026-06-19 · via 博客园 - 我才是银古

第一章:FY_Layout概述与入门

1.1 飞扬集成设计平台简介

1.1.1 平台定位与背景

飞扬集成设计平台(FY_Layout)是一个面向建筑工程设计行业的开源BIM正向设计支撑软件。该平台致力于融合二维设计、三维设计、BIM设计、智能设计、协同设计为一体,为建筑设计师和工程师提供一个完整的设计解决方案。

FY_Layout作为飞扬集成设计平台的场地布置二次开发插件示例,展示了如何基于LightCAD核心框架进行专业功能的扩展开发。这个项目不仅是一个功能完善的场布设计工具,更是一个优秀的CAD二次开发学习范例。

1.1.2 项目仓库信息

  • 仓库地址https://gitee.com/qidaosoft/FY_Layout
  • 授权协议:CC-BY-NC 4.0
  • 核心框架:基于LightCAD/LightBIM平台
  • 开发语言:C#
  • 开发环境:Visual Studio 2026 社区版(17.14以上)
  • 目标框架:.NET 10 Windows

1.1.3 业务愿景

飞扬集成设计平台的核心业务愿景包括:

  1. 功能精简化:对流行的CAD系统进行功能裁剪,确保系统的简洁及稳定性
  2. 开源透明:对所有核心代码开源,文件格式开放,兼容DWG/DXF格式,并与主流模型格式互通
  3. 插件体系:建立统一管理的插件体系,确保插件间的互操作性,规范部署及自动发布
  4. 二三维一体化:实现与二维设计全兼容的三维组件体系,支持建筑、结构、机电专业的二三维组件设计

1.2 FY_Layout功能概述

1.2.1 核心功能模块

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

1.2.2 技术特点

  1. 二三维一体化

    • 所有场布元素同时支持二维绘制和三维显示
    • 实时切换二维/三维视图
    • 统一的数据模型
  2. 参数化设计

    • 所有元素支持参数化定义
    • 支持实时参数修改
    • 自动更新图形显示
  3. 多种创建方式

    • 任意多边形绘制
    • 矩形快速绘制
    • 已有多段线转换
  4. 专业化属性

    • 基坑支持放坡系数设置
    • 土方支持标高设置
    • 材质和样式自定义

1.3 项目结构分析

1.3.1 解决方案结构

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/                       # 编译输出目录
└── 飞扬主程序/                  # 主程序文件夹

1.3.2 核心依赖说明

依赖库 功能说明
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文件处理

1.4 快速开始

1.4.1 环境准备

  1. 安装Visual Studio 2026

    • 版本要求:17.14或更高版本
    • 安装.NET桌面开发工作负载
    • 安装.NET 10 SDK
  2. 克隆代码仓库

    git clone https://gitee.com/qidaosoft/FY_Layout.git
    cd FY_Layout
    
  3. 打开解决方案

    • 使用VS2022打开LightBIM.sln

1.4.2 编译与运行

  1. 还原NuGet包

    • 解决方案会自动还原依赖包
  2. 选择配置

    • 配置选择:Debug 或 Release
    • 平台:Any CPU
  3. 编译项目

    • 按F6或选择"生成→生成解决方案"
    • 编译输出到Build目录
  4. 调试运行

    • 主程序位于飞扬主程序文件夹下的lightcad.EXE
    • 支持VS2022附加进程断点调试

1.4.3 项目配置说明

QdLayout项目的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>

1.5 架构概览

1.5.1 插件架构

FY_Layout采用标准的LightCAD插件架构:

┌─────────────────────────────────────────────────────────┐
│                   LightCAD 主程序                        │
├─────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │  ILcPlugin   │  │  LcDocument  │  │  LcRuntime   │  │
│  │  插件接口    │  │  文档管理    │  │  运行时环境  │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
├─────────────────────────────────────────────────────────┤
│                   QdLayout 插件                          │
├─────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │LayoutPlugin  │  │ LayoutCmds   │  │ElementTypes  │  │
│  │  插件入口    │  │  命令定义    │  │  元素类型    │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
│  ┌──────────────────────────────────────────────────┐  │
│  │                场布元素模块                        │  │
│  │  Lawn | Fence | FoundationPit | PlanBuild | ...  │  │
│  └──────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────┤
│                 QdLayoutProvider                         │
├─────────────────────────────────────────────────────────┤
│  ┌──────────────────────────────────────────────────┐  │
│  │           参数化三维模型生成器                     │  │
│  │  QdLawnProvider | QdFoundationPitProvider | ...  │  │
│  └──────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘

1.5.2 元素模型

每个场布元素都遵循统一的模型架构:

ElementType(元素类型定义)
    ↓
Element(元素实例)
    ├── 属性数据(Properties)
    ├── 几何数据(Geometry)
    └── 样式数据(Style)
    
ElementAction(元素操作类)
    ├── Draw() - 二维绘制
    ├── GetControlGrips() - 控制点
    └── SetDragGrip() - 夹点编辑

Element3dAction(三维操作类)
    └── Get3dObject() - 三维对象生成

1.5.3 命令系统

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();
    }
}

1.6 学习路径建议

1.6.1 基础阶段

  1. 熟悉C#语言

    • 掌握面向对象编程
    • 理解async/await异步编程
    • 了解泛型和委托
  2. 了解CAD基础概念

    • 坐标系统
    • 图层管理
    • 几何图形
  3. 学习LightCAD框架

    • 文档结构
    • 元素类型
    • 事务机制

1.6.2 进阶阶段

  1. 插件开发

    • ILcPlugin接口实现
    • 命令系统
    • UI集成
  2. 元素开发

    • 自定义元素类型
    • ElementAction实现
    • 属性编辑器
  3. 三维渲染

    • ThreeJs4Net基础
    • 材质与纹理
    • 模型生成

1.6.3 高级阶段

  1. 参数化设计

    • Provider系统
    • 参数表达式
    • 动态模型
  2. 复杂交互

    • 夹点编辑
    • 捕捉系统
    • 实时预览
  3. 性能优化

    • 绘图优化
    • 内存管理
    • 异步处理

1.7 本章小结

本章介绍了FY_Layout的基本概念、项目结构和快速入门方法。FY_Layout是一个功能完善的场地布置插件,同时也是学习LightCAD二次开发的优秀范例。

通过学习本教程,您将能够:

  • 理解LightCAD插件开发的基本架构
  • 掌握场布元素的实现方法
  • 学会二维绘制和三维渲染的技术
  • 具备独立开发CAD插件的能力

下一章我们将详细介绍开发环境的搭建和项目配置。