G
GAMA 结构数智化教学实践平台 二次开发流程与范例教学
土木工程数智化教学课程

土木工程数智化教学与创新实践平台二次开发流程

基于 GAMA (ProjectPenguin) 架构,从 .NET 项目搭建、代码规范解耦、后处理事件部署到 AI 驱动的多类型结构生成实践。

COURSE OUTLINE

二次开发课程全景大纲

涵盖二次开发底层逻辑、工程构建、断点调试、代码规范与 AI 智能生成的完整闭环。

CHAPTER 01 .NET 4.7.2 项目创建 SDK 风格工程配置、net472 目标框架与 x64 平台锁死机制
CHAPTER 02 后处理事件与自动部署 CopyCrd MSBuild 自动化 Target,编译后 DLL 拷贝至指定目录并变为 .crd 文件
CHAPTER 03 核心 DLL 依赖配置 GAMA 核心组件引用解析及 Private=false 防冲突设置
CHAPTER 04 标准插件 7 步解耦规范 AddingStructurePreviewCardBase 结构与架构分层法
CHAPTER 05 框架结构代码实战 柱底嵌固、梁上线荷载及 GenerateSlabs 自动楼板分析
CHAPTER 06 AI 智能生成复杂结构 基于 CardTemplate 标准模板 prompt 批量扩展跨专业结构
CHAPTER 01

.NET 4.7.2 二次开发项目的创建

使用最新的 SDK 风格格式创建 .NET Framework 4.7.2 类库工程,实现高效编译与架构匹配。

  • 1

    目标框架设定 (`net472`)

    配合 GAMA 宿主环境,必须指定 `net472` 框架。

  • 2

    强制 x64 平台锁定

    在 `.csproj` 中指定 `x64`,消除宿主加载时 `MSB3270` 架构不匹配警告。

  • 3

    类库输出 (`Library`)

    设置 `Library`,编译产出二次开发 DLL 组件。

MyGamaCards.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net472</TargetFramework> <OutputType>Library</OutputType> <LangVersion>latest</LangVersion> <Platforms>x64</Platforms> <PlatformTarget>x64</PlatformTarget> </PropertyGroup> <!-- 启动外部宿主联调调试配置 --> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <StartAction>Program</StartAction> <StartProgram>C:\Program Files (x86)\E-GAMA\NsClientSideLicenseManagerWpf.exe</StartProgram> <StartWorkingDirectory>C:\Program Files (x86)\E-GAMA</StartWorkingDirectory> </PropertyGroup> </Project>
CHAPTER 02

后处理事件:DLL 自动部署为 .crd 文件

使用 MSBuild 构建生成后事件 Target,在项目编译完成后自动将产出的 DLL 文件拷贝至 GAMA 自定义卡片加载目录,并无缝重命名为 .crd 文件。

1 后处理事件触发器 (`AfterTargets="Build"`)

使用 MSBuild `` 机制,在每次项目代码成功编译后自动触发文件复制操作,无需手动拷贝。

2 扩展名转化 (`.dll` ➔ `.crd`)

将编译产物 `$(TargetPath)` 自动输出发布至 `%AppData%\nonstructure\Penguin\Cards\$(AssemblyName).crd`,实现 GAMA 宿主实时自动识别加载。

CopyCrd MSBuild Target 配置
<!-- 编译后自动复制 DLL 文件到 GAMA 卡片目录并重命名为 .crd --> <Target Name="CopyCrd" AfterTargets="Build"> <Copy SourceFiles="$(TargetPath)" DestinationFiles="$(AppData)\nonstructure\Penguin\Cards\$(AssemblyName).crd" SkipUnchangedFiles="false" /> </Target>
CHAPTER 03

需要引用的核心 DLL 配置

正确配置 GAMA 宿主的核心底层库,并指定 `false`,防止打包时程序集冗余与冲突。

1

ProjectPenguin.dll

卡片基类 `ProcessorCardBase` 与端口注册逻辑的核心提供者。

2

NSGeo3dm.dll / NSFramework.dll

三维几何计算引擎 (`Point3d`, `LineCurve`) 与结构模型 (`NSModel`, `NSBeam`, `NSColumn`) 数据结构。

3

NSStructurePreview.dll

提供模型 3D 渲染与实时预览接口基类 `AddingStructurePreviewCardBase`。

ItemGroup 引用配置
<ItemGroup> <Reference Include="ProjectPenguin"> <HintPath>C:\Program Files (x86)\E-GAMA\ProjectPenguin.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="NSGeo3dm"> <HintPath>C:\Program Files (x86)\E-GAMA\NSGeo3dm.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="NSFramework"> <HintPath>C:\Program Files (x86)\E-GAMA\NSFramework.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="NSStructurePreview"> <HintPath>C:\Program Files (x86)\E-GAMA\NSStructurePreview.dll</HintPath> <Private>false</Private> </Reference> </ItemGroup>
CHAPTER 04

