SmarTeam 二次开发实战:Visual C++ 6.0 构建 Plan Management 系统

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:SmarTeam 是一款强大的 PLM 系统,二次开发可扩展其功能。本课程将重点讲解如何使用 Visual C++ 6.0 进行 SmarTeam 二次开发,并以 Plan Management 为例,带领学员构建一个完整的项目计划管理系统。通过课程,学员将掌握 COM 接口的使用、DLL 创建、组件注册、调试技巧等,并深入了解 Plan Management 在 SmarTeam 中的应用,包括任务管理、资源分配、报表分析和工作流集成。 SmarTeam 二次开发

1. SmarTeam 二次开发基础

SmarTeam 二次开发是基于 SmarTeam COM 接口进行的,因此了解 COM 接口的概念和原理至关重要。COM 接口是一种跨语言、跨平台的二进制接口,它定义了一组对象可以调用的方法和属性。SmarTeam COM 接口体系结构庞大且复杂,但可以将其划分为几个主要模块,包括基础接口、数据访问接口、业务逻辑接口和管理接口。这些模块提供了丰富的功能,使开发人员能够访问 SmarTeam 的各种功能,例如数据管理、流程自动化和报告生成。

2.2 SmarTeam COM 接口概览

2.2.1 COM 接口的概念和原理

COM(组件对象模型)是一种由微软开发的二进制软件接口标准,用于定义和实现软件组件之间的通信。COM 接口是 COM 的基本构建块,它定义了组件可以公开的一组方法和属性。

COM 接口使用一种称为接口定义语言(IDL)来定义。IDL 文件包含接口的名称、方法签名和属性定义。一旦 IDL 文件被编译,它就会生成一个头文件(.h)和一个类型库(.tlb)。头文件包含接口的声明,而类型库则包含有关接口的元数据信息。

2.2.2 SmarTeam COM 接口体系结构

SmarTeam 公开了一组丰富的 COM 接口,用于访问其功能。这些接口被组织成一个分层的体系结构,如下所示:

  • 基础接口: 这些接口提供了 SmarTeam 的基本功能,例如对象管理、事务管理和错误处理。
  • 业务对象接口: 这些接口表示 SmarTeam 中的业务对象,例如项目、文档和任务。
  • 服务接口: 这些接口提供了特定服务,例如搜索、报表生成和工作流管理。

SmarTeam COM 接口体系结构是一个分层结构,每个层次都依赖于下层的接口。例如,业务对象接口依赖于基础接口,而服务接口依赖于业务对象接口。

代码块:获取 SmarTeam 基础接口
// 创建 SmarTeam 基础接口
ISmartPtr<ISmartSession> session;
HRESULT hr = CoCreateInstance(CLSID_SmartSession, NULL, CLSCTX_INPROC_SERVER, IID_ISmartSession, (void**)&session);
if (FAILED(hr))
{
    // 处理错误
}
逻辑分析:

该代码块使用 CoCreateInstance 函数创建 ISmartSession 接口的实例。 ISmartSession 是 SmarTeam 的基础接口,它提供了对 SmarTeam 会话的访问。如果 CoCreateInstance 函数成功,它将返回 S_OK ,否则它将返回一个错误代码。

3. COM 接口调用和 DLL 创建

3.1 COM 接口的调用方法

COM 接口的调用方法主要有两种:使用 ATL 创建 COM 对象和使用 MFC 创建 COM 对象。

3.1.1 使用 ATL 创建 COM 对象

ATL(Active Template Library)是微软提供的一个用于创建 COM 对象的模板库。使用 ATL 创建 COM 对象可以简化 COM 对象的开发过程,提高开发效率。

步骤:

  1. 创建一个 ATL 工程。
  2. 在工程中添加一个 COM 对象类。
  3. 实现 COM 对象的接口。
  4. 编译工程。

3.1.2 使用 MFC 创建 COM 对象

MFC(Microsoft Foundation Classes)是微软提供的一个用于创建 Windows 应用程序的类库。MFC 也支持 COM 对象的创建。

步骤:

  1. 创建一个 MFC 工程。
  2. 在工程中添加一个 COM 对象类。
  3. 实现 COM 对象的接口。
  4. 编译工程。

