优化修复了接口bug,导出rvm格式

This commit is contained in:
sladro 2026-03-04 17:07:25 +08:00
parent 74e8ae24c2
commit 210a83f131
51 changed files with 3695 additions and 1085 deletions

46
AGENTS.md Normal file
View File

@ -0,0 +1,46 @@
# Repository Guidelines
## Project Structure & Module Organization
- `TellmePdmsPluging.sln` contains a single plugin project targeting .NET Framework 3.5.
- `Class1.cs` is the PDMS addin entry (`IAddin`) and lifecycle hook.
- `Commands/` contains command objects implementing `Core/ICommand.cs` (e.g., `OpenProjectCommand`, `ExportIfcCommand`).
- `Core/` holds shared runtime infrastructure (queueing, PDMS manager, main-thread invocation, API response models).
- `Network/` contains the local HTTP server and callback integration used by external clients.
- `Models/` stores request/response DTOs for API endpoints.
- `Documentation/` and `NetInterfaceReferenceFiles/` provide design notes and AVEVA reference docs.
## Build, Test, and Development Commands
Run commands in Windows terminal with UTF-8 code page:
```powershell
chcp 65001
msbuild TellmePdmsPluging.sln /p:Configuration=Debug /p:Platform=x86
msbuild TellmePdmsPluging.sln /p:Configuration=Release /p:Platform=x86
```
- `Debug|x86`: local validation and troubleshooting.
- `Release|x86`: deployment artifact for PDMS host.
Smoke-check after loading the plugin in PDMS:
```powershell
Invoke-WebRequest http://localhost:9001/health
```
## Coding Style & Naming Conventions
- Use 4-space indentation and K&R-style braces as in existing C# files.
- Use `PascalCase` for public types/methods/properties, `camelCase` for locals/parameters, and `_camelCase` for private fields.
- Keep command classes focused: parse/validate input in `Network/`, execute PDMS logic via `Core/PdmsManager`.
- Preserve compatibility with .NET 3.5 and PDMS x86 runtime (avoid newer language/runtime features).
## Testing Guidelines
- There is currently no dedicated test project in this repository.
- Validate changes with targeted endpoint checks (`/health`, `/api/...`) and PDMS integration scenarios.
- If adding tests, place them in a separate `*.Tests` project and keep test names descriptive (`MethodName_State_ExpectedResult`).
## Commit & Pull Request Guidelines
- Follow existing commit style: concise, action-oriented summaries; current history mainly uses Chinese imperative verbs (implement/fix/add/improve equivalents).
- Keep each commit focused on one functional change.
- PRs should include: change summary, affected endpoints/modules, manual validation steps, and sample request/response payloads when APIs change.
## Encoding & Environment Requirements
- All text/code files must be UTF-8 **without BOM**.
- Always run `chcp 65001` before Windows command-line operations.
- Do not save source files in GBK/GB2312/GB18030.

View File

