Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 工业软件 / Industrial Software

SAM 平台开发 / SAM Platform Development

1. SAM 二次开发总览与证据分级 / SAM Secondary Development Overview and Evidence Levels

2. 从 P0 到 P5:SAM 插件界面开发流程 / SAM Plugin Interface Development from P0 to P5

3. PYD 注册、Model Fragment 与 Part Fragment / PYD Registration, Model Fragments, and Part Fragments

4. Python 2 SAM API:已验证接口与失败清单 / Verified Python 2 SAM APIs and Known Failures

5. C++ SAM SDK:模型、网格与 ODB 接口 / C++ SAM SDK APIs for Models, Meshes, and ODB Data

6. SAM 参数化构件建模:从二维轮廓到三维网格 / SAM Parametric Component Modeling from 2D Profiles to 3D Meshes

7. Agent 接入 SAM:插件架构、工具注册与安全边界 / Integrating AI Agents into SAM with Plugins, Tools, and Safety Boundaries

8. SAM API 验证工作流:禁止猜测与七级验收门 / A Seven-Gate SAM API Validation Workflow Without Guesswork

9. 真实案例、当前边界与后续路线 / Validated Cases, Current Boundaries, and the Development Roadmap

10. SAM 二次开发指南:架构总览与系列索引 / SAM Secondary Development Architecture and Series Index

11. SAM GUI、Toolset 与交互类 API / SAM GUI, Toolset, and Interaction APIs

12. SAM 命令桥、Python 与 PYD 扩展 API / SAM Command Bridge, Python, and PYD Extension APIs

13. SAM 数据模型、Part 与 Mesh API / SAM Data Models, Parts, and Mesh APIs

14. SAM 场景、显示表示与渲染 API / SAM Scene, Display Representation, and Rendering APIs

15. SAM 插件编译、部署与故障排查 / Building, Deploying, and Troubleshooting SAM Plugins

16. SAM 二次开发旧入口 / Legacy Entry for SAM Secondary Development

17. SAM 二次开发知识体系 / SAM Secondary Development Knowledge System

本页目录

SAM 二次开发总览与证据分级 / SAM Secondary Development Overview and Evidence Levels ​

📅 创建时间:2026-07-23
🏷️ 标签:#SAM #二次开发 #架构 #API验证
📚 前置知识:Python、C++/Qt、有限元基础
📖 系列导航:总目录 · 下一篇:01-plugin-p0-p5


📋 文档目标 ​

本文档建立 SAM V2026 二次开发的完整心智模型,重点解决以下问题:

  • SAM 为什么同时使用 Python 2、C++、Qt DLL 和 .pyd
  • 插件如何自动进入 SAM 菜单并调用参数化建模算法
  • Python 2 与 C++ 各自适合承担什么工作
  • 如何把 C++ 方法挂载到 mdb.models[...] 或 parts[...] 对象
  • 如何读取、创建和增量修改 SAM 网格
  • 哪些 Python 2 API 已经在真实模型中验证成功
  • 哪些 Abaqus 风格写法在 SAM 中已经明确失败
  • 如何把 Agent 作为插件接入 SAM,并只调用白名单建模工具
  • 如何建立“不猜 API”的验证与回归流程

证据分级:先区分“能调用”和“真正可用” ​

SAM 与 Abaqus 的 Python 对象外观相似,但底层绑定不同。本文使用四级证据:

等级含义可以如何使用
A:端到端验证已在 SAM V2026 中执行,保存新 .sam,重新检查结果或完成后续计算可作为正式工具基础
B:运行时验证API 调用成功,模型对象或文件能够保存,但下游求解链尚未完全通过可用,但必须保留后验验证
C:官方源码证据出现在老师发布的 SDK、7231 手册或官方示例源码可用于 C++ 插件开发,仍需在本机版本做最小探针
X:明确失败SAM 已返回 TypeError、AttributeError、RuntimeError,或输出模型恶化禁止继续按该写法使用

核心规则:dir() 中出现一个方法,只能证明“名称存在”;调用未报错只能证明“对象接受了调用”;保存成功也不代表导出的 INP 和求解器一定有效。


第1部分:SAM 二次开发的真实架构 ​

1.1 SAM 不是单语言系统 ​

SAM 的扩展结构可以概括为:

text
┌─────────────────────────────────────────────────────────────────────┐
│                              SAM 主程序                              │
├─────────────────────────────────────────────────────────────────────┤
│  customApp.py                                                       │
│  └─ 创建主窗口,注册 Part / Property / ShipTools 等模块              │
│                                                                     │
│  Qt Toolset DLL                                                     │
│  └─ SAM.Pre.*Toolset.dll:菜单、工具栏、对话框、视口选择控件          │
│                                                                     │
│  Python 2.7                                                         │
│  └─ mdb / session / Set / Section / Step / Load / 保存与导出         │
│                                                                     │
│  C++ Kernel PYD                                                     │
│  └─ *.pyd:几何算法、网格处理、结果读取、Part/Model 扩展方法          │
│                                                                     │
│  本地 Agent 服务(建议独立进程)                                     │
│  └─ 自然语言理解、工具选择、任务状态;不直接任意执行 SAM 代码          │
└─────────────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

当前安装环境已经确认:

text
SAM 安装目录:D:\Program Files\SAM
Python:      2.7.18,64 bit
插件目录:    D:\Program Files\SAM\Release\FilePlugin
Python 模块: D:\Program Files\SAM\Python27
1
2
3
4

1.2 两个二进制产物承担不同职责 ​

一个完整的 SAM 专业插件通常包含两个产物:

text
SAM.Pre.MyToolset.dll   ← GUI 插件
MyKernel.pyd            ← C++ 内核 / Python 2 扩展
1
2

GUI DLL 负责:

  • 自动注册菜单和工具栏
  • 显示 SAMForm / SAMDataDialog
  • 获取文本参数和视口选择对象
  • 构造 omuArguments
  • 通过 SAM 命令系统调用 Python 2 或 .pyd

内核 PYD 负责:

  • 读取当前模型和 Part
  • 执行复杂几何、网格与拓扑算法
  • 把方法注册到 Python 模块、Model 或 Part 对象
  • 返回计算结果或增量写入模型

1.3 为什么已有插件能运行,但当前仓库不一定能重新编译 ​

7231/SAM二次开发手册.doc 明确说明,完整 SAMSDK 应包含:

text
SAMSDK/
├── include/             # SAM C++ 接口头文件
├── include/guiProject/  # GUI 接口头文件
├── libs/                # Debug / Release 链接库
└── ThridPartys/         # Qt、OrientCommon、TCMalloc、CM2 等
1
2
3
4
5

当前 OpenOLTranSim-main/SDK.zip 只看到 .lib/.dll,没有完整头文件和第三方开发目录。这意味着:

  • 已经编译好的 .dll/.pyd 仍可运行,因为运行期不需要头文件;
  • 从源码重新编译时,仍需要老师所述的完整 SAMSDK;
  • 示例 CMake 中的 LIBS_SAMSDK_ROOT 是编译期开发包路径,不是 SAM 安装目录。

最后更新于:

Pager
上一篇← 工业软件 / Industrial Software
下一篇2. 从 P0 到 P5:SAM 插件界面开发流程 / SAM Plugin Interface Development from P0 to P5

持续记录,持续成长

Copyright © Tidenflow