3.2 DLL 的创建和部署

DLL(Dynamic Link Library)是一种动态链接库,它包含了可由其他程序调用的代码和数据。SmarTeam DLL 是 SmarTeam 二次开发中常用的组件,它可以封装特定的功能,方便其他程序调用。

3.2.1 DLL 的基本结构和原理

DLL 的基本结构包括:

  • 导出函数表: 包含 DLL 中所有导出函数的地址。
  • 代码段: 包含 DLL 的代码。
  • 数据段: 包含 DLL 的数据。

DLL 的工作原理如下:

  1. 当一个程序调用 DLL 中的函数时,操作系统会加载 DLL 到内存。
  2. 操作系统会查找导出函数表,找到要调用的函数的地址。
  3. 操作系统会将控制权转移到该函数。
  4. 函数执行完毕后,控制权会返回到调用程序。

3.2.2 SmarTeam DLL 的创建和注册

创建 SmarTeam DLL:

  1. 使用 Visual C++ 创建一个 DLL 工程。
  2. 在工程中添加 SmarTeam SDK 中的必要头文件和库文件。
  3. 实现 SmarTeam COM 接口。
  4. 编译工程。

注册 SmarTeam DLL:

  1. 打开命令提示符。
  2. 导航到 DLL 所在的目录。
  3. 执行以下命令:
regsvr32 <DLL 名>.dll

例如:

regsvr32 MySmarTeamDLL.dll

注册成功后,DLL 中的 COM 对象就可以被其他程序调用了。

4. SmarTeam 组件注册与调试

4.1 SmarTeam 组件的注册机制

4.1.1 注册表中 SmarTeam 组件的信息

SmarTeam 组件的注册信息存储在 Windows 注册表中,具体路径为:

HKEY_CLASSES_ROOT\CLSID\{Component GUID}

其中, {Component GUID} 为组件的全局唯一标识符 (GUID)。注册表中存储的信息包括:

  • 组件的名称和描述
  • 组件的类型库信息
  • 组件的 ProgID
  • 组件的 InProcServer32 项,指定组件的 DLL 路径和线程模型

4.1.2 SmarTeam 组件的注册和注销

SmarTeam 组件的注册和注销可以通过以下方式进行:

  • 注册:
  • 使用 regsvr32 命令,例如: regsvr32 /s "C:\path\to\component.dll"
  • 使用 SmarTeam SDK 中的 ISTComponentManager 接口,例如: cpp ISTComponentManager* pComponentManager; pComponentManager->RegisterComponent(componentGUID);

  • 注销:

  • 使用 regsvr32 命令,例如: regsvr32 /u "C:\path\to\component.dll"
  • 使用 SmarTeam SDK 中的 ISTComponentManager 接口,例如: cpp ISTComponentManager* pComponentManager; pComponentManager->UnregisterComponent(componentGUID);

4.2 SmarTeam 组件的调试技巧

4.2.1 使用 Visual Studio 调试 SmarTeam 组件

Visual Studio 提供了调试 SmarTeam 组件的功能,具体步骤如下:

  1. 在 Visual Studio 中打开组件的项目。
  2. 在“调试”菜单中选择“附加到进程”。
  3. 在“附加到进程”对话框中,选择 SmarTeam 进程(例如, smarteam.exe )。
  4. 单击“附加”按钮。

4.2.2 使用 SmarTeam 调试工具调试组件

SmarTeam 提供了专门的调试工具,称为 SmarTeam Debugger,可以用来调试 SmarTeam 组件。具体步骤如下:

  1. 启动 SmarTeam Debugger。
  2. 在“文件”菜单中选择“打开”。
  3. 选择要调试的组件的 DLL 文件。
  4. 单击“调试”按钮。

5. Plan Management 在 SmarTeam 中的应用

5.1 Plan Management 的概念和功能

5.1.1 Plan Management 的基本概念

Plan Management 是 SmarTeam 中用于管理项目计划和进度跟踪的模块。它提供了创建、修改和管理项目计划所需的功能,包括任务、资源和进度信息。

5.1.2 Plan Management 的主要功能