@ -29,15 +29,37 @@ namespace TellmePdmsPluging.Core
return new InvokeResult(true, wrapper.Result, null, null);
}
public static void InvokeAsync(ICommand command, Action<InvokeResult> onCompleted)
{
if (command == null)
{
if (onCompleted != null)
{
onCompleted(new InvokeResult(false, null, new ArgumentNullException("command"), "command为空"));
}
return;
}
var wrapper = new ResultCommandWrapper(command, onCompleted);
SafeQueue.Enqueue(wrapper);
}
private class ResultCommandWrapper : IResultCommand
{
private readonly ICommand _inner;
private readonly ManualResetEvent _done;
private readonly Action<InvokeResult> _onCompleted;
public ResultCommandWrapper(ICommand inner)
: this(inner, null)
{
}
public ResultCommandWrapper(ICommand inner, Action<InvokeResult> onCompleted)
{
_inner = inner;
_done = new ManualResetEvent(false);
_onCompleted = onCompleted;
CommandId = inner.CommandId;
}
@ -75,6 +97,18 @@ namespace TellmePdmsPluging.Core
{
IsCompleted = true;
_done.Set();
if (_onCompleted != null)
{
try
{
_onCompleted(new InvokeResult(Error == null, Result, Error, Error == null ? null : Error.Message));
}
catch
{
// ignore callback errors
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,641 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目架构
这是一个 MFC 动态链接库 (DLL) 项目,作为 Creo CAD 软件的插件运行。项目整合了以下技术栈:
- **MFC框架**: 微软基础类库,用于 Windows 应用程序开发
- **OTK/ProToolkit**: PTC Creo 的官方开发工具包,用于与 Creo 交互
- **Windows Socket**: 原生网络通信替代第三方HTTP库
- **WebSocket**: 实时双向通信支持
## 当前功能
目前实现了基础的 HTTP 服务器,允许外部应用通过 HTTP 请求与 Creo 软件进行交互:
- HTTP 服务器监听端口 12345
- 提供 `/show_message` 端点接收文本消息并在 Creo 中显示
- 使用定时器机制解决跨线程 OTK 调用问题
- 支持跨主机部署
## 项目升级计划 - Web API + WebSocket 架构
### 项目目标
实现Web前端通过API控制Creo进行模型分析、特征删除和格式导出的MVP系统。
### 接口设计
**HTTP API (快速查询)**
- GET /api/status/creo - 检测Creo运行状态
- GET /api/status/model - 检查模型加载状态
- GET /api/model/features - 获取特征列表
- POST /api/auth/login - 用户认证
**WebSocket (长操作)**
- load_model - 加载模型
- delete_features - 删除特征
- export_model - 导出模型
- analyze_structure - 分析结构
### 技术架构
```
Web前端 -> HTTP API (状态查询) -> Creo状态管理器
-> WebSocket (操作执行) -> Creo操作管理器 -> 实时日志推送
```
### 目标文件结构
```
MFCCreoDll/
├── src/
│ ├── core/ # 核心服务器管理
│ ├── http/ # HTTP API处理
│ ├── websocket/ # WebSocket服务
│ ├── creo/ # Creo操作封装
│ ├── utils/ # 工具类
│ └── auth/ # 认证管理
```
### 开发计划
- 第1周基础框架 (HTTP改造 + WebSocket基础)
- 第2周核心功能 (Creo集成 + 操作实现)
- 第3周测试优化 (联调 + 性能优化)
### 关键特性
- 双端口服务12345(HTTP) + 12346(WebSocket)
- 实时日志推送和进度反馈
- 大模型支持(>2GB)一次性加载
- 简单用户识别机制
- 跨主机部署支持
## 开发进度记录 - 模块化实现
### ✅ 已完成模块
#### 模块1: 基础HTTP服务器 (完成)
**功能:** HTTP服务器框架支持路由注册和请求处理
**文件:** HttpServer.h, HttpServer.cpp, Config.h
**测试状态:** ✅ 编译成功,功能测试通过
**API端点**
- `/test` - 服务器连通性测试
- `/show_message?text=消息` - 在Creo中显示消息
#### 模块2: Creo状态检测 (完成)
**功能:** Creo连接状态和模型状态实时检测
**文件:** CreoManager.h, CreoManager.cpp
**测试状态:** ✅ 编译成功,功能测试通过,已优化增强
**API端点**
- `/api/status/creo` - Creo连接状态包含版本、工作目录、会话ID
- `/api/status/model` - 当前模型状态(包含名称、路径、修改状态等)
**技术细节:**
- 使用OTK API进行Creo交互
- 采用单例模式管理Creo会话
- 完善的异常处理机制
- 详细的状态信息返回
#### 模块3: STEP导出功能 (完成)
**功能:** 支持将Creo模型导出为STEP格式
**文件:** CreoManager.h, CreoManager.cpp, MFCCreoDll.cpp
**测试状态:** ✅ 编译成功,功能测试通过,已解决崩溃问题
**API端点**
- `POST /api/export/model` - 模型导出接口
**技术细节:**
- 使用 `pfcSTEPExportInstructions` 接口进行STEP导出
- 支持装配体和零件的导出
- 包含文件大小计算和时间戳功能
- 安全的JSON解析机制避免正则表达式崩溃
- 完善的错误处理和异常管理
**API请求格式**
```json
{
"software_type": "creo",
"format_type": "step",
"export_path": "D:\\model.stp",
"options": {
"geom_flags": "solids",
"advanced": false
}
}
```
**API响应格式**
```json
{
"success": true,
"data": {
"exportPath": "D:\\model.stp",
"fileSize": "15.2MB",
"format": "step",
"exportTime": "2024-01-15T10:30:00Z",
"software": "Creo Parametric",
"originalFile": "assembly.asm",
"details": {
"dirname": "D:\\",
"filename": "model.stp",
"creoson_response": {
"dirname": "D:\\",
"filename": "model.stp",
"full_path": "D:\\model.stp"
}
}
},
"error": null
}
```
#### 模块4: 层级分析功能 (完成)
**功能:** 装配体层级结构分析,支持无限深度遍历
**文件:** CreoManager.h, CreoManager.cpp, MFCCreoDll.cpp
**测试状态:** ✅ 编译成功,已修复循环调用问题
**API端点**
- `POST /api/creo/analysis/hierarchy` - 装配体层级分析
**技术细节:**
- 使用SOTA算法基于ListFeaturesByType进行组件遍历
- 支持装配体和零件的完整层级分析
- 优化了API调用链避免重复的LoadComponentModel和ListFeaturesByType调用
- 实现了组件信息提取、文件大小计算和删除安全评估
- 支持无层级限制的递归分析
**API请求格式**
```json
{
"software_type": "creo",
"project_name": "Assembly Analysis",
"max_depth": 0,
"include_geometry": false
}
```
**API响应格式**
```json
{
"success": true,
"message": "Hierarchy analysis completed",
"data": {
"project_name": "ASM0001.asm",
"total_levels": 9,
"total_components": 223,
"hierarchy": [
{
"level": 0,
"name": "Main Assembly",
"components": [
{
"id": "ASM0001.asm",
"name": "Asm0001",
"type": "assembly",
"level": 0,
"children_count": 5,
"path": "ASM0001.asm",
"file_size": "2.5MB",
"deletion_safety": "forbidden"
}
]
}
],
"deletion_recommendations": {
"safe_deletions": [],
"risky_deletions": []
}
},
"error": null
}
```
**已解决的技术问题:**
1. **重复API调用优化** - 修复了LoadComponentModel和ListFeaturesByType的重复调用
2. **递归调用优化** - 优化了组件加载流程,避免不必要的重复操作
3. **内存管理改进** - 使用预加载模型参数传递,减少内存分配
#### 模块5: 层级删除功能 (完成)
**功能:** 装配体层级组件删除,支持安全的组件移除
**文件:** CreoManager.h, CreoManager.cpp, MFCCreoDll.cpp
**测试状态:** ✅ 编译成功,功能测试通过,已解决崩溃问题
**API端点**
- `POST /api/creo/hierarchy/delete` - 层级组件删除接口
**技术细节:**
- 使用 `SuppressFeatures` 替代 `DeleteFeatures` 实现安全删除
- 保持特征引用关系完整,避免装配体结构破坏
- 支持任意层级的组件删除,包括根层级组件
- 使用重生成指令确保模型状态一致性
- 完善的异常处理和错误恢复机制
**API请求格式**
```json
{
"software_type": "creo",
"project_name": "Assembly Delete",
"target_level": 2
}
```
**API响应格式**
```json
{
"success": true,
"message": "All components suppressed successfully (safer than deletion)",
"data": {
"original_levels": 5,
"target_level": 2,
"final_levels": 3,
"deleted_components": {
"level_2": [
"component1.prt",
"component2.asm"
]
},
"deletion_summary": {
"total_deleted": 15,
"successful": 15,
"failed": 0
}
},
"error": null
}
```
**已解决的技术问题:**
1. **Creo崩溃问题** - 使用SuppressFeatures替代DeleteFeatures避免引用丢失导致的崩溃
2. **层级安全性** - 支持删除任意层级的组件,包括根层级的关键组件
3. **引用完整性** - 抑制特征保持引用关系,避免外部依赖丢失
4. **模型重生成** - 使用重生成指令确保删除后模型状态正确
5. **异常处理** - 完善的错误处理机制,操作失败时提供详细信息
**关键技术突破:**
- 发现并解决了OTK DeleteFeatures在删除装配体核心组件时的崩溃问题
- 采用Suppression策略实现视觉删除效果同时保持模型结构完整性
- 实现了从根层级到任意深度的安全组件删除
#### 模块6: 薄壳化分析功能 (完成)
**功能:** CAD模型薄壳化分析基于几何边界识别内部可删除特征
**文件:** CreoManager.h, CreoManager.cpp, MFCCreoDll.cpp
**测试状态:** ✅ 编译成功功能测试通过API格式已优化
**API端点**
- `POST /api/creo/analysis/shell` - 薄壳化分析接口
#### 模块7: 关闭模型功能 (完成)
**功能:** 安全关闭当前Creo模型支持修改状态检查和强制关闭
**文件:** CreoManager.h, CreoManager.cpp, MFCCreoDll.cpp
**测试状态:** ✅ 开发完成,待编译测试
**API端点**
- `POST /api/model/close` - 关闭模型接口
**技术细节:**
- 使用OTK `pfcModel::Erase()` API执行模型关闭操作
- 使用 `pfcModel::GetIsModified()` 检查模型修改状态
- 支持安全关闭(检查修改)和强制关闭(忽略修改)两种模式
- 完善的异常处理和错误反馈机制
- 返回详细的关闭结果信息(模型名称、修改状态、关闭时间)
**API请求格式**
```json
{
"software_type": "creo",
"force_close": false
}
```
**API响应格式**
```json
{
"success": true,
"data": {
"model_name": "assembly.asm",
"was_modified": false,
"close_time": "2024-01-15T10:30:00Z"
},
"error": null
}
```
**已解决的技术问题:**
1. **OTK API正确性** - 使用正确的 `GetIsModified()` 方法检查模型修改状态
2. **安全关闭逻辑** - 实现修改状态检查,防止意外的数据丢失
3. **强制关闭选项** - 提供 `force_close` 参数允许忽略未保存修改
4. **详细错误信息** - 当模型有未保存修改时提供清晰的错误提示
5. **状态反馈完整性** - 返回关闭操作的完整状态信息
**关键技术突破:**
- 实现了安全的模型关闭机制,平衡了用户便利性和数据安全性
- 提供了灵活的关闭选项,适应不同的使用场景
- 建立了标准的模型生命周期管理API模式
#### 模块8: 打开模型功能 (完成)
**功能:** 根据文件路径打开Creo模型支持装配体、零件和工程图
**文件:** CreoManager.h, CreoManager.cpp, MFCCreoDll.cpp
**测试状态:** ✅ 开发完成,待编译测试
**API端点**
- `POST /api/model/open` - 模型打开接口
**技术细节:**
- 使用OTK `pfcSession::RetrieveModel()` API打开模型文件
- 优先从内存检索已加载模型,避免重复加载
- 支持主动激活(active)和静默打开(silent)两种模式
- 自动识别模型类型(装配体、零件、工程图)
- 对装配体自动统计组件数量
- 完善的文件路径验证和错误处理
**API请求格式**
```json
{
"software_type": "creo",
"file_path": "D:\\models\\assembly.asm",
"open_mode": "active"
}
```
**API响应格式**
```json
{
"success": true,
"data": {
"model_name": "assembly.asm",
"model_type": "assembly",
"file_path": "D:\\models\\assembly.asm",
"file_size": "15.2MB",
"open_time": "2024-01-15T10:30:00Z",
"is_assembly": true,
"total_parts": 25
},
"error": null
}
```
**已解决的技术问题:**
1. **智能模型检索** - 优先从内存检索,避免重复加载导致的性能问题
2. **文件路径转换** - 正确处理Windows文件路径到xstring的转换
3. **模型类型识别** - 基于OTK API准确识别装配体、零件、工程图类型
4. **装配体统计** - 使用ListFeaturesByType安全统计装配体组件数量
5. **异常分类处理** - 区分文件不存在、权限问题、OTK错误等不同异常类型
**关键技术突破:**
- 实现了完整的模型打开流程支持所有Creo模型格式
- 建立了内存优先的智能加载策略
- 完善了模型生命周期管理的开放环节
**API请求格式**
```json
{
"software_type": "creo",
"project_name": "Shell Analysis",
"preserve_external_surfaces": true,
"analysis_mode": "aggressive"
}
```
**API响应格式**
```json
{
"success": true,
"message": "Shell analysis completed",
"data": {
"safeDeletions": [
{
"id": 123,
"name": "EXTRUDE_1",
"type": "EXTRUDE",
"reason": "Internal feature, safe for removal",
"confidence": 0.85,
"volumeReduction": 15,
"partFile": "part1.prt",
"partPath": "assembly.asm/part1.prt",
"componentType": "FEATURE"
}
],
"suggestedDeletions": [],
"preserveList": [],
"analysisParameters": {
"totalFeatures": 45,
"deletableFeatures": 12,
"preservedFeatures": 33,
"shellSurfaces": 8,
"internalSurfaces": 37
}
}
}
```
**已解决的技术问题:**
1. **假数据问题** - 移除所有模拟包络盒数据使用真实OTK API计算
2. **几何分析** - 实现基于pfcOutline3D的真实边界识别算法
3. **特征名称格式** - 生成"EXTRUDE_1"等标准格式名称
4. **文件路径显示** - 正确显示partFile和partPath信息包含文件扩展名
5. **置信度算法** - 实现基于几何位置和特征类型的标准置信度计算
6. **编译错误** - 修复中文字符串导致的编译问题
**关键技术突破:**
- 发现并实现了基于OTK几何API的真实薄壳化算法
- 解决了特征边界判定的核心技术难题
- 实现了无假数据、无猜测的纯几何分析方法
#### 模块9: 无锁线程安全方案 (完成)
**功能:** 解决HTTP线程与主线程的跨线程通信安全问题
**文件:** MFCCreoDll.cpp, CreoManager.cpp
**测试状态:** ✅ 完全解决,系统稳定运行
**关键问题:** 模型打开接口超时、线程崩溃、窗口激活失败
**技术细节:**
- **根本问题发现**HTTP服务器运行在独立Windows线程中无法使用C++标准库mutex
- **核心解决方案**:实现完全无锁的跨线程通信机制
- **消息队列设计**:使用`MessageItem`结构统一处理所有HTTP请求类型
- **原子操作**:基于`std::atomic<bool>`和`volatile`指针实现线程同步
- **窗口激活集成**将窗口激活直接集成到主线程OpenModel流程中
**无锁架构设计:**
```cpp
// 消息结构
struct MessageItem {
std::string type; // "SHOW_MESSAGE" 或 "OPEN_MODEL_REQUEST"
std::string data; // 消息内容或文件路径
std::string extra; // 额外参数如open_mode
volatile bool completed; // 完成标志
void* result_ptr; // 结果指针
};
// 全局状态(无锁)
static volatile MessageItem* pending_message_item = nullptr;
static std::atomic<bool> has_pending_item{false};
```
**线程通信流程:**
```
HTTP线程 -> 设置MessageItem -> 原子标志 -> 等待完成
主线程(TimerProc) -> 检测标志 -> 执行OTK操作 -> 设置完成标志
窗口激活(如果需要) -> 返回结果
```
**已解决的技术问题:**
1. **HTTP线程mutex崩溃** - 完全移除C++标准库同步原语
2. **跨线程OTK调用** - 所有OTK操作都在主线程执行
3. **嵌套消息冲突** - 窗口激活直接集成到OpenModel流程
4. **内存管理** - 动态分配结果对象HTTP线程负责清理
5. **超时处理** - 保持10秒超时机制但现在能正常完成
**性能优化:**
- **零锁开销**:完全避免锁竞争和上下文切换
- **高效轮询**50ms间隔轮询平衡响应速度和CPU占用
- **内存最小化**:栈上分配消息项,堆上仅分配结果对象
**API兼容性**
- ✅ **所有现有API保持100%兼容**
- ✅ **窗口激活功能正常工作**
- ✅ **错误处理机制完整保留**
- ✅ **调试信息完整记录执行过程**
**关键技术突破:**
- 发现并解决了MFC DLL环境下HTTP线程无法使用C++标准库mutex的根本问题
- 实现了完全无锁的跨线程通信方案,保持高性能和线程安全
- 成功集成窗口激活功能,实现了完整的模型打开体验
- 建立了可扩展的消息机制,为未来功能提供稳定基础
### 🔄 待实现模块(按优先级排序)
#### 模块8: WebSocket服务 (高优先级)
**目标:** 实现双向实时通信,支持长时间操作
**预计文件:** WebSocketServer.h, WebSocketServer.cpp
**主要功能:**
- WebSocket服务器端口12346
- 实时日志推送
- 长操作进度反馈
- 客户端连接管理
#### 模块9: Creo长操作接口 (中优先级)
**目标:** 实现模型加载、特征删除、多格式导出等操作
**预计文件:** ModelAnalyzer.h, ModelAnalyzer.cpp
**主要功能:**
- 模型文件加载操作
- 特征分析和删除
- 多格式导出STL、IGES等
- 操作进度监控
#### 模块10: 日志系统 (低优先级)
**目标:** 统一的日志记录和错误追踪
**预计文件:** Logger.h, Logger.cpp
**主要功能:**
- 结构化日志输出
- 多级别日志支持
- 文件和控制台输出
- 调试信息记录
#### 模块11: 用户认证 (最低优先级)
**目标:** 简单的用户识别和访问控制
**预计文件:** AuthManager.h, AuthManager.cpp
**主要功能:**
- 简单token认证
- 会话管理
- 权限控制
### 技术架构总结
**当前架构状态:**
```
Web前端 -> HTTP API (12345端口) -> 无锁MessageItem -> TimerProc主线程 -> OTK -> Creo
↓ (已实现完整功能) ↓
状态查询接口 -> CreoManager -> 实时状态反馈
导出接口 -> ExportModelToSTEP -> STEP文件导出
层级分析接口 -> HierarchyAnalysis -> 装配体结构分析
层级删除接口 -> HierarchyDelete -> 组件安全删除
薄壳化分析接口 -> ShellAnalysis -> 几何边界特征识别
关闭模型接口 -> CloseModel -> 安全模型关闭
打开模型接口 -> OpenModel + 窗口激活 -> 完整模型加载体验
```
**目标架构:**
```
Web前端 -> HTTP API (快速查询) -> CreoManager -> Creo
-> WebSocket (长操作) -> WebSocketServer -> ModelAnalyzer -> Creo
实时日志推送
```
### 开发原则
1. **模块化开发** - 每个模块独立测试通过后再进行下一个
2. **最小化修改** - 保持现有代码稳定,只添加新功能
3. **向后兼容** - 新API不影响已有接口
4. **错误处理** - 每个模块都有完善的异常处理
5. **简化实现** - 优先实现MVP功能避免过度工程化
### 已解决的技术问题
1. **OTK API兼容性** - 使用pfcSession而非ProToolkit
2. **跨线程通信** - 保持定时器机制处理主线程OTK调用
3. **内存管理** - 使用智能指针和RAII模式避免内存泄漏
4. **编码问题** - UTF-8编码保存文件解决中文注释警告
5. **错误处理** - 分层异常处理确保系统稳定性
6. **STEP导出崩溃** - 修复了废弃API和正则表达式导致的崩溃问题
7. **JSON解析问题** - 实现了安全的JSON解析机制
8. **线程安全问题** - 使用mutex和atomic保证多线程安全
9. **API参数验证** - 完善了输入参数的验证机制
10. **DeleteFeatures崩溃问题** - 使用SuppressFeatures替代DeleteFeatures避免装配体结构破坏
11. **层级删除安全性** - 实现了任意层级的安全组件删除,包括根层级组件
12. **特征引用完整性** - 采用抑制策略保持特征引用关系,避免外部依赖丢失
13. **薄壳化分析算法** - 实现了基于真实几何边界的薄壳化特征识别
14. **假数据彻底清除** - 移除所有模拟计算实现纯OTK API的几何分析
15. **特征置信度算法** - 实现了标准的特征删除安全性评估机制
16. **模型关闭API设计** - 实现了安全的模型关闭机制,平衡用户便利性和数据安全性
17. **OTK模型状态检查** - 使用正确的`GetIsModified()`API检查模型修改状态
18. **强制关闭选项** - 提供灵活的关闭选项,适应不同使用场景
19. **模型生命周期管理** - 建立了标准的模型生命周期管理API模式
20. **HTTP线程mutex崩溃** - 发现并解决MFC DLL环境下HTTP线程无法使用C++标准库mutex的根本问题
21. **无锁跨线程通信** - 实现完全无锁的MessageItem机制彻底解决线程安全问题
22. **嵌套消息冲突** - 将窗口激活直接集成到OpenModel流程避免嵌套消息导致的死锁
23. **模型打开超时** - 解决10秒超时问题实现稳定的模型打开和窗口激活功能
### 下一步计划
建议继续实现模块8WebSocket服务为后续长操作和实时通信奠定基础。核心分析功能层级分析、层级删除、薄壳化分析、模型关闭已经完成现在可以专注于实时通信和用户体验优化。
## 测试记录
### 测试原则与特点
- **所有的测试由我进行因为我在IDEvisual studio中开发的**
- **不能用任何假数据、模拟数据**
- **不能限制层级和数量**
## 构建和编译
使用 Visual Studio 2022 (v143 工具集) 构建:
```bash
# 使用 Visual Studio 构建
msbuild MFCCreoDll.sln /p:Configuration=Debug /p:Platform=x64
```
或在 Visual Studio IDE 中:
- 打开 `MFCCreoDll.sln`
- 选择 Debug|x64 配置
- 构建解决方案 (Ctrl+Shift+B)
## 依赖环境
项目依赖 Creo 5.0.0.0 安装:
- OTK C++ 库路径: `C:\Program Files\PTC\Creo 5.0.0.0\Common Files\otk\otk_cpp\`
- ProToolkit 库路径: `C:\Program Files\PTC\Creo 5.0.0.0\Common Files\protoolkit\`
## 关键文件说明
- `MFCCreoDll.cpp`: 主要逻辑实现,包含服务器和 OTK 交互代码
- `MFCCreoDll.h`: MFC 应用程序类声明
- `MFCCreoDll.def`: DLL 导出定义文件
- `MFCCreoDll.vcxproj`: Visual Studio 项目配置文件
## 重要架构注意事项
- 项目使用动态 MFC 链接 (`UseOfMfc=Dynamic`)
- 需要 Unicode 字符集支持
- 使用 Windows 原生线程和定时器机制
- 插件生命周期由 `user_initialize()``user_terminate()` 函数管理
- OTK API 必须在主线程中调用,使用定时器机制处理跨线程通信
## 调试
编译后的 DLL 位于 `x64/Debug/MFCCreoDll.dll`,需要注册到 Creo 中作为插件使用。
这个项目是在visual studio 2022中进行编译生成所以不要用其它的编译环境调试报错也是从2022中进行。项目开发于win11环境运行于win7环境这个要特别关注。otk文档在文件夹otk_cpp_doc下请自己查找相关api

View File

@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace TellmePdmsPluging.Models
{
@ -9,6 +11,10 @@ namespace TellmePdmsPluging.Models
public string ExportPath { get; set; }
public string FileName { get; set; }
public string ExportSystem { get; set; }
public bool? Overwrite { get; set; }
public List<string> Selections { get; set; }
public List<string> SelectionCommands { get; set; }
public void ApplyDefaults()
{
@ -19,7 +25,12 @@ namespace TellmePdmsPluging.Models
if (string.IsNullOrEmpty(FileName))
{
FileName = string.Format("pdms_export_{0:yyyyMMdd_HHmmss}.ifc", DateTime.Now);
FileName = string.Format("pdms_export_{0:yyyyMMdd_HHmmss}.rvm", DateTime.Now);
}
if (!Overwrite.HasValue)
{
Overwrite = true;
}
}
@ -27,6 +38,45 @@ namespace TellmePdmsPluging.Models
{
return System.IO.Path.Combine(ExportPath, FileName);
}
public List<string> GetEffectiveSelections()
{
var raw = new List<string>();
if (Selections != null && Selections.Count > 0)
{
raw.AddRange(Selections);
}
if (SelectionCommands != null && SelectionCommands.Count > 0)
{
raw.AddRange(SelectionCommands);
}
if (raw.Count == 0)
{
// 采用文档示例中的常见选择语句作为默认项
raw.Add("/EQUIP");
raw.Add("/PIPES");
}
var normalized = new List<string>();
foreach (var item in raw)
{
var text = (item ?? string.Empty).Trim();
if (string.IsNullOrEmpty(text))
{
continue;
}
if (!text.StartsWith("EXPORT ", StringComparison.OrdinalIgnoreCase))
{
text = "EXPORT " + text;
}
normalized.Add(text);
}
return normalized.Distinct(StringComparer.OrdinalIgnoreCase).ToList();
}
}
public class ExportIfcResult

View File

@ -7,7 +7,9 @@ namespace TellmePdmsPluging.Models
public string ExecutionId { get; set; }
public string execution_id { get { return ExecutionId; } set { ExecutionId = value; } }
public bool DryRun { get; set; } = true;
public bool DryRun { get; set; } = false;
public bool SkipLinkedElements { get; set; } = false;
public double Padding { get; set; } = 500.0;
@ -90,12 +92,15 @@ namespace TellmePdmsPluging.Models
{
public bool Success { get; set; }
public bool DryRun { get; set; }
public bool SkipLinkedElements { get; set; }
public double Padding { get; set; }
public int TotalVisited { get; set; }
public int RemovedCount { get; set; }
public int KeptCount { get; set; }
public int ShellKeptCount { get; set; }
public int SkippedLinkedCount { get; set; }
public List<string> RemovedElements { get; set; } = new List<string>();
public List<string> SkippedLinkedElements { get; set; } = new List<string>();
public List<string> Errors { get; set; } = new List<string>();
public List<string> ZoneSummaries { get; set; } = new List<string>();
public System.DateTime StartedAt { get; set; }

View File

@ -8,7 +8,9 @@ namespace TellmePdmsPluging.Models
public string ExecutionId { get; set; }
public string execution_id { get { return ExecutionId; } set { ExecutionId = value; } }
public bool DryRun { get; set; } = true;
public bool DryRun { get; set; } = false;
public bool SkipLinkedElements { get; set; } = false;
public List<string> ZoneFilters
{
@ -111,10 +113,13 @@ namespace TellmePdmsPluging.Models
{
public bool Success { get; set; }
public bool DryRun { get; set; }
public bool SkipLinkedElements { get; set; }
public int TotalVisited { get; set; }
public int RemovedCount { get; set; }
public int KeptCount { get; set; }
public int SkippedLinkedCount { get; set; }
public List<string> RemovedElements { get; set; } = new List<string>();
public List<string> SkippedLinkedElements { get; set; } = new List<string>();
public List<string> Errors { get; set; } = new List<string>();
public DateTime StartedAt { get; set; }
public DateTime CompletedAt { get; set; }

View File

@ -0,0 +1,47 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>BeforeFinishEventHandler Delegate</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">BeforeFinishEventHandler Delegate</h1>
</div>
</div>
<div id="nstext">
<p> BeforeFinish event handler delegate. </p>
<div class="syntax">
<div>public delegate void BeforeFinishEventHandler(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">object</a> <i>sender</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemEventArgsClassTopic.htm">EventArgs</a> <i>e</i><br />);</div>
</div>
<h4 class="dtH4">Requirements</h4>
<p>
<b>Namespace: </b>
<a href="Aveva.Pdms.html">Aveva.Pdms</a>
</p>
<p>
<b>Assembly: </b>Aveva.Pdms (in Aveva.Pdms.dll)
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a>
</p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,47 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>FinishEventHandler Delegate</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">FinishEventHandler Delegate</h1>
</div>
</div>
<div id="nstext">
<p> Finish event handler delegate. </p>
<div class="syntax">
<div>public delegate void FinishEventHandler(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">object</a> <i>sender</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemEventArgsClassTopic.htm">EventArgs</a> <i>e</i><br />);</div>
</div>
<h4 class="dtH4">Requirements</h4>
<p>
<b>Namespace: </b>
<a href="Aveva.Pdms.html">Aveva.Pdms</a>
</p>
<p>
<b>Assembly: </b>Aveva.Pdms (in Aveva.Pdms.dll)
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a>
</p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,100 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>ModuleType Enumeration</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">ModuleType Enumeration</h1>
</div>
</div>
<div id="nstext">
<p> PDMS Module type code. </p>
<div class="syntax">
<div>public enum ModuleType</div>
</div>
<h4 class="dtH4">Members</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr valign="top">
<th width="50%">Member Name</th>
<th width="50%">Description</th>
</tr>
<tr valign="top"><td><b>Dabacon</b></td><td>
</td></tr>
<tr valign="top"><td><b>Gml</b></td><td>
</td></tr>
<tr valign="top"><td><b>Gtx</b></td><td>
</td></tr>
<tr valign="top"><td><b>CommandProcessor</b></td><td>
</td></tr>
<tr valign="top"><td><b>Flayer</b></td><td>
</td></tr>
<tr valign="top"><td><b>Splash</b></td><td>
</td></tr>
<tr valign="top"><td><b>FlexLM</b></td><td>
</td></tr>
<tr valign="top"><td><b>PML</b></td><td>
</td></tr>
<tr valign="top"><td><b>NxLib</b></td><td>
</td></tr>
<tr valign="top"><td><b>FormsLib</b></td><td>
</td></tr>
<tr valign="top"><td><b>InteractionManager</b></td><td>
</td></tr>
<tr valign="top"><td><b>Druid</b></td><td>
</td></tr>
<tr valign="top"><td><b>Sgl</b></td><td>
</td></tr>
<tr valign="top"><td><b>AttributeDataFile</b></td><td>
</td></tr>
<tr valign="top"><td><b>Global</b></td><td>
</td></tr></table>
</div>
<h4 class="dtH4">Requirements</h4>
<p>
<b>Namespace: </b>
<a href="Aveva.Pdms.html">Aveva.Pdms</a>
</p>
<p>
<b>Assembly: </b>Aveva.Pdms (in Aveva.Pdms.dll)
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a>
</p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,39 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.BeforeFinished Event</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.BeforeFinished Event
</h1>
</div>
</div>
<div id="nstext">
<p> BeforeFinished event handler. </p>
<div class="syntax">public static event <a href="Aveva.Pdms.BeforeFinishEventHandler.html">BeforeFinishEventHandler</a> BeforeFinished;</div>
<p>
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,43 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.Exit Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.Exit Method </h1>
</div>
</div>
<div id="nstext">
<p> Exit application. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> Exit(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> <i>message</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>message</i>
</dt>
<dd>Exit message</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,36 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.Finish Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.Finish Method </h1>
</div>
</div>
<div id="nstext">
<p> Finish application. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> Finish();</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,39 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.Finished Event</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.Finished Event
</h1>
</div>
</div>
<div id="nstext">
<p> Finished event handler. </p>
<div class="syntax">public static event <a href="Aveva.Pdms.FinishEventHandler.html">FinishEventHandler</a> Finished;</div>
<p>
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>GraphicsMode Property</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.GraphicsMode Property</h1>
</div>
</div>
<div id="nstext">
<p> True if application is in graphics mode </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> GraphicsMode {get;}</div>
<p>
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,47 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.RaiseBeforeFinished Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.RaiseBeforeFinished Method </h1>
</div>
</div>
<div id="nstext">
<p> Raise Finished event. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> RaiseBeforeFinished(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">object</a> <i>sender</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemEventArgsClassTopic.htm">EventArgs</a> <i>e</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>sender</i>
</dt>
<dd>Object raising the event</dd>
<dt>
<i>e</i>
</dt>
<dd>Event arguments</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,47 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.RaiseFinished Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.RaiseFinished Method </h1>
</div>
</div>
<div id="nstext">
<p> Raise Finished event. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> RaiseFinished(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">object</a> <i>sender</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemEventArgsClassTopic.htm">EventArgs</a> <i>e</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>sender</i>
</dt>
<dd>Object raising the event</dd>
<dt>
<i>e</i>
</dt>
<dd>Event arguments</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,60 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.Start Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.Start Method </h1>
</div>
</div>
<div id="nstext">
<p> Start the application. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> Start(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> <i>isGraphics</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemInt32ClassTopic.htm">int</a> <i>moduleNumber</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> <i>isBatch</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> <i>isNoConsole</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> <i>logfile</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>isGraphics</i>
</dt>
<dd>True if to be started in graphics mode</dd>
<dt>
<i>moduleNumber</i>
</dt>
<dd>
</dd>
<dt>
<i>isBatch</i>
</dt>
<dd>True is to be started in batch mode</dd>
<dt>
<i>isNoConsole</i>
</dt>
<dd>True if to be started with no console</dd>
<dt>
<i>logfile</i>
</dt>
<dd>Filename for application log file</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,36 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.StartEventLoop Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.StartEventLoop Method </h1>
</div>
</div>
<div id="nstext">
<p> Start application activity. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> StartEventLoop();</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,51 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.StartViaCommsFile Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.StartViaCommsFile Method </h1>
</div>
</div>
<div id="nstext">
<p> Start the application using a Comms file. </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemVoidClassTopic.htm">void</a> StartViaCommsFile(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> <i>isGraphics</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemInt32ClassTopic.htm">int</a> <i>moduleNumber</i>,<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> <i>moduleName</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>isGraphics</i>
</dt>
<dd>True if to be started in graphics mode</dd>
<dt>
<i>moduleNumber</i>
</dt>
<dd>Module number</dd>
<dt>
<i>moduleName</i>
</dt>
<dd>Module name</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,39 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.getLicenseError Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.getLicenseError Method </h1>
</div>
</div>
<div id="nstext">
<p> get license error </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> getLicenseError();</div>
<h4 class="dtH4">Parameters</h4>
<dl>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,44 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.getLicenseFeature Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.getLicenseFeature Method </h1>
</div>
</div>
<div id="nstext">
<p> get license feature </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> getLicenseFeature(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> <i>feature</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>feature</i>
</dt>
<dd>
</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,44 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication.hasLicenseFeature Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication.hasLicenseFeature Method </h1>
</div>
</div>
<div id="nstext">
<p> has license feature </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemBooleanClassTopic.htm">bool</a> hasLicenseFeature(<br />   <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> <i>feature</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>feature</i>
</dt>
<dd>
</dd>
</dl>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,54 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication Class</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication Class</h1>
</div>
</div>
<div id="nstext">
<p> Entry point for PDMS application framework </p>
<p>For a list of all members of this type, see <a href="Aveva.Pdms.PdmsApplicationMembers.html">PdmsApplication Members</a>.</p>
<p>
<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">System.Object</a>
<br />   <b>Aveva.Pdms.PdmsApplication</b></p>
<div class="syntax">
<div>public abstract class PdmsApplication</div>
</div>
<H4 class="dtH4">Thread Safety</H4>
<P>Public static (<b>Shared</b> in Visual Basic) members of this type are
safe for multithreaded operations. Instance members are <b>not</b> guaranteed to be
thread-safe.</P>
<h4 class="dtH4">Requirements</h4>
<p>
<b>Namespace: </b>
<a href="Aveva.Pdms.html">Aveva.Pdms</a>
</p>
<p>
<b>Assembly: </b>Aveva.Pdms (in Aveva.Pdms.dll)
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplicationMembers.html">PdmsApplication Members</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,41 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication Events</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication Events</h1>
</div>
</div>
<div id="nstext">
<p>The events of the <b>PdmsApplication</b> class are listed below. For a complete list of <b>PdmsApplication</b> class members, see the <a href="Aveva.Pdms.PdmsApplicationMembers.html">PdmsApplication Members</a> topic.</p>
<h4 class="dtH4">Public Static Events</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubevent.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.BeforeFinished.html">BeforeFinished</a></td><td width="50%"> BeforeFinished event handler. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubevent.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Finished.html">Finished</a></td><td width="50%"> Finished event handler. </td></tr></table>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,79 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication Members</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication Members
</h1>
</div>
</div>
<div id="nstext">
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication overview</a>
</p>
<h4 class="dtH4">Public Static Properties</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubproperty.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.GraphicsMode.html">GraphicsMode</a></td><td width="50%"> True if application is in graphics mode </td></tr></table>
</div>
<h4 class="dtH4">Public Static Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Exit.html">Exit</a></td><td width="50%"> Exit application. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Finish.html">Finish</a></td><td width="50%"> Finish application. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.getLicenseError.html">getLicenseError</a></td><td width="50%"> get license error </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.getLicenseFeature.html">getLicenseFeature</a></td><td width="50%"> get license feature </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.hasLicenseFeature.html">hasLicenseFeature</a></td><td width="50%"> has license feature </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.RaiseBeforeFinished.html">RaiseBeforeFinished</a></td><td width="50%"> Raise Finished event. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.RaiseFinished.html">RaiseFinished</a></td><td width="50%"> Raise Finished event. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Start.html">Start</a></td><td width="50%"> Start the application. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.StartEventLoop.html">StartEventLoop</a></td><td width="50%"> Start application activity. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.StartViaCommsFile.html">StartViaCommsFile</a></td><td width="50%"> Start the application using a Comms file. </td></tr></table>
</div>
<h4 class="dtH4">Public Static Events</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubevent.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.BeforeFinished.html">BeforeFinished</a></td><td width="50%"> BeforeFinished event handler. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubevent.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Finished.html">Finished</a></td><td width="50%"> Finished event handler. </td></tr></table>
</div>
<h4 class="dtH4">Public Instance Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassEqualsTopic.htm">Equals</a> (inherited from <b>Object</b>)</td><td width="50%">
Determines whether the specified <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a> is equal to the current <b>Object</b>.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetHashCodeTopic.htm">GetHashCode</a> (inherited from <b>Object</b>)</td><td width="50%">
Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetTypeTopic.htm">GetType</a> (inherited from <b>Object</b>)</td><td width="50%">
Gets the <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemTypeClassTopic.htm">Type</a> of the current instance.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassToStringTopic.htm">ToString</a> (inherited from <b>Object</b>)</td><td width="50%">
Returns a <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">String</a> that represents the current <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a>.
</td></tr></table>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,65 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication Methods</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication Methods</h1>
</div>
</div>
<div id="nstext">
<p>The methods of the <b>PdmsApplication</b> class are listed below. For a complete list of <b>PdmsApplication</b> class members, see the <a href="Aveva.Pdms.PdmsApplicationMembers.html">PdmsApplication Members</a> topic.</p>
<h4 class="dtH4">Public Static Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Exit.html">Exit</a></td><td width="50%"> Exit application. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Finish.html">Finish</a></td><td width="50%"> Finish application. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.getLicenseError.html">getLicenseError</a></td><td width="50%"> get license error </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.getLicenseFeature.html">getLicenseFeature</a></td><td width="50%"> get license feature </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.hasLicenseFeature.html">hasLicenseFeature</a></td><td width="50%"> has license feature </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.RaiseBeforeFinished.html">RaiseBeforeFinished</a></td><td width="50%"> Raise Finished event. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.RaiseFinished.html">RaiseFinished</a></td><td width="50%"> Raise Finished event. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.Start.html">Start</a></td><td width="50%"> Start the application. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.StartEventLoop.html">StartEventLoop</a></td><td width="50%"> Start application activity. </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.StartViaCommsFile.html">StartViaCommsFile</a></td><td width="50%"> Start the application using a Comms file. </td></tr></table>
</div>
<h4 class="dtH4">Public Instance Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassEqualsTopic.htm">Equals</a> (inherited from <b>Object</b>)</td><td width="50%">
Determines whether the specified <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a> is equal to the current <b>Object</b>.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetHashCodeTopic.htm">GetHashCode</a> (inherited from <b>Object</b>)</td><td width="50%">
Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetTypeTopic.htm">GetType</a> (inherited from <b>Object</b>)</td><td width="50%">
Gets the <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemTypeClassTopic.htm">Type</a> of the current instance.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassToStringTopic.htm">ToString</a> (inherited from <b>Object</b>)</td><td width="50%">
Returns a <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">String</a> that represents the current <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a>.
</td></tr></table>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,40 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsApplication Properties</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsApplication Properties</h1>
</div>
</div>
<div id="nstext">
<p>The properties of the <b>PdmsApplication</b> class are listed below. For a complete list of <b>PdmsApplication</b> class members, see the <a href="Aveva.Pdms.PdmsApplicationMembers.html">PdmsApplication Members</a> topic.</p>
<h4 class="dtH4">Public Static Properties</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubproperty.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsApplication.GraphicsMode.html">GraphicsMode</a></td><td width="50%"> True if application is in graphics mode </td></tr></table>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetCompanyName Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetCompanyName Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve company name PDMS is licensed to </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetCompanyName();</div>
<h4 class="dtH4">Return Value</h4>
<p>Licenced company name</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetCopyright Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetCopyright Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve copyright information for PDMS </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetCopyright();</div>
<h4 class="dtH4">Return Value</h4>
<p>Copyright text</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,45 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetModuleName Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetModuleName Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve the name of a PDMS module </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetModuleName(<br />   <a href="Aveva.Pdms.ModuleType.html">ModuleType</a> <i>module</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>module</i>
</dt>
<dd>Module identifier</dd>
</dl>
<h4 class="dtH4">Return Value</h4>
<p>Module name</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,45 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetModuleVersion Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetModuleVersion Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve the version of a PDMS module </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetModuleVersion(<br />   <a href="Aveva.Pdms.ModuleType.html">ModuleType</a> <i>module</i><br />);</div>
<h4 class="dtH4">Parameters</h4>
<dl>
<dt>
<i>module</i>
</dt>
<dd>Module identifier</dd>
</dl>
<h4 class="dtH4">Return Value</h4>
<p>Module version identifier</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetName Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetName Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve name of current module (i.e. VANTAGE PDMS Design) </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetName();</div>
<h4 class="dtH4">Return Value</h4>
<p>Current module name</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetShortBanner Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetShortBanner Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve short banner string (i.e. qbann) </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetShortBanner();</div>
<h4 class="dtH4">Return Value</h4>
<p>Banner text</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetStatus Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetStatus Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve any special status instructions (i.e. for pre-release builds) </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetStatus();</div>
<h4 class="dtH4">Return Value</h4>
<p>Status text</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion.GetVersion Method</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion.GetVersion Method </h1>
</div>
</div>
<div id="nstext">
<p> Retrieve version number of PDMS excluding Mk (i.e. 11.6) </p>
<div class="syntax">public static <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a> GetVersion();</div>
<h4 class="dtH4">Return Value</h4>
<p>PDMS version identifier</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,54 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion Class</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion Class</h1>
</div>
</div>
<div id="nstext">
<p> PDMS Version query. </p>
<p>For a list of all members of this type, see <a href="Aveva.Pdms.PdmsVersionMembers.html">PdmsVersion Members</a>.</p>
<p>
<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">System.Object</a>
<br />   <b>Aveva.Pdms.PdmsVersion</b></p>
<div class="syntax">
<div>public abstract class PdmsVersion</div>
</div>
<H4 class="dtH4">Thread Safety</H4>
<P>Public static (<b>Shared</b> in Visual Basic) members of this type are
safe for multithreaded operations. Instance members are <b>not</b> guaranteed to be
thread-safe.</P>
<h4 class="dtH4">Requirements</h4>
<p>
<b>Namespace: </b>
<a href="Aveva.Pdms.html">Aveva.Pdms</a>
</p>
<p>
<b>Assembly: </b>Aveva.Pdms (in Aveva.Pdms.dll)
</p>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersionMembers.html">PdmsVersion Members</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,66 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion Members</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion Members
</h1>
</div>
</div>
<div id="nstext">
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion overview</a>
</p>
<h4 class="dtH4">Public Static Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetCompanyName.html">GetCompanyName</a></td><td width="50%"> Retrieve company name PDMS is licensed to </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetCopyright.html">GetCopyright</a></td><td width="50%"> Retrieve copyright information for PDMS </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetModuleName.html">GetModuleName</a></td><td width="50%"> Retrieve the name of a PDMS module </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetModuleVersion.html">GetModuleVersion</a></td><td width="50%"> Retrieve the version of a PDMS module </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetName.html">GetName</a></td><td width="50%"> Retrieve name of current module (i.e. VANTAGE PDMS Design) </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetShortBanner.html">GetShortBanner</a></td><td width="50%"> Retrieve short banner string (i.e. qbann) </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetStatus.html">GetStatus</a></td><td width="50%"> Retrieve any special status instructions (i.e. for pre-release builds) </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetVersion.html">GetVersion</a></td><td width="50%"> Retrieve version number of PDMS excluding Mk (i.e. 11.6) </td></tr></table>
</div>
<h4 class="dtH4">Public Instance Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassEqualsTopic.htm">Equals</a> (inherited from <b>Object</b>)</td><td width="50%">
Determines whether the specified <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a> is equal to the current <b>Object</b>.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetHashCodeTopic.htm">GetHashCode</a> (inherited from <b>Object</b>)</td><td width="50%">
Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetTypeTopic.htm">GetType</a> (inherited from <b>Object</b>)</td><td width="50%">
Gets the <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemTypeClassTopic.htm">Type</a> of the current instance.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassToStringTopic.htm">ToString</a> (inherited from <b>Object</b>)</td><td width="50%">
Returns a <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">String</a> that represents the current <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a>.
</td></tr></table>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,63 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>PdmsVersion Methods</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">PdmsVersion Methods</h1>
</div>
</div>
<div id="nstext">
<p>The methods of the <b>PdmsVersion</b> class are listed below. For a complete list of <b>PdmsVersion</b> class members, see the <a href="Aveva.Pdms.PdmsVersionMembers.html">PdmsVersion Members</a> topic.</p>
<h4 class="dtH4">Public Static Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetCompanyName.html">GetCompanyName</a></td><td width="50%"> Retrieve company name PDMS is licensed to </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetCopyright.html">GetCopyright</a></td><td width="50%"> Retrieve copyright information for PDMS </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetModuleName.html">GetModuleName</a></td><td width="50%"> Retrieve the name of a PDMS module </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetModuleVersion.html">GetModuleVersion</a></td><td width="50%"> Retrieve the version of a PDMS module </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetName.html">GetName</a></td><td width="50%"> Retrieve name of current module (i.e. VANTAGE PDMS Design) </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetShortBanner.html">GetShortBanner</a></td><td width="50%"> Retrieve short banner string (i.e. qbann) </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetStatus.html">GetStatus</a></td><td width="50%"> Retrieve any special status instructions (i.e. for pre-release builds) </td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><img src="static.gif" /><a href="Aveva.Pdms.PdmsVersion.GetVersion.html">GetVersion</a></td><td width="50%"> Retrieve version number of PDMS excluding Mk (i.e. 11.6) </td></tr></table>
</div>
<h4 class="dtH4">Public Instance Methods</h4>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassEqualsTopic.htm">Equals</a> (inherited from <b>Object</b>)</td><td width="50%">
Determines whether the specified <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a> is equal to the current <b>Object</b>.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetHashCodeTopic.htm">GetHashCode</a> (inherited from <b>Object</b>)</td><td width="50%">
Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassGetTypeTopic.htm">GetType</a> (inherited from <b>Object</b>)</td><td width="50%">
Gets the <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemTypeClassTopic.htm">Type</a> of the current instance.
</td></tr>
<tr VALIGN="top"><td width="50%"><img src="pubmethod.gif"></img><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassToStringTopic.htm">ToString</a> (inherited from <b>Object</b>)</td><td width="50%">
Returns a <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">String</a> that represents the current <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">Object</a>.
</td></tr></table>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion Class</a> | <a href="Aveva.Pdms.html">Aveva.Pdms Namespace</a></p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<HTML><BODY><!-- http://ndoc.sourceforge.net/ --></BODY></HTML>

View File

@ -0,0 +1,90 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>Aveva.Pdms</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body id="bodyID" class="dtBODY">
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">Aveva.Pdms Namespace</h1>
</div>
</div>
<div id="nstext">
<p>
<a href="Aveva.PdmsHierarchy.html">Namespace hierarchy</a>
</p>
<h3 class="dtH3">Classes</h3>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr valign="top">
<th width="50%">Class</th>
<th width="50%">Description</th>
</tr>
<tr valign="top">
<td width="50%">
<a href="Aveva.Pdms.PdmsApplication.html">PdmsApplication</a>
</td>
<td width="50%"> Entry point for PDMS application framework </td>
</tr>
<tr valign="top">
<td width="50%">
<a href="Aveva.Pdms.PdmsVersion.html">PdmsVersion</a>
</td>
<td width="50%"> PDMS Version query. </td>
</tr>
</table>
</div>
<h3 class="dtH3">Delegates</h3>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr valign="top">
<th width="50%">Delegate</th>
<th width="50%">Description</th>
</tr>
<tr valign="top">
<td width="50%">
<a href="Aveva.Pdms.BeforeFinishEventHandler.html">BeforeFinishEventHandler</a>
</td>
<td width="50%"> BeforeFinish event handler delegate. </td>
</tr>
<tr valign="top">
<td width="50%">
<a href="Aveva.Pdms.FinishEventHandler.html">FinishEventHandler</a>
</td>
<td width="50%"> Finish event handler delegate. </td>
</tr>
</table>
</div>
<h3 class="dtH3">Enumerations</h3>
<div class="tablediv">
<table class="dtTABLE" cellspacing="0">
<tr valign="top">
<th width="50%">Enumeration</th>
<th width="50%">Description</th>
</tr>
<tr valign="top">
<td width="50%">
<a href="Aveva.Pdms.ModuleType.html">ModuleType</a>
</td>
<td width="50%"> PDMS Module type code. </td>
</tr>
</table>
</div>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,53 @@
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
<title>Aveva.PdmsHierarchy</title>
<xml>
</xml>
<link rel="stylesheet" type="text/css" href="MSDN.css" />
</head>
<body topmargin="0" id="bodyID" class="dtBODY">
<object id="obj_cook" classid="clsid:59CC0C20-679B-11D2-88BD-0800361A1803" style="display:none;">
</object>
<div id="nsbanner">
<div id="bannerrow1">
<table class="bannerparthead" cellspacing="0">
<tr id="hdr">
<td class="runninghead">AVEVA Application .NET Public Interface</td>
<td class="product">
</td>
</tr>
</table>
</div>
<div id="TitleRow">
<h1 class="dtH1">Aveva.Pdms Hierarchy</h1>
</div>
</div>
<div id="nstext" valign="bottom">
<div>
<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemObjectClassTopic.htm">System.Object</a>
<div class="Hierarchy">
<a href="Aveva.Pdms.PdmsApplication.html">Aveva.Pdms.PdmsApplication</a>
</div>
<div class="Hierarchy">
<a href="Aveva.Pdms.PdmsVersion.html">Aveva.Pdms.PdmsVersion</a>
</div>
<div class="Hierarchy">
<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemDelegateClassTopic.htm">System.Delegate</a> ---- <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemICloneableClassTopic.htm">System.ICloneable</a>, <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemRuntimeSerializationISerializableClassTopic.htm">System.Runtime.Serialization.ISerializable</a><div class="Hierarchy"><a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemMulticastDelegateClassTopic.htm">System.MulticastDelegate</a><div class="Hierarchy"><a href="Aveva.Pdms.BeforeFinishEventHandler.html">Aveva.Pdms.BeforeFinishEventHandler</a></div><div class="Hierarchy"><a href="Aveva.Pdms.FinishEventHandler.html">Aveva.Pdms.FinishEventHandler</a></div></div></div>
<div class="Hierarchy">
<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemValueTypeClassTopic.htm">System.ValueType</a>
<div class="Hierarchy">
<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemEnumClassTopic.htm">System.Enum</a> ---- <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemIComparableClassTopic.htm">System.IComparable</a>, <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemIConvertibleClassTopic.htm">System.IConvertible</a>, <a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemIFormattableClassTopic.htm">System.IFormattable</a><div class="Hierarchy"><a href="Aveva.Pdms.ModuleType.html">Aveva.Pdms.ModuleType</a></div></div>
</div>
</div>
<h4 class="dtH4">See Also</h4>
<p>
<a href="Aveva.Pdms.html">Aveva.Pdms Namespace
</a>
</p>
<hr />
<div id="footer">&copy;AVEVA Solutions Ltd 2007</div>
</div>
</body>
</html>

View File

@ -0,0 +1,405 @@
body /* This body tag requires the use of one of the sets of banner and/or text div ids */
{
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
background: #ffffff;
color: #000000;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 70%;
width: 100%;
/*overflow: expression('hidden');*/
}
div#scrollyes /* Allows topic to scroll with correct margins. Cannot be used with running head banner */
{ /* Must immediately follow <body>. */
padding: 2px 15px 2px 22px;
width: 100%;
}
div#nsbanner /* Creates Nonscrolling banner region */
{
position: relative;
left: 0px;
padding: 0px 0px 0px 0px;
border-bottom: 1px solid #999999;
/*width: expression(document.body.clientWidth);*/
background-color: #99ccff;
}
div#nstext /* Creates the scrolling text area for Nonscrolling region topic */
{
top: 0px;
padding: 5px 20px 0px 22px;
/*overflow: expression('auto');
width: expression(document.body.clientWidth);
height: expression(document.body.clientHeight - nsbanner.offsetHeight);*/
}
div#scrbanner /* Creates the running head bar in a full-scroll topic */
{ /* Allows topic to scroll. */
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
border-bottom: 1px solid #999999;
}
div#scrtext /* Creates the text area in a full-scroll topic */
{ /* Allows topic to scroll. */
padding: 0px 10px 0px 22px;
}
div#bannerrow1 /* provides full-width color to top row in running head (requires script) */
{
}
div#titlerow /* provides non-scroll topic title area (requires script) */
{
padding: 0px 10px 0px 22px;
}
h1, h2, h3, h4
{
font-family: Verdana, Arial, Helvetica, sans-serif;
margin-bottom: .4em;
margin-top: 1em;
font-weight: bold;
}
h1
{
font-size: 120%;
margin-top: 0em;
}
div#scrollyes h1 /* Changes font size for full-scrolling topic */
{
font-size: 150%;
}
h2
{
font-size: 130%;
}
h3
{
font-size: 115%;
}
h4
{
font-size: 100%;
}
.dtH1, .dtH2, .dtH3, .dtH4
{
margin-left: -18px;
}
div#titlerow h1
{
margin-bottom: .2em
}
table.bannerparthead, table.bannertitle /* General values for the Running Head tables */
{
position: relative;
left: 0px;
top: 0px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
width: 100%;
height: 21px;
border-collapse: collapse;
border-style: solid;
border-width: 0px;
background-color: #99ccff;
font-size: 100%;
}
table.bannerparthead td /* General Values for cells in the top row of running head */
{
margin: 0px 0px 0px 0px;
padding: 2px 0px 0px 4px;
vertical-align: middle;
border-width: 0px;
border-style: solid;
border-color: #999999;
background: transparent;
font-style: italic;
font-weight: normal;
}
table.bannerparthead td.product /* Values for top right cell in running head */
{ /* Allows for a second text block in the running head */
text-align: right;
padding: 2px 5px 0px 5px;
}
table.bannertitle td /* General Values for cells in the bottom row of running head */
{
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 3px;
vertical-align: middle;
border-width: 0px 0px 1px 0px;
border-style: solid;
border-color: #999999;
background: transparent;
font-weight: bold;
}
td.button1 /* Values for button cells */
{
width: 14px;
cursor: hand;
}
p
{
margin: .5em 0em .5em 0em;
}
blockquote.dtBlock
{
margin: .5em 1.5em .5em 1.5em;
}
div#dtHoverText
{
color: #000066;
}
.normal
{
margin: .5em 0em .5em 0em;
}
.fineprint
{
font-size: 90%; /* 90% of 70% */
}
.indent
{
margin: .5em 1.5em .5em 1.5em;
}
.topicstatus /* Topic Status Boilerplate class */
{
display: block;
color: red;
}
p.label
{
margin-top: 1em;
}
p.labelproc
{
margin-top: 1em;
color: #000066;
}
div.tablediv
{
width: 100%; /* Forces tables to have correct right margins and top spacing */
margin-top: -.4em;
}
ol div.tablediv, ul div.tablediv, ol div.HxLinkTable, ul div.HxLinkTable
{
margin-top: 0em; /* Forces tables to have correct right margins and top spacing */
}
table.dtTABLE
{
width: 100%; /* Forces tables to have correct right margin */
margin-top: .6em;
margin-bottom: .3em;
border-width: 1px 1px 0px 0px;
border-style: solid;
border-color: #999999;
background-color: #999999;
font-size: 100%; /* Text in Table is same size as text outside table */
}
table.dtTABLE th, table.dtTABLE td
{
border-style: solid; /* Creates the cell border and color */
border-width: 0px 0px 1px 1px;
border-style: solid;
border-color: #999999;
padding: 4px 6px;
text-align: left;
}
table.dtTABLE th
{
background: #cccccc; /* Creates the shaded table header row */
vertical-align: bottom;
}
table.dtTABLE td
{
background: #ffffff;
vertical-align: top;
}
MSHelp\:ktable
{
disambiguator: span;
separator: &nbsp|&#32;
prefix: |&#32;
postfix: &nbsp;
filterString: ;
}
div.HxLinkTable
{
width: auto; /* Forces tables to have correct right margins and top spacing */
margin-top: -.4em;
visibility: visible;
}
ol div.HxLinkTable, ul div.HxLinkTable
{
margin-top: 0em; /* Forces tables to have correct right margins and top spacing */
}
table.HxLinkTable /* Keep in sync with general table settings below */
{
width: auto;
margin-top: 1.5em;
margin-bottom: .3em;
margin-left: -1em;
border-width: 1px 1px 0px 0px;
border-style: solid;
border-color: #999999;
background-color: #999999;
font-size: 100%; /* Text in Table is same size as text outside table */
behavior:url(hxlinktable.htc); /* Attach the behavior to link elements. */
}
table.HxLinkTable th, table.HxLinkTable td /* Keep in sync with general table settings below */
{
border-style: solid; /* Creates the cell border and color */
border-width: 0px 0px 1px 1px;
border-style: solid;
border-color: #999999;
padding: 4px 6px;
text-align: left;
}
table.HxLinkTable th /* Keep in sync with general table settings below */
{
background: #cccccc; /* Creates the shaded table header row */
vertical-align: bottom;
}
table.HxLinkTable td /* Keep in sync with general table settings below */
{
background: #ffffff;
vertical-align: top;
}
pre.code
{
background-color: #eeeeee;
padding: 4px 6px 4px 6px;
}
pre, div.syntax
{
margin-top: .5em;
margin-bottom: .5em;
}
pre, code, .code, div.syntax
{
font: 100% Monospace, Courier New, Courier; /* This is 100% of 70% */
color: #000066;
}
pre b, code b
{
letter-spacing: .1em; /* opens kerning on bold in Syntax/Code */
}
pre.syntax, div.syntax
{
background: #cccccc;
padding: 4px 8px;
cursor: text;
margin-top: 1em;
margin-bottom: 1em;
color: #000000;
border-width: 1px;
border-style: solid;
border-color: #999999;
/* ------------------------------------- */
/* BEGIN changes to dtue.css conventions */
font-weight: bolder;
letter-spacing: .1em;
}
.syntax span.lang
{
margin: 0;
font-weight: normal;
}
.syntax span.meta
{
margin: 0;
font-weight: normal;
font-style: italic;
}
.syntax a
{
margin: 0;
font-weight: normal;
}
/* END changes to dtue.css conventions */
/* ----------------------------------- */
.syntax div
{
padding-left: 24px;
text-indent: -24px;
}
.syntax .attribute
{
font-weight: normal;
}
div.footer
{
font-style: italic;
}
div.footer hr
{
color: #999999;
height: 1px;
}
ol, ul
{
margin: .5em 0em 0em 4em;
}
li
{
margin-bottom: .5em;
}
ul p, ol p, dl p
{
margin-left: 0em;
}
ul p.label, ol p.label
{
margin-top: .5em;
}
dl
{
margin-top: 0em;
padding-left: 1px; /* Prevents italic-letter descenders from being cut off */
}
dd
{
margin-bottom: 0em;
margin-left: 1.5em;
}
dt
{
margin-top: .5em;
}
a:link
{
color: #0000ff;
}
a:visited
{
color: #0000ff;
}
a:hover
{
color: #3366ff;
}
img
{
border: none;
}
table.dtTABLE td img
{
border: none;
vertical-align: top;
margin-right: 2px;
}
/* Not in dtue.css. Used by NDoc's "ShowMissing..." options. */
.missing
{
color: Red;
font-weight: bold;
}
div.Hierarchy
{
margin: 0.5em,0.0em,0.5em,1.0em;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

View File

@ -251,8 +251,17 @@ namespace TellmePdmsPluging.Network
var simplifyRequest = serializer.Deserialize<SimplifyModelRequest>(payload) ?? new SimplifyModelRequest();
executionId = simplifyRequest.ExecutionId;
var command = new SimplifyModelCommand(simplifyRequest);
var result = command.Execute() as SimplifyModelResult;
var command = new SimplifyModelCommand(simplifyRequest);
var invokeResult = MainThreadInvoker.Invoke(command, 600000);
if (!invokeResult.Success)
{
var msg = string.IsNullOrEmpty(invokeResult.Message) ? "模型轻量化失败" : invokeResult.Message;
NotifyBatchTaskResult(simplifyRequest.ExecutionId, false, msg, null);
return CreateErrorResponse(500, msg);
}
var result = invokeResult.Result as SimplifyModelResult;
if (result == null)
{
@ -281,19 +290,71 @@ namespace TellmePdmsPluging.Network
string executionId = null;
try
{
if (!string.Equals(request.HttpMethod, "POST", StringComparison.OrdinalIgnoreCase))
{
return CreateErrorResponse(405, "仅支持POST");
}
var payload = ReadRequestBody(request);
if (string.IsNullOrEmpty(payload))
{
return CreateErrorResponse(400, "请求体不能为空");
}
return CreateErrorResponse(400, "请求体不能为空");
}
var serializer = new JavaScriptSerializer();
var shrinkwrapRequest = serializer.Deserialize<ShrinkwrapModelRequest>(payload) ?? new ShrinkwrapModelRequest();
executionId = shrinkwrapRequest.ExecutionId;
var command = new ShrinkwrapModelCommand(shrinkwrapRequest);
var invokeResult = MainThreadInvoker.Invoke(command, 600000);
var command = new ShrinkwrapModelCommand(shrinkwrapRequest);
// executionId 场景采用异步提交避免长时间阻塞HTTP连接。
if (!string.IsNullOrEmpty(shrinkwrapRequest.ExecutionId))
{
MainThreadInvoker.InvokeAsync(command, asyncInvokeResult =>
{
try
{
if (!asyncInvokeResult.Success)
{
var msg = string.IsNullOrEmpty(asyncInvokeResult.Message) ? "外壳保留失败" : asyncInvokeResult.Message;
NotifyBatchTaskResult(shrinkwrapRequest.ExecutionId, false, msg, null);
return;
}
var asyncResult = asyncInvokeResult.Result as ShrinkwrapModelResult;
if (asyncResult == null)
{
NotifyBatchTaskResult(shrinkwrapRequest.ExecutionId, false, "外壳保留结果为空", null);
return;
}
if (!asyncResult.Success)
{
var message = string.IsNullOrEmpty(asyncResult.Message) ? "外壳保留失败" : asyncResult.Message;
NotifyBatchTaskResult(shrinkwrapRequest.ExecutionId, false, message, null);
return;
}
NotifyBatchTaskResult(shrinkwrapRequest.ExecutionId, true, null, asyncResult);
}
catch (Exception callbackEx)
{
NotifyBatchTaskResult(shrinkwrapRequest.ExecutionId, false, callbackEx.Message, null);
}
});
var acceptedData = new
{
accepted = true,
executionId = shrinkwrapRequest.ExecutionId,
status = "QUEUED",
message = "外壳保留任务已提交"
};
return CreateSuccessResponse(acceptedData);
}
var invokeResult = MainThreadInvoker.Invoke(command, 600000);
if (!invokeResult.Success)
{
var msg = string.IsNullOrEmpty(invokeResult.Message) ? "外壳保留失败" : invokeResult.Message;
@ -505,20 +566,20 @@ namespace TellmePdmsPluging.Network
if (!invokeResult.Success)
{
var msg = string.IsNullOrEmpty(invokeResult.Message) ? "IFC导出失败" : invokeResult.Message;
var msg = string.IsNullOrEmpty(invokeResult.Message) ? "RVM导出失败" : invokeResult.Message;
NotifyBatchTaskResult(exportRequest.ExecutionId, false, msg, null);
return CreateErrorResponse(500, msg);
}
var result = invokeResult.Result as ExportIfcResult;
if (result == null)
{
return CreateErrorResponse(500, "IFC导出结果为空");
}
if (result == null)
{
return CreateErrorResponse(500, "RVM导出结果为空");
}
if (!result.Success)
{
var message = string.IsNullOrEmpty(result.Message) ? "IFC导出失败" : result.Message;
var message = string.IsNullOrEmpty(result.Message) ? "RVM导出失败" : result.Message;
NotifyBatchTaskResult(exportRequest.ExecutionId, false, message, null);
return CreateErrorResponse(500, message);
}
@ -529,7 +590,7 @@ namespace TellmePdmsPluging.Network
catch (Exception ex)
{
NotifyBatchTaskResult(executionId, false, ex.Message, null);
return CreateErrorResponse(500, $"IFC导出失败: {ex.Message}");
return CreateErrorResponse(500, $"RVM导出失败: {ex.Message}");
}
}

View File

@ -19,4 +19,7 @@
4. 启动PDMS
PDMS启动时会自动加载插件成功后会弹出提示框显示HTTP服务已在9001端口启动。
PDMS启动时会自动加载插件成功后会弹出提示框显示HTTP服务已在9001端口启动。
### 转换chm到html
hh.exe -decompile ./Aveva.Pdms Aveva.Pdms.chm

119
日志排查指南.md Normal file
View File

@ -0,0 +1,119 @@
# 日志排查指南PDMS 插件)
本文给后续开发使用,目标是快速定位导出/接口问题。
## 1. 先看哪些日志
### 1.1 PDMS Alert Summary最关键
- 典型内容:
- `Message: (...) CP: Syntax error`
- `Message: (...) Security error ... feature has not been checked out`
- `Command: EXPORT ...`
- 这是最直接的命令执行结果,优先级最高。
### 1.2 接口返回 JSON
- 本插件接口统一返回:
- `code`
- `message`
- `data`
- 导出失败时重点看 `message`,例如:
- `RVM导出失败未生成文件`
- `RVM导出异常: ...`
### 1.3 插件源码中的错误包装点
- 导出主逻辑:`Core/PdmsManager.cs`
- HTTP 包装:`Network/HttpServer.cs`
---
## 2. 日志/文档常见位置
### 2.1 PDMS 安装目录
- `C:\AVEVA\Plant\PDMS12.1.SP4\`
### 2.2 文档目录(命令语法依据)
- `C:\AVEVA\Plant\PDMS12.1.SP4\Documentation\`
- 常用已解包文档(若存在):
- `...\_decompiled\DRMPU\`EXPORT 命令完整语法)
- `...\_decompiled\EXPLA\`ExPLANT-A 示例)
### 2.3 项目目录
- 当前仓库根目录(本文件所在目录)
---
## 3. 常用检索命令Windows
先执行:
```powershell
chcp 65001
```
### 3.1 在项目里搜导出相关代码
```powershell
rg -n "export|EXPORT|RVM|IFC|ExportSystem|Selections|EXPORT FINISH" -S Core Network Models
```
### 3.2 在文档里搜命令语法
```powershell
rg -n -i "export command - full syntax|copying model data from pdms to review|export system|export file|export finish" "C:\AVEVA\Plant\PDMS12.1.SP4\Documentation" -S --glob "*.htm" --glob "*.html"
```
### 3.3 搜许可证/安全错误关键词
```powershell
rg -n -i "security error|feature has not been checked out|license|licen[cs]e" -S .
```
> 注Alert Summary 通常是人工“Save Alert Summary to File”保存的文本路径不固定。拿到文件后可直接用 `rg``Message:` / `Command:`
---
## 4. 一次标准排查流程
1. 看接口返回 `message`(先判断是语法错误、许可证错误,还是文件未生成)。
2. 打开 PDMS Alert Summary记录两行
- `Message: ...`
- `Command: ...`
3. 若 `Message` 包含:
- `CP: Syntax error`:命令格式问题,去查 `DRMPU` 语法页。
- `feature has not been checked out`:许可证问题,找管理员处理 feature。
4. 对照 `Core/PdmsManager.cs` 的导出命令构建逻辑,确认实际发送命令序列。
5. 最后再看落盘路径:
- `ExportPath`
- `FileName`
- `FullPath`
- 文件是否真实存在。
---
## 5. 典型问题与判断
### 5.1 `CP: Syntax error`
- 说明 PDMS 不接受该命令写法。
- 优先根据文档语法修正,不要靠猜。
### 5.2 `Security error ... feature has not been checked out`
- 许可证未授权对应导出驱动(例如 `/EXPLANTA`)。
- 这是环境/授权问题,不是代码语法问题。
### 5.3 `导出失败,未生成文件`
- 命令可能执行但未产出文件,常见原因:
- 选择对象为空或不匹配;
- 导出驱动/许可问题;
- 输出目录权限或路径异常。
---
## 6. 开发约定建议
1. 提交 issue 时必须附:
- 接口请求体
- 接口响应 JSON
- Alert Summary 里的 `Message` + `Command`
2. 优先用文档佐证命令,不要直接改命令字符串“试错”。
3. 涉及导出驱动(`EXPORT SYSTEM ...`)时,先确认许可证 feature。