
























| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | Intel Core i5 或同等性能 | Intel Core i7/i9 或 AMD Ryzen 7/9 |
| 内存 | 8GB RAM | 16GB RAM 或更高 |
| 硬盘 | 50GB 可用空间(SSD推荐) | 100GB SSD |
| 显卡 | 支持OpenGL 3.3的独立显卡 | NVIDIA GTX 1060 或更高 |
| 显示器 | 1920×1080 分辨率 | 2560×1440 或更高 |
操作系统
开发工具
运行时环境
版本控制
下载安装程序
选择工作负载
在安装程序中选择以下工作负载:
☑ .NET 桌面开发
├── .NET Framework 4.8 开发工具
├── .NET 10 运行时
└── Windows Forms 设计器
☑ 使用C++的桌面开发(可选,用于调试原生代码)
选择单个组件
确保包含以下组件:
配置文本编辑器
工具 → 选项 → 文本编辑器 → C# → 高级
☑ 在键入时显示行分隔符
☑ 启用完整解决方案分析
☑ 使用EditorConfig设置(推荐)
配置调试选项
工具 → 选项 → 调试 → 常规
☑ 启用"仅我的代码"
☐ 启用.NET Framework源单步执行(调试框架时启用)
☑ 启用源服务器支持
配置NuGet
工具 → 选项 → NuGet包管理器
☑ 允许NuGet下载缺少的包
☑ 自动检查缺少的包
方法一:使用命令行
# 创建工作目录
mkdir D:\Projects\CAD
cd D:\Projects\CAD
# 克隆仓库
git clone https://gitee.com/qidaosoft/FY_Layout.git
# 进入项目目录
cd FY_Layout
方法二:使用VS2022
https://gitee.com/qidaosoft/FY_Layout.git打开LightBIM.sln后,可以看到以下项目结构:
解决方案 'LightBIM'
├── WorkingDrawing(解决方案文件夹)
│ ├── Plugins(解决方案文件夹)
│ │ └── QdLayout(项目)- 主插件项目
│ └── Providers(解决方案文件夹)
│ └── QdLayoutProvider(项目)- 三维Provider项目
QdLayout.csproj 完整配置:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- 目标框架:.NET 10 Windows专用 -->
<TargetFramework>net10.0-windows</TargetFramework>
<!-- 启用Windows Forms支持 -->
<UseWindowsForms>true</UseWindowsForms>
<!-- 启用隐式using -->
<ImplicitUsings>enable</ImplicitUsings>
<!-- 启用可空引用类型 -->
<Nullable>enable</Nullable>
<!-- 输出路径设置到Build目录 -->
<BaseOutputPath>..\Build</BaseOutputPath>
</PropertyGroup>
<!-- 排除不需要编译的文件 -->
<ItemGroup>
<Compile Remove="bin\**" />
<Compile Remove="新文件夹\**" />
<EmbeddedResource Remove="bin\**" />
<EmbeddedResource Remove="新文件夹\**" />
<None Remove="bin\**" />
<None Remove="新文件夹\**" />
</ItemGroup>
<!-- 引用LightCAD核心库 -->
<ItemGroup>
<Reference Include="LightCAD.Core">
<HintPath>..\Libs\LightCAD.Core.dll</HintPath>
</Reference>
<Reference Include="LightCAD.Drawing">
<HintPath>..\Libs\LightCAD.Drawing.dll</HintPath>
</Reference>
<Reference Include="LightCAD.Drawing.Actions">
<HintPath>..\Libs\LightCAD.Drawing.Actions.dll</HintPath>
</Reference>
<Reference Include="LightCAD.MathLib">
<HintPath>..\Libs\LightCAD.MathLib.dll</HintPath>
</Reference>
<Reference Include="LightCAD.Model">
<HintPath>..\Libs\LightCAD.Model.dll</HintPath>
</Reference>
<Reference Include="LightCAD.RenderUtils">
<HintPath>..\Libs\LightCAD.RenderUtils.dll</HintPath>
</Reference>
<Reference Include="LightCAD.Runtime">
<HintPath>..\Libs\LightCAD.Runtime.dll</HintPath>
</Reference>
<Reference Include="ThreeJs4Net">
<HintPath>..\Libs\ThreeJs4Net.dll</HintPath>
</Reference>
<!-- 其他第三方库 -->
<Reference Include="Newtonsoft.Json">
<HintPath>..\Libs\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="netDxf">
<HintPath>..\Libs\netDxf.dll</HintPath>
</Reference>
<Reference Include="Svg">
<HintPath>..\Libs\Svg.dll</HintPath>
</Reference>
<Reference Include="OpenTK">
<HintPath>..\Libs\OpenTK.dll</HintPath>
</Reference>
<Reference Include="OpenTK.WinForms">
<HintPath>..\Libs\OpenTK.WinForms.dll</HintPath>
</Reference>
<Reference Include="Flee">
<HintPath>..\Libs\Flee.dll</HintPath>
</Reference>
<Reference Include="WinFormsUI">
<HintPath>..\Libs\WinFormsUI.dll</HintPath>
</Reference>
</ItemGroup>
<!-- 资源文件配置 -->
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>
| 库名称 | 版本 | 功能描述 |
|---|---|---|
| LightCAD.Core | - | 核心框架,包含文档模型、元素定义、事务管理等 |
| LightCAD.Drawing | - | 二维绘图引擎,提供Canvas、Paint等绘图接口 |
| LightCAD.Drawing.Actions | - | 绘图操作类,包含Action基类和交互处理 |
| LightCAD.MathLib | - | 数学库,包含Vector、Matrix、Box、几何算法等 |
| LightCAD.Model | - | 模型定义,包含组件、参数集等 |
| LightCAD.Runtime | - | 运行时环境,包含命令系统、UI框架等 |
| LightCAD.RenderUtils | - | 渲染工具类 |
| LightCAD.DBUtility | - | 数据库工具类 |
| 库名称 | 版本 | 功能描述 |
|---|---|---|
| ThreeJs4Net | - | 基于OpenGL的三维渲染引擎(Three.js的.NET实现) |
| Newtonsoft.Json | 13.0+ | JSON序列化/反序列化 |
| netDxf | - | DXF文件格式读写 |
| Svg | - | SVG图形处理 |
| OpenTK | 4.0+ | OpenGL绑定库 |
| OpenTK.WinForms | - | OpenTK的WinForms集成 |
| Flee | - | 表达式求值引擎 |
| WinFormsUI | - | DockPanel等WinForms UI控件 |
Libs/
├── LightCAD.Core.dll
├── LightCAD.Core.pdb # 调试符号文件
├── LightCAD.Drawing.dll
├── LightCAD.Drawing.Actions.dll
├── LightCAD.MathLib.dll
├── LightCAD.Model.dll
├── LightCAD.Runtime.dll
├── LightCAD.RenderUtils.dll
├── LightCAD.DBUtility.dll
├── ThreeJs4Net.dll
├── Newtonsoft.Json.dll
├── netDxf.dll
├── Svg.dll
├── OpenTK.dll
├── OpenTK.WinForms.dll
├── Flee.dll
├── WinFormsUI.dll
└── ...其他依赖
FY_Layout使用C# 10的全局using功能简化代码:
// GlobalUsing.cs - QdLayout项目
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Text;
global using System.Threading.Tasks;
// LightCAD核心命名空间
global using LightCAD.MathLib; // 数学库:Vector2, Matrix3, Box2等
global using LightCAD.Core; // 核心:LcElement, LcDocument等
global using LightCAD.Runtime; // 运行时:命令系统、常量等
global using LightCAD.Drawing; // 绘图:LcCanvas2d, LcPaint等
global using LightCAD.Drawing.Actions; // 操作:Action基类等
global using LightCAD.Model; // 模型:组件定义等
global using LightCAD.Core.Elements; // 元素:基础元素类型
global using ThreeJs4Net; // 三维:Shape, Mesh等
global using LightCAD.RenderUtils; // 渲染工具
// 类型别名解决命名冲突
global using Constants = LightCAD.Runtime.Constants;
global using Color = LightCAD.MathLib.Color;
global using Shape = ThreeJs4Net.Shape;
// 项目内部静态导入
global using static QdLayout.QdLayoutCategorySettings;
| 命名空间 | 核心类 | 用途 |
|---|---|---|
| LightCAD.MathLib | Vector2, Vector3, Matrix3, Box2, Polyline2d | 几何计算 |
| LightCAD.Core | LcDocument, LcElement, ElementType, LcGuid | 文档模型 |
| LightCAD.Runtime | ILcPlugin, CommandClass, AppRuntime | 运行时 |
| LightCAD.Drawing | LcCanvas2d, LcPaint, LcTextPaint | 二维绘图 |
| LightCAD.Drawing.Actions | DirectComponentAction, PointInputer | 交互操作 |
| LightCAD.Model | DirectComponent, LcParameterSet | 组件模型 |
| ThreeJs4Net | Shape, Mesh, Material, Geometry | 三维渲染 |
Debug配置
Release配置
编译步骤:
1. 打开解决方案
2. 选择配置(Debug/Release)
3. 选择平台(Any CPU)
4. 生成 → 生成解决方案(F6)
5. 检查输出窗口确认编译成功
方法一:直接调试(推荐)
设置QdLayout为启动项目
配置调试属性:
右键项目 → 属性 → 调试 → 打开调试启动配置文件UI
{
"profiles": {
"QdLayout": {
"commandName": "Executable",
"executablePath": "$(SolutionDir)飞扬主程序\\lightcad.EXE",
"workingDirectory": "$(SolutionDir)飞扬主程序"
}
}
}
设置断点
按F5开始调试
方法二:附加进程调试
lightcad.EXElightcad.exe进程条件断点
// 右键断点 → 条件
// 设置条件:element.Name == "草坪"
日志断点(Tracepoint)
// 右键断点 → 操作
// 输出:$"Element: {element.Name}, Type: {element.Type}"
即时窗口
// 调试时打开:调试 → 窗口 → 即时
? element.BoundingBox
? lawn.Outline.Curve2ds.Count
添加新项目
MyCustomPlugin配置项目文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<BaseOutputPath>..\Build</BaseOutputPath>
</PropertyGroup>
<ItemGroup>
<!-- 添加LightCAD引用 -->
<Reference Include="LightCAD.Core">
<HintPath>..\Libs\LightCAD.Core.dll</HintPath>
</Reference>
<!-- 添加其他需要的引用... -->
</ItemGroup>
</Project>
添加GlobalUsing.cs
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using LightCAD.Core;
global using LightCAD.Runtime;
global using LightCAD.Drawing;
global using LightCAD.MathLib;
创建插件入口类
namespace MyCustomPlugin
{
public class MyPlugin : ILcPlugin
{
public void InitUI()
{
// UI初始化
}
public void Loaded()
{
// 插件加载时执行
Console.WriteLine("MyPlugin Loaded!");
}
public void Completed()
{
// 完成初始化后执行
}
public void OnInitializeDocRt(DocumentRuntime docRt)
{
// 文档运行时初始化
}
public void OnDisposeDocRt(DocumentRuntime docRt)
{
// 文档运行时销毁
}
}
}
LightCAD会自动扫描并加载实现了ILcPlugin接口的类。确保:
问题1:找不到引用的程序集
错误 CS0246: 未能找到类型或命名空间名"LightCAD"
解决方案:检查Libs目录是否完整,引用路径是否正确。
问题2:.NET版本不匹配
错误 NETSDK1045: 当前 .NET SDK 不支持将 .NET 10 设定为目标
解决方案:安装.NET 10 SDK。
问题1:无法加载程序集
System.IO.FileNotFoundException: 未能加载文件或程序集
解决方案:确保所有依赖DLL都已复制到输出目录。
问题2:OpenGL初始化失败
OpenTK.Graphics.GraphicsContextException: ...
解决方案:更新显卡驱动,确保支持OpenGL 3.3+。
问题1:断点不命中
解决方案:
问题2:附加进程后无法调试
解决方案:
本章详细介绍了FY_Layout开发环境的搭建过程,包括:
掌握了开发环境的配置后,下一章我们将深入学习FY_Layout的核心架构与模块设计。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。