Plan Management 的主要功能包括:

  • 任务管理: 创建、修改和删除任务,设置任务属性(如名称、描述、优先级和截止日期),以及管理任务之间的依赖关系。
  • 资源管理: 创建、修改和删除资源(如人员、设备和材料),以及管理资源的分配和可用性。
  • 进度跟踪: 记录和更新任务的进度信息,生成进度报告,并分析项目进度。
  • 甘特图: 提供项目计划的甘特图视图,直观地显示任务之间的关系和进度。

5.2 Plan Management 的二次开发接口

5.2.1 Plan Management COM 接口体系结构

Plan Management 的二次开发接口基于 COM(组件对象模型)。它提供了一系列 COM 接口,允许开发者使用编程语言(如 C++ 或 VB)访问和操作 Plan Management 功能。

Plan Management COM 接口体系结构主要包括以下接口:

  • IPlanMgr: 管理项目计划的根接口。
  • ITask: 表示项目任务的接口。
  • IResource: 表示项目资源的接口。
  • IProgress: 表示项目进度信息的接口。

5.2.2 Plan Management 接口的调用示例

下面是一个使用 C++ 调用 Plan Management 接口的示例代码:

// 创建 Plan Management 对象
IPlanMgrPtr planMgr = GetPlanMgrPtr();

// 创建一个新任务
ITaskPtr task = planMgr->CreateTask();
task->SetName("Task 1");
task->SetDescription("This is task 1.");

// 将任务添加到项目计划中
planMgr->AddTask(task);

// 获取任务的进度信息
IProgressPtr progress = task->GetProgress();
double percentComplete = progress->GetPercentComplete();

通过调用 Plan Management COM 接口,开发者可以扩展 SmarTeam 的功能,创建定制的项目管理应用程序。

6. 任务管理、资源分配和进度跟踪

6.1 任务管理的二次开发

6.1.1 任务的创建、修改和删除

SmarTeam 中的任务管理功能提供了对任务的创建、修改和删除操作。通过二次开发,可以定制这些操作以满足特定的业务需求。

创建任务

// 创建一个任务对象
ITaskPtr task = ITaskPtr(CLSID_Task);

// 设置任务属性
task->SetName(L"任务名称");
task->SetDescription(L"任务描述");

// 保存任务
task->Save();

修改任务

// 获取任务对象
ITaskPtr task = ITaskPtr(CLSID_Task, taskID);

// 修改任务属性
task->SetName(L"修改后的任务名称");

// 保存任务
task->Save();

删除任务

// 获取任务对象
ITaskPtr task = ITaskPtr(CLSID_Task, taskID);

// 删除任务
task->Delete();

6.1.2 任务的查询和过滤

SmarTeam 提供了丰富的查询和过滤功能,可以根据不同的条件查找任务。

查询任务

// 创建查询对象
IQueryPtr query = IQueryPtr(CLSID_Query);

// 设置查询条件
query->SetFilter(L"Name LIKE '任务%'");

// 执行查询
IQueryResultsPtr results = query->Execute();

// 遍历查询结果
for (int i = 0; i < results->GetCount(); i++)
{
    ITaskPtr task = results->GetItem(i);
    // ...
}

过滤任务

// 创建任务集合对象
ITaskCollectionPtr tasks = ITaskCollectionPtr(CLSID_TaskCollection);

// 设置过滤条件
tasks->SetFilter(L"Name LIKE '任务%'");

// 遍历过滤后的任务集合
for (int i = 0; i < tasks->GetCount(); i++)
{
    ITaskPtr task = tasks->GetItem(i);
    // ...
}

6.2 资源分配的二次开发

6.2.1 资源的创建、修改和删除

SmarTeam 中的资源分配功能允许将资源分配给任务。通过二次开发,可以定制资源的创建、修改和删除操作。

创建资源

// 创建一个资源对象
IResourcePtr resource = IResourcePtr(CLSID_Resource);

// 设置资源属性
resource->SetName(L"资源名称");
resource->SetType(L"资源类型");

// 保存资源
resource->Save();

修改资源

// 获取资源对象
IResourcePtr resource = IResourcePtr(CLSID_Resource, resourceID);

