






















| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| 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 10支持跨平台,但LightCAD当前的UI层(WinForms + Avalonia)主要面向Windows。未来版本可能扩展到Linux和macOS。
| 软件 | 版本要求 | 用途 |
|---|---|---|
| Visual Studio 2026 | 17.14 或更高 | 主要开发IDE |
| .NET 10 SDK | 最新版 | 编译和运行 |
| Git | 2.30+ | 版本控制 |
| NuGet | 内置于VS | 包管理 |
在Visual Studio Installer中,必须选择以下工作负载:
必选工作负载:
推荐额外安装的组件:
在"单独的组件"选项卡中,确保选择:
.NET 10 Runtime.NET 10 SDKWindows 10 SDK(最新版本)NuGet包管理器文本模板转换如果在安装VS时已选择.NET桌面开发工作负载,.NET 10 SDK通常会自动安装。
如果需要手动安装:
dotnet --version
# 应该输出 8.0.x
dotnet --list-sdks
# 应该包含 8.0.xxx
# 克隆主仓库
git clone https://github.com/znlgis/lightcad1.git
# 进入项目目录
cd lightcad1
https://github.com/znlgis/lightcad1.gitlightcad1/
│
├── LightCAD1.sln # 主解决方案文件
│
├── src/ # 源代码目录
│ │
│ ├── LightCAD.MathLib/ # 数学库项目
│ │ ├── LightCAD.MathLib.csproj
│ │ ├── Basic/ # 基础数学类型
│ │ ├── Curve/ # 曲线数学
│ │ ├── Intersection/ # 交集计算
│ │ └── Utilities/ # 工具函数
│ │
│ ├── LightCAD.Core/ # 核心项目
│ │ ├── LightCAD.Core.csproj
│ │ ├── Elements/ # 图元实体
│ │ │ ├── Basic/ # 2D基本图元
│ │ │ ├── Element3d/ # 3D图元
│ │ │ ├── Solid/ # 实体建模
│ │ │ ├── Dim/ # 2D标注
│ │ │ ├── Dim3/ # 3D标注
│ │ │ ├── Table/ # 表格元素
│ │ │ ├── Mass/ # 质量属性
│ │ │ ├── Misc/ # 杂项元素
│ │ │ ├── Ref/ # 引用元素
│ │ │ └── VoidElement/ # 空元素
│ │ └── ...
│ │
│ ├── LightCAD.RenderUtils/ # 渲染工具项目
│ │ ├── 3dcontrols/ # 3D控件
│ │ ├── AssetManagers/ # 资源管理
│ │ ├── ThreeUtils/ # Three.js工具
│ │ └── Events/ # 事件系统
│ │
│ ├── LightCAD.Drawing/ # 绘图项目
│ │ ├── InputSys/ # 输入系统
│ │ ├── Snap/ # 捕捉系统
│ │ ├── PViewPort/ # 视口组件
│ │ └── ViewPortRtAction/ # 视口运行时动作
│ │
│ ├── LightCAD.Runtime/ # 运行时项目
│ │ ├── ViewBuilder/ # 视图构建器
│ │ │ ├── ViewBuilder.cs # 核心构建器(71KB)
│ │ │ ├── ProjectioinProcessor.cs # 投影处理器(39KB)
│ │ │ ├── PolygonExt.cs # 多边形扩展
│ │ │ ├── BrepViewBuilder.cs # B-Rep视图构建
│ │ │ └── GpuVisibleFilter.cs # GPU可见性过滤
│ │ └── ...
│ │
│ ├── LightCAD.Model/ # UI模型控件
│ │ ├── ModelControl.axaml # 模型控件
│ │ ├── ModelEditor.axaml # 模型编辑器
│ │ ├── ModelViewControl.axaml # 模型视图控件
│ │ └── ModelStatusBar.axaml # 状态栏
│ │
│ ├── LightCAD.WinForm/ # WinForm应用
│ │ ├── Program.cs # 程序入口
│ │ └── Font/ # 字体资源
│ │ ├── TTF/ # TrueType字体
│ │ └── Shx/ # SHX CAD字体
│ │
│ ├── LightCAD.ImportAndExport/ # 导入导出
│ ├── LightCAD.Component.Actions/ # 组件操作
│ ├── LightCAD.PrjManager/ # 项目管理
│ ├── LightCAD.LocalSolution/ # 本地方案
│ ├── LightCAD.DBHelper/ # 数据库帮助
│ ├── LightCAD.DBUtility/ # 数据库工具
│ │
│ ├── Libs/ # 第三方DLL库
│ │ ├── ThreeJs4Net.dll # Three.js .NET封装
│ │ ├── OpenTK.dll # OpenGL绑定
│ │ └── ...
│ │
│ ├── Plugins/ # 预编译行业插件
│ │ ├── QdArch.dll # 建筑插件(591KB)
│ │ ├── QdElectric.dll # 电气插件(45KB)
│ │ ├── QdHvac.dll # 暖通插件(95KB)
│ │ ├── QdStruct.dll # 结构插件(173KB)
│ │ └── QdWater.dll # 给排水插件(201KB)
│ │
│ ├── ThirdParty/ # 第三方源码
│ │ ├── Weikio.PluginFramework/ # 插件框架
│ │ ├── Flee/ # 表达式求值
│ │ ├── RhinoInside/ # Rhino集成
│ │ └── Svg/ # SVG支持
│ │
│ └── netDxf/ # DXF处理库源码
│
├── test/ # 测试项目
│ ├── LightCAD.MathLib.Tests/ # 数学库单元测试
│ └── WinFormTest/ # 窗体功能测试
│
└── QuickStart/ # 快速入门示例
LightCAD1.sln是Visual Studio解决方案文件,包含了所有项目的引用和构建配置。使用Visual Studio打开此文件后,可以在解决方案资源管理器中看到完整的项目层次结构。
项目之间的依赖关系遵循分层架构原则:
LightCAD.WinForm
├── LightCAD.Runtime
│ ├── LightCAD.Drawing
│ │ ├── LightCAD.RenderUtils
│ │ │ └── LightCAD.Core
│ │ │ └── LightCAD.MathLib
│ │ └── LightCAD.Core
│ ├── LightCAD.RenderUtils
│ └── LightCAD.Core
├── LightCAD.Model
│ ├── LightCAD.Runtime
│ └── LightCAD.Core
├── LightCAD.ImportAndExport
├── LightCAD.Component.Actions
└── LightCAD.PrjManager
以LightCAD.MathLib项目为例,其.csproj文件的关键配置如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
</ItemGroup>
</Project>
关键配置项说明:
对于依赖Windows平台的项目(如WinForm),目标框架使用net10.0-windows:
<TargetFramework>net10.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
LightCAD的NuGet包依赖相对精简,主要包括:
<!-- 数学运算 -->
<PackageReference Include="MathNet.Numerics" Version="5.0.0" />
<!-- 图形基元 -->
<PackageReference Include="System.Drawing.Common" Version="8.0.1" />
<!-- 实时通信 -->
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.4" />
首次打开项目或切换分支后,需要还原NuGet包:
方法一:通过Visual Studio
方法二:通过命令行
# 在解决方案目录下运行
dotnet restore LightCAD1.sln
LightCAD的一些核心依赖以本地DLL的方式提供,位于src/Libs/目录:
这些DLL通过项目文件中的Reference引用:
<ItemGroup>
<Reference Include="ThreeJs4Net">
<HintPath>..\Libs\ThreeJs4Net.dll</HintPath>
</Reference>
<Reference Include="OpenTK">
<HintPath>..\Libs\OpenTK.dll</HintPath>
</Reference>
</ItemGroup>
# 命令行编译(Debug)
dotnet build LightCAD1.sln --configuration Debug
# 或者在Visual Studio中按 Ctrl+Shift+B
# 命令行编译(Release)
dotnet build LightCAD1.sln --configuration Release
问题1:找不到ThreeJs4Net.dll
error CS0006: 找不到元数据文件 'ThreeJs4Net.dll'
解决:确认src/Libs/目录下存在对应的DLL文件。如果DLL未包含在Git仓库中,需要从发布包中获取。
问题2:.NET SDK版本不匹配
error : The current .NET SDK does not support targeting .NET 10
解决:安装最新的.NET 10 SDK。
问题3:Windows Forms相关错误
error : The project targets 'net10.0-windows' but is being built on a non-Windows platform
解决:LightCAD的WinForm项目仅支持在Windows上编译,确保在Windows平台进行开发。
问题4:NuGet包还原失败
error NU1301: Unable to load the service index for source
解决:检查网络连接,或配置NuGet镜像源。国内开发者可以使用华为或阿里云的NuGet镜像。
LightCAD.WinForm项目断点调试:
在关键代码处设置断点,例如:
LightCAD.Core中的实体创建方法LightCAD.Drawing中的视口渲染方法LightCAD.Runtime中的视图构建器条件断点:
对于频繁调用的方法(如渲染循环),使用条件断点避免频繁中断:
entityCount > 100输出窗口:
利用Debug.WriteLine()在输出窗口显示调试信息,不影响正式发布版本的性能。
确保.gitignore文件包含以下内容,避免将编译产物提交到仓库:
# Build results
bin/
obj/
# Visual Studio
.vs/
*.user
*.suo
# NuGet
packages/
# OS files
Thumbs.db
.DS_Store
对于LightCAD的开发,建议采用以下分支策略:
| 扩展名称 | 用途 |
|---|---|
| ReSharper | 代码分析和重构 |
| CodeMaid | 代码清理和格式化 |
| XAML Styler | AXAML格式化 |
| GitLens | Git增强功能 |
| 工具 | 用途 |
|---|---|
| dnSpy | .NET反编译和调试 |
| ILSpy | IL代码查看 |
| dotPeek | JetBrains反编译工具 |
| PerfView | 性能分析 |
| WinDbg | Windows底层调试 |
| RenderDoc | GPU渲染调试 |
建议在解决方案根目录创建.editorconfig文件,统一团队的代码风格:
[*.cs]
# 缩进设置
indent_style = space
indent_size = 4
# 使用var关键字
csharp_style_var_for_built_in_types = true
csharp_style_var_when_type_is_apparent = true
# 花括号样式
csharp_new_line_before_open_brace = all
# 命名规范
dotnet_naming_rule.public_members_must_be_capitalized.severity = warning
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
dotnet_naming_rule.public_members_must_be_capitalized.style = first_word_upper_case_style
LightCAD使用自定义的.lbuild文件来管理构建版本号。每次编译时版本号会自动递增,便于追踪和回溯问题。
由于项目启用了GenerateDocumentationFile选项,编译时会同时生成XML文档文件。在编写代码时,建议为所有公开的类和方法添加XML注释:
/// <summary>
/// 创建一条从起点到终点的直线实体
/// </summary>
/// <param name="startPoint">直线的起始点</param>
/// <param name="endPoint">直线的终止点</param>
/// <returns>创建的直线实体对象</returns>
public LcLine CreateLine(Point2d startPoint, Point2d endPoint)
{
// ...
}
本章详细介绍了LightCAD开发环境的搭建过程,包括硬件和软件要求、Visual Studio的安装配置、源代码获取、项目结构解析、NuGet包管理、编译调试流程以及开发工具推荐。正确搭建开发环境是顺利进行后续学习和开发的前提,请确保所有环境配置完成并能够成功编译和运行项目。
下一章:第三章:核心架构与分层设计
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。