标准二次开发卡片代码规范 (7 步解耦法)

推行标准化、解耦化的 7 步写卡范式,极大提高代码在数智化教学与工程实践中的可读性与复用性。

STEP 01

输入安全提取与校验

`idd.GetDataItem` 防守判空与边界检查。

STEP 02

数据模型与层定义

创建 `NSModel` 并配置标准层 `NSStdFloor`。

STEP 03

三维几何控制点计算

计算 `Point3d`,在 XZ 平面上解耦几何定义。

STEP 04

拓扑构件实例化

生成 `NSBeam`, `NSColumn`, `NSBrace` 纯对象。

STEP 05

节点支座约束赋予

通过 `NSRelease.SetFixed()` / `SetHinge()` 绑定 `NSJoint` 支座。

STEP 06

截面分配与荷载施加

给杆件赋值 `Section` 及 `DistributedLoad.Q` 均布线荷载。

STEP 07

组装归并与渲染出口

`ClassifyFloorByTower` 组装,并推送到 3D 视口和几何出口。

CHAPTER 05

框架结构卡片实战 (`FrameModelCard`)

演示包含柱底嵌固、梁上线荷载、以及自动搜寻闭合梁格生成楼板面荷载的高战力实战。

柱底固定嵌固端约束

在 Z=0 柱根新建 `NSRelease.SetFixed()` 节点,保证结构力学计算收敛。

`modelData.GenerateSlabs()` 楼板自动分析

无需手动建立面拓扑,GAMA 引擎自动识别被梁包裹的闭合环,自动生成带 `Dead`/`Live` 荷载的楼板。

FrameModelCard.cs 核心逻辑片段
// 1. 柱底嵌固支座约束 var fixedRelease = new NSRelease(); fixedRelease.SetFixed(); // 固定平动与转动 var specialJoint = new NSSpecialJointWrapper() { Constraint = fixedRelease }; var joint = new NSJoint() { Location = basePoint, SpecialJoint = specialJoint }; modelData.AddElement(joint); // 2. 梁上线均布荷载 var distLoad = (DistributedLoad)NSBWLoad.CreateLoadByType(BWLoadType.均布荷载); distLoad.Q = beamLineLoadValue; // kN/m beam.Load = new List<NSBWLoad> { distLoad }; // 3. 自动识别梁网格生成楼板并自动赋予标准层板荷载 modelData.GenerateSlabs(); modelData.ClassifyFloorByTower();
CHAPTER 06

AI 智能扩展:从标准模板到任意结构

将 [CardTemplate.cs](file:///e:/2026/20260719_直播课/MyGamaCards/CardTemplate.cs) 作为 Prompt 上下文提供给 AI (如 Claude / Antigravity),快速一键扩充复杂工程结构。

1 AI Prompt 命令构造

"参考 `CardTemplate.cs` 的 7 步解耦结构,为我生成一个【参数化抛物线网壳/斜拉桥模型卡片】,包含支座约束与 3D 预览。"

2 教学与实践产出

零代码报错,快速自动生成如 `TrussModelCard`、`PortalFrameCard` 等高性能卡片,大大降低学生与工程师二次开发门槛!

CardTemplate.cs 通用模板结构
public class CardTemplate : AddingStructurePreviewCardBase { public CardTemplate() : base("模板卡片", "模板", "描述", "结构模型", "模型生成") { } public override string EnglishAlias => "CardTemplate"; protected override StructurePreviewMode PreviewMode => StructurePreviewMode.ModelMode; public override Guid CardGuid => Guid.Parse("{11111111-2222-3333-4444-555555555555}"); public override void Build(IDataDelivery idd) { // STEP 1: 提取端口数据 // STEP 2: 创建 NSModel & NSStdFloor // STEP 3: 计算 3D 控制点 (XZ平面) // STEP 4: 实例化构件 // STEP 5: 节点支座约束 (NSRelease) // STEP 6: 截面与均布线荷载 (DistributedLoad.Q) // STEP 7: 组装、三维预览渲染与出口导出 } }
SUMMARY

数智化土木二次开发教学体验升级

通过规范化工程配置、标准 7 步解耦架构与 AI 协作生成,让每位师生都能轻松掌握 GAMA 平台的二次开发!

100%

断点命中与联调率

7 Steps

标准化解耦教学规范

AI Powered

模板驱动批量扩展