// 修改资源属性
resource->SetName(L"修改后的资源名称");

// 保存资源
resource->Save();

删除资源

// 获取资源对象
IResourcePtr resource = IResourcePtr(CLSID_Resource, resourceID);

// 删除资源
resource->Delete();

6.2.2 资源的分配和释放

SmarTeam 提供了对资源分配和释放的二次开发支持。

分配资源

// 获取任务对象
ITaskPtr task = ITaskPtr(CLSID_Task, taskID);

// 获取资源对象
IResourcePtr resource = IResourcePtr(CLSID_Resource, resourceID);

// 分配资源
task->AssignResource(resource);

释放资源

// 获取任务对象
ITaskPtr task = ITaskPtr(CLSID_Task, taskID);

// 获取资源对象
IResourcePtr resource = IResourcePtr(CLSID_Resource, resourceID);

// 释放资源
task->ReleaseResource(resource);

6.3 进度跟踪的二次开发

6.3.1 进度信息的获取和更新

SmarTeam 提供了对任务进度信息的获取和更新功能。通过二次开发,可以定制这些操作以满足特定的需求。

获取进度信息

// 获取任务对象
ITaskPtr task = ITaskPtr(CLSID_Task, taskID);

// 获取进度信息
double progress = task->GetProgress();

更新进度信息

// 获取任务对象
ITaskPtr task = ITaskPtr(CLSID_Task, taskID);

// 更新进度信息
task->SetProgress(0.5);

6.3.2 进度报告的生成和分析

SmarTeam 提供了生成和分析进度报告的功能。通过二次开发,可以定制这些功能以满足特定的需求。

生成进度报告

// 创建进度报告对象
IProgressReportPtr report = IProgressReportPtr(CLSID_ProgressReport);

// 设置进度报告参数
report->SetStartDate(startDate);
report->SetEndDate(endDate);

// 生成进度报告
report->Generate();

分析进度报告

// 获取进度报告对象
IProgressReportPtr report = IProgressReportPtr(CLSID_ProgressReport, reportID);

// 分析进度报告
double averageProgress = report->GetAverageProgress();

7. 报表生成和分析

7.1 SmarTeam 报表系统的介绍

7.1.1 报表系统的基本概念

SmarTeam 的报表系统是一个强大的工具,可用于生成和分析各种报告。这些报告可以帮助用户跟踪项目进度、识别趋势并做出明智的决策。报表系统基于 Microsoft SQL Server Reporting Services(SSRS),它提供了一个直观的用户界面和丰富的功能集。

7.1.2 报表系统的架构和功能

SmarTeam 报表系统由以下组件组成:

  • 报表服务器: 托管报表定义和数据的服务器。
  • 报表管理器: 用于管理和部署报表的 Web 应用程序。
  • 报表查看器: 用于查看和交互报表的 Web 应用程序。

报表系统提供以下功能:

  • 创建和修改报表: 用户可以使用报表生成器创建和修改报表。报表生成器提供了一个拖放界面,使创建复杂报表变得容易。
  • 部署报表: 报表可以部署到报表服务器,以便其他用户可以访问它们。
  • 查看和交互报表: 用户可以使用报表查看器查看和交互报表。报表查看器提供各种功能,例如缩放、筛选和导出。
  • 计划报表: 报表可以计划在特定时间或事件发生时自动生成和发送。
  • 安全性: 报表系统提供基于角色的安全性,允许管理员控制用户对报表的访问。

7.2 报表二次开发的接口

7.2.1 报表 COM 接口体系结构

SmarTeam 提供了一组 COM 接口,用于访问和操作报表系统。这些接口组织在以下命名空间中:

  • SmarTeam.Reporting: 包含用于管理报表定义和数据的接口。
  • SmarTeam.Reporting.Data: 包含用于访问报表数据的接口。
  • SmarTeam.Reporting.Viewer: 包含用于查看和交互报表的接口。

7.2.2 报表接口的调用示例

以下代码示例演示如何使用 SmarTeam.Reporting 命名空间中的接口创建报表:

using SmarTeam.Reporting;

// 创建报表定义管理器
IReportDefinitionManager reportDefinitionManager = new ReportDefinitionManager();

// 创建新的报表定义
IReportDefinition reportDefinition = reportDefinitionManager.CreateNew();

// 设置报表名称和描述
reportDefinition.Name = "My Report";
reportDefinition.Description = "This is my custom report.";

// 保存报表定义
reportDefinitionManager.Save(reportDefinition);

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:SmarTeam 是一款强大的 PLM 系统,二次开发可扩展其功能。本课程将重点讲解如何使用 Visual C++ 6.0 进行 SmarTeam 二次开发,并以 Plan Management 为例,带领学员构建一个完整的项目计划管理系统。通过课程,学员将掌握 COM 接口的使用、DLL 创建、组件注册、调试技巧等,并深入了解 Plan Management 在 SmarTeam 中的应用,包括任务管理、资源分配、报表分析和工作流集成。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于YOLOv9实现工业布匹缺陷(破洞、污渍)检测系统python源码+详细运行教程+训练好的模型+评估 【使用教程】 一、环境配置 1、建议下载anaconda和pycharm 在anaconda中配置好环境,然后直接导入到pycharm中,在pycharm中运行项目 anaconda和pycharm安装及环境配置参考网上博客,有很多博主介绍 2、在anacodna中安装requirements.txt中的软件包 命令为:pip install -r requirements.txt 或者改成清华源后再执行以上命令,这样安装要快一些 软件包都安装成功后才算成功 3、安装好软件包后,把anaconda中对应的python导入到pycharm中即可(不难,参考网上博客) 二、环境配置好后,开始训练(也可以训练自己数据集) 1、数据集准备 需要准备yolo格式的目标检测数据集,如果不清楚yolo数据集格式,或者有其他数据训练需求,请看博主yolo格式各种数据集集合链接:https://blog.csdn.net/DeepLearning_/article/details/127276492 里面涵盖了上百种yolo数据集,且在不断更新,基本都是实际项目使用。来自于网上收集、实际场景采集制作等,自己使用labelimg标注工具标注的。数据集质量绝对有保证! 本项目所使用的数据集,见csdn该资源下载页面中的介绍栏,里面有对应的下载链接,下载后可直接使用。 2、数据准备好,开始修改配置文件 参考代码中data文件夹下的banana_ripe.yaml,可以自己新建一个不同名称的yaml文件 train:训练集的图片路径 val:验证集的图片路径 names: 0: very-ripe 类别1 1: immature 类别2 2: mid-ripe 类别3 格式按照banana_ripe.yaml照葫芦画瓢就行,不需要过多参考网上的 3、修改train_dual.py中的配置参数,开始训练模型 方式一: 修改点: a.--weights参数,填入'yolov9-s.pt',博主训练的是yolov9-s,根据自己需求可自定义 b.--cfg参数,填入 models/detect/yolov9-c.yaml c.--data参数,填入data/banana_ripe.yaml,可自定义自己的yaml路径 d.--hyp参数,填入hyp.scratch-high.yaml e.--epochs参数,填入100或者200都行,根据自己的数据集可改 f.--batch-size参数,根据自己的电脑性能(显存大小)自定义修改 g.--device参数,一张显卡的话,就填0。没显卡,使用cpu训练,就填cpu h.--close-mosaic参数,填入15 以上修改好,直接pycharm中运行train_dual.py开始训练 方式二: 命令行方式,在pycharm中的终端窗口输入如下命令,可根据自己情况修改参数 官方示例:python train_dual.py --workers 8 --device 0 --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 训练完会在runs/train文件下生成对应的训练文件及模型,后续测试可以拿来用。 三、测试 1、训练完,测试 修改detect_dual.py中的参数 --weights,改成上面训练得到的best.pt对应的路径 --source,需要测试的数据图片存放的位置,代码中的test_imgs --conf-thres,置信度阈值,自定义修改 --iou-thres,iou阈值,自定义修改 其他默认即可 pycharm中运行detect_dual.py 在runs/detect文件夹下存放检测结果图片或者视频 【特别说明】 *项目内容完全原创,请勿对项目进行外传,或者进行违法等商业行为! 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值