Skip to main content

Manipula SDK 函数接口

AddActivityControl

原型

void AddActivityControl(QString activity, QString display, QString icon, QString url);

功能

用于向活动工具栏添加一个图标按钮,以及对应的左侧边栏面板。

参数

  • activity:活动名称,用于唯一标识一个活动。
  • display:该活动面板在活动工具栏中的标签的名称,用于传递翻译文本。
  • url:指向一个qml文件,在该qml文件中定义了活动栏面板。
  • icon:指向一个图标文件,用于在活动工具栏上显示。

返回值

示例

// 添加左侧面板
mpl::AddActivityControl("Operations", QObject::tr("Operations"), QString("qrc:/uitest/operations_pane.svg"),
QString("qrc:/uitest/OperationsPane.qml"));

AddEventLog

原型

void AddEventLog(QString title, QString detail);

功能

用于添加一个事件。

参数

  • title:事件标题。
  • detail:事件详细内容。

返回值

示例

AddOperationMenu

原型

unsigned AddOperationMenu(const QString& name);

功能

给工序(Operation)的右键菜单添加一个用户自定义菜单项。

参数

  • name: 菜单项名称

返回值

生成的菜单项的序号。可根据此序号判断broker的customOperationMenuClicked信号是否对应该菜单项。

示例

AddPanel

原型

void AddPanel(QString panel, QString display, QString url);

功能

用于添加一个底侧边栏面板。

参数

  • panel: 面板名称,用于唯一标识一个面板。
  • display: 该面板在底侧边栏里的名称,可传递翻译文本。
  • url:指向一个qml文件,在该qml文件中定义底侧边栏界面。

返回值

示例

AddStatusControl

原型

void AddStatusControl(QString url);

功能

用于添加一块状态栏显示区域。

参数

  • url:指向一个qml文件,在该qml文件中定义状态栏的界面。

返回值

示例

AddToolGroup

原型

void AddToolGroup(QString group, QString display, QString url);

功能

用于添加一个顶部选项卡工具栏。

参数

  • group: 该工具组的名称,用于唯一标识一个工具组。
  • display: 该组图标工具在顶部选项卡中的标签的名称,可传递翻译文本。
  • url: 指向一个qml文件,在该qml文件中定义工具栏界面。

返回值

示例

mpl::AddToolGroup("UI Test", tr("UI Test"), QString("qrc:/uitest/UIMenuBar.qml"));

Attach

原型

void Attach(unsigned sourceObjId, unsigned targetObjId, bool keepPos);

功能

将源对象安装到目标对象上

参数

  • sourceObjId: 源对象Id(子对象)
  • targetObjId: 目标对象Id(父对象)
  • keepPos: 是否保持源对象当前位置。如果为true,源对象保持在世界坐标系中的当前位置;如果为false,源对 象将移动到目标对象的位置。

返回值

示例

// 把点云模型安装到变位机"IRBP_A250_D1000_H900_1"的第一个装载坐标系上
unsigned pointCloudid = mpl::CreatePointCloud(points);
auto devices = mpl::GetDeviceList();
for (const auto& device : devices) {
if (device.name != "IRBP_A250_D1000_H900_1")
continue;
auto frameList = mpl::GetMountingFrameList(device.id);
if (frameList.size() > 0)
mpl::Attach(pointCloudid, frameList[0].id, false);
return;
}

ClearPreviewedPath

原型

void ClearPreviewedPath(int pathId);

功能

清除指定的预览路径

参数

  • pathId: 路径的id

返回值

示例

mpl::ClearPreviewedPath(pathId);

ClearPreviewedPaths

原型

void ClearPreviewedPath();

功能

清除所有预览路径

参数

返回值

示例

mpl::ClearPreviewedPaths();

ClearSelection

原型

void ClearSelection();

功能

清除当前所有选中的对象。

参数

返回值

示例

mpl::ClearSelection();

CreateGenericOperation

原型

PathOperation CreateGenericOperation(unsigned taskId, QString name, unsigned parentId = 0);

功能

创建一个通用工序,并返回该工序。

参数

  • taskId: 工序所属的任务Id
  • name: 工序名称
  • parentId: 工序的父工序Id,默认值0表示创建一个顶层工序。

返回值

返回新创建的工序。

示例

auto pathOperation = mpl::CreateGenericOperation(taskId, "MyOperation");

CreateCompoundOperation

原型

CompoundOperation CreateCompoundOperation(unsigned taskId, QString name, unsigned parentId);

功能

创建一个复合工序,并返回该工序。复合工序是一种可以包含多个子工序的容器工序。

参数

  • taskId: 工序所属的任务Id
  • name: 工序名称
  • parentId: 工序的父工序Id

返回值

返回新创建的复合工序。

示例

auto compoundOp = mpl::CreateCompoundOperation(taskId, "MyCompoundOperation", parentId);

CreateInstructions

原型

void CreateInstructions(MotionType motionType,
const std::vector<Pose>& poses,
unsigned operationId,
unsigned speeddataId,
unsigned zonedataId,
unsigned wobjdataId,
unsigned tooldataId);

功能

基于给定的位姿序列和相关参数创建机器人运动指令,支持MoveL和MoveJ类型。

参数

  • motionType: 运动类型,支持的类型为 MotionType::MoveLMotionType::MoveJ。传入无效的运动类型将抛出异常。
  • poses: 位姿列表,在指定位姿处创建指令的目标点。
  • operationId: 指令所属的工序的Id,该工序应该是一个GenericOperation。
  • speeddataId: 规定指令使用的speeddata。
  • zonedataId: 规定指令使用的zonedata。
  • wobjdataId: 规定指令使用的wobjdataId。
  • tooldataId: 规定指令使用的tooldata。

返回值

示例

CreateAnnotatedInstructions

原型

void CreateAnnotatedInstructions(MotionType motionType,
const std::vector<AnnotatedPose>& annotatedPoses,
unsigned operationId,
unsigned speeddataId,
unsigned zonedataId,
unsigned wobjdataId,
unsigned tooldataId);

功能

基于给定的位姿序列和相关参数创建机器人运动指令,支持MoveL和MoveJ类型,并为每个指令添加注释。

参数

  • motionType: 运动类型,支持的类型为 MotionType::MoveLMotionType::MoveJ。传入无效的运动类型将抛出异常。
  • annotatedPoses: 含注释的位姿列表,在指定位姿处创建指令的目标点并添加注释。注释字符串为空时不添加注释。
  • operationId: 指令所属的工序的Id,该工序应该是一个GenericOperation。
  • speeddataId: 规定指令使用的speeddata。
  • zonedataId: 规定指令使用的zonedata。
  • wobjdataId: 规定指令使用的wobjdataId。
  • tooldataId: 规定指令使用的tooldata。

返回值

示例

CreatePointCloud

原型

unsigned CreatePointCloud(std::span<const Pos> points, const Pose& pose = Pose());
unsigned CreatePointCloud(QString name, std::span<const Pos> points, const Pose& pose = Pose());

功能

在指定位置使用点数组创建点云对象,可指定点云的name
不指定name时,默认name为"PointCloud_id",id为返回的id

参数

  • name: 名称
  • points: 点数组,包含点云数据
  • pose: 点云对象的位姿,在指定的位置创建点云

返回值

创建的点云对象的id

示例


std::vector<mpl::Pos> points;

/*
填充点云数据
*/

// 不指定name
auto pointCloudId = mpl::CreatePointCloud(points);
// 指定name
auto pointCloudId = mpl::CreatePointCloud("MyPointCloud", points);

DeleteCloudPoints

原型

void DeleteCloudPoints(unsigned pointcloudId, const std::vector<size_t>& points);

功能

用于删除一个点云中的一组点。

参数

  • pointcloudId 要删除的点所在的点云对象的id
  • points 要删除的点的列表。列表中的每一项是一个点在该点云中的次序索引。

返回值

示例

DeletePointClouds

原型

void DeletePointClouds(const std::vector<unsigned>& pcs);

功能

用于删除一个或者多个点云对象。

参数

  • pcs 要删除的点云对象的id的列表。当列表中只有1项时,即删除一个点云对象的功能。

返回值

示例

DeleteSelectedCloudPoints

原型

void DeleteSelectedCloudPoints(const std::vector<unsigned>& pcs = std::vector<unsigned>{});

功能

用于删除多个或者全部的选中的点云对象中的选中的点。

参数

  • pcs 要删除的点云对象的id的列表。当列表为空时,会删除所有选中的点云对象中的所有的选中的点。

返回值

示例

DeleteSelectedPointClouds

原型

void DeleteSelectedPointClouds();

功能

用于删除所有的选中的点云对象。

参数

返回值

示例

DecorateEdge

原型

std::unique_ptr<DecoratedEdgeHandle> DecorateEdge(unsigned bodyId, const TopoDS_Edge& edge);

功能

用于高亮显示指定实体的边。当返回的 DecoratedEdgeHandle 对象生命周期结束时,高亮效果会被自动清除。

Decorate只高亮3D区域,不影响layout区域。它不属于select动作,不会被manipula内置的交互动作清除。因此开发者必须小心手动管理返回值的生命周期。

参数

  • bodyId: 边所属的实体Id
  • edge: 要高亮显示的边对象(TopoDS_Edge类型)

返回值

返回一个 std::unique_ptr<DecoratedEdgeHandle> 智能指针。当该指针被销毁时,边的高亮效果会自动清除。

示例

// 高亮显示一条边
auto handle = mpl::DecorateEdge(bodyId, edge);
// 当handle超出作用域或被重置时,高亮会自动清除

DecorateFace

原型

std::unique_ptr<DecoratedFaceHandle> DecorateFace(unsigned bodyId, unsigned faceIndex);

功能

用于高亮显示指定实体的面。当返回的 DecoratedFaceHandle 对象生命周期结束时,高亮效果会被自动清除。

Decorate只高亮3D区域,不影响layout区域。它不属于select动作,不会被manipula内置的交互动作清除。因此开发者必须小心手动管理返回值的生命周期。

参数

  • bodyId: 面所属的实体Id
  • faceIndex: 要高亮显示的面的索引

返回值

返回一个 std::unique_ptr<DecoratedFaceHandle> 智能指针。当该指针被销毁时,面的高亮效果会自动清除。

示例

// 高亮显示一个面
auto handle = mpl::DecorateFace(bodyId, faceIndex);
// 当handle超出作用域或被重置时,高亮会自动清除

GetCloudPoints

原型

std::vector<Pos> GetCloudPoints(unsigned id);

参数

  • id 点云对象的id

返回值

点云对象包含的所有点的坐标的列表

例子

// 已知点云id为pointCloudId, 输出所有点的坐标

auto points = mpl::GetCloudPoints(pointCloudId);
for(const auto& pnt: points) {
std::cout << pnt.x << " "<< pnt.y << " " << pnt.z << "\n";
}

GetDeviceList

原型

std::vector<IdName> GetDeviceList();

功能

获取设备Id的列表

参数

返回值

包含设备Id和Name的列表

示例

auto devices = mpl::GetDeviceList();

for(auto& device : devices) {
std::cout << "device : " << device.id << " " << device.name << "\n";
}

GetMountingFrameList

原型

std::vector<IdName> GetMountingFrameList(unsigned deviceId);

功能

根据设备Id获取装载坐标系(Mounting Frame)的列表

参数

  • deviceId: 要获取装载坐标系的设备Id

返回值

包含装载坐标系Id和Name的列表

示例

auto frames = mpl::GetMountingFrameList(deviceId);

for(auto& frame : frames) {
std::cout << "mounting frame : " << frame.id << " " << frame.name << "\n";
}

GetPathOperation

原型

PathOperation GetPathOperation(unsigned operationId);

功能

根据工序ID获取指定的路径工序对象。

参数

  • operationId: 工序的唯一标识符ID。

返回值

返回指定ID对应的路径工序(PathOperation)对象。

异常

  • std::invalid_argument: 当提供的工序ID不存在时抛出。
  • std::logic_error: 当指定ID的对象不是PathOperation类型时抛出。

示例

GetPathOperations

原型

std::vector<PathOperation> GetPathOperations(unsigned taskId);

功能

获取指定task下的所有路径工序 (PathOperation) 对象。

参数

  • taskId: 任务Id。

返回值

该任务下所有的路径工序的列表。

示例

GetSelectedCloudPointIndexes

原型

std::vector<unsigned> GetSelectedCloudPointIndexes(unsigned id);

参数

  • id 点云对象的id

返回值

点云对象被选中点的索引列表

例子

// 已知点云id为pointCloudId, 输出所有被选中点的坐标

auto points = mpl::GetCloudPoints(pointCloudId);
auto selectedIds = mpl::GetSelectedCloudPointIndexes(pointCloudId)
for(const auto& pntId: selectedIds) {
auto& pnt = points.at[pntId];
std::cout << pnt.x << " "<< pnt.y << " " << pnt.z << "\n";
}

GetSelectedCloudPoints

原型

std::vector<Pos> GetSelectedCloudPoints(unsigned id);

参数

  • id 点云对象的id

返回值

点云对象被选中点的坐标的列表

例子

// 已知点云id为pointCloudId, 输出所有被选中点的坐标

auto selectedPoints = mpl::GetSelectedCloudPoints(pointCloudId);
for(const auto& pnt: selectedPoints) {
std::cout << pnt.x << " "<< pnt.y << " " << pnt.z << "\n";
}

GetRobotBrands

原型

std::vector<std::string> GetRobotBrands();

功能

获取所有可用的机器人品牌列表。

参数

返回值

返回所有机器人品牌的名称。

示例

GetRobotList

原型

using NamePath = std::pair<std::string, std::filesystem::path>;
std::optional<std::vector<NamePath>> GetRobotList(const std::string& brand);

功能

根据指定的机器人品牌获取可用的机器人型号列表及其配置文件路径。

参数

返回值

  • 成功时:返回包含机器人型号列表的 std::optional,每个元素为 NamePath 类型(即 std::pair<std::string, std::filesystem::path>)。
  • 失败时:返回 std::nullopt

示例

auto robotList = mpl::GetRobotList("abb");
if (robotList.has_value()) {
for (const auto& [name, path] : robotList.value()) {
std::cout << "Name: " << name
<< ", Path: " << path.string() << std::endl;
}
} else {
std::cout << "Failed to get robot list or no robots found." << std::endl;
}

GetRootContext

原型

QQmlContext* GetRootContext();

功能

用于获取当前QML引擎的根上下文环境。此上下文环境可以用于调用setContextProperty添加在qml中全局可用的属性。

请参考QQmlEngine、QQmlContext等Qt类型的文档获取详细信息。

参数

返回值

执行成功时,返回当前QML引擎的根上下文环境;失败时,返回nullptr。

示例

GetSelectedIdList

原型

std::vector<unsigned> GetSelectedIdList();

功能

获取当前处于选中状态的对象Id列表

参数

返回值

选中对象的Id列表

示例

GetSpeeddataList

原型

std::vector<IdName> GetSpeeddataList(unsigned taskId);

功能

根据任务Id获取Speeddata的列表

参数

  • taskId: 要获取数据的任务Id

返回值

Speeddata的列表

示例

GetTaskList

原型

std::vector<IdName> GetTaskList();

功能

获取任务Id的列表

参数

返回值

任务Id的列表

示例

auto tasks = mpl::GetTaskList();

for(auto& task : tasks) {
std::cout << "task : " << task.id << " " << task.name << "\n";
}

GetTooldataList

原型

std::vector<IdName> GetTooldataList(unsigned taskId);

功能

根据任务Id获取Tooldata的列表

参数

  • taskId: 要获取数据的任务Id

返回值

Tooldata的列表

示例

GetWObjdataList

原型

std::vector<IdName> GetWObjdataList(unsigned taskId);

功能

根据任务Id获取WObjdata的列表

参数

  • taskId: 要获取数据的任务Id

返回值

WObjdata的列表

示例

GetWorldPose

原型

Pose GetWorldPose(unsigned objectId);

功能

获取指定对象在世界坐标系中的位姿。

参数

  • objectId: 要查询位姿的对象Id。

返回值

返回对象在世界坐标系中的位姿(Pose类型)。

异常

  • std::invalid_argument: 当对象不存在时抛出。
  • std::runtime_error: 当对象不是可移动对象时抛出。

示例

SetTargetsPose

原型

void SetTargetsPose(const std::vector<unsigned>& targetIds, const std::vector<Pose>& poses);

功能

批量设置多个目标点的位姿。

参数

  • targetIds: 目标点ID列表。
  • poses: 要设置的位姿列表,必须与targetIds一一对应。

异常

  • std::invalid_argument: 当targetIds和poses大小不一致时抛出。
  • std::invalid_argument: 当targetIds中包含无效的目标点ID时抛出。

示例

SetWorldPose

原型

void SetWorldPose(unsigned objectId, const Pose& pose);

功能

设置指定对象在世界坐标系中的位姿。

参数

  • objectId: 要设置位姿的对象Id,非法时会抛出异常。
  • pose: 要设置的目标位姿(Pose类型)。

示例

GetZonedataList

原型

std::vector<IdName> GetZonedataList(unsigned taskId);

功能

根据任务Id获取Zonedata的列表

参数

  • taskId: 要获取数据的任务Id

返回值

Zonedata的列表

示例

IdName

定义

class IdName {
public:
unsigned id;
std::string name;
}

功能

IdName是一个简单数据类,用于表示Id-名称对,包含一个无符号整数Id和一个字符串名称。

ImportManipulator

原型

void ImportManipulator(const std::string& name, const std::filesystem::path& path, const Pose& pose = Pose());

功能

从指定路径将机器人导入到工作站,并创建对应控制器。如果路径非法,会抛出异常。

参数

  • name: 指定机器人的名称。
  • path: 机器人的库的路径,可以通过GetRobotList获取。
  • pose: 指定机器人的位姿,默认为原点位置,无旋转。

返回值

示例

ImportSTEP

原型

void ImportSTEP(QString file,
double linearDeflection = 0.25,
double angularDeflection = 25.0,
const Pose& pose = Pose(),
bool mergeBody = true);

功能

导入STEP格式的三维模型文件,并应用可选的精度参数、位姿。

参数

  • file: 要导入的STEP文件路径。
  • linearDeflection: 控制模型线性近似精度的最大偏差,单位为毫米,默认值为0.25。
  • angularDeflection: 控制模型角度近似精度的最大偏差,单位为度,默认值为25.0。
  • pose: 导入模型的目标位姿,默认处于原点,无旋转。
  • mergeBody: 是否将零件作为单个实体导入,默认值为true。

返回值

示例

PreviewPath

原型

int PreviewPath(const std::vector<Segment>& segments);

功能

预览一条路径,该路径由一系列连续的segment组成。

参数

  • segments 一段首尾相连的路径信息
// 为Line和Rapid类型时,p1和p2均为当前段的首末端点,
// 为Circle类型时,p1为三点圆弧的中间点,p2为最后一个点
class Segment {
public:
enum Type {
Line,
Circle,
Rapid
};
Type type;

Pos p1;
Pos p2;
};

返回值

返回previewPath的id,用于删除该path。

返回-1时,预览失败。

示例

    std::vector<mpl::Segment> segments;
segments.emplace_back(mpl::Segment::Line, mpl::Pos(0,0,0), mpl::Pos(100,100,0));
segments.emplace_back(mpl::Segment::Circle, mpl::Pos(200,200,0), mpl::Pos(100,300,0));
segments.emplace_back(mpl::Segment::Rapid, mpl::Pos(100,300,0), mpl::Pos(100,400,0));
auto pathId = mpl::PreviewSegmentsPath(segments);

SelectPointCloud

原型

enum class SelectionFlag {
ClearAndSelect,
Select,
Deselect
};
void SelectPointCloud(unsigned id, const std::vector<size_t>& points, SelectionFlag flag = SelectionFlag::ClearAndSelect);

功能

用于选中点云中的点,支持了选取、增选和减选三种模式

参数

  • id 点云对象的id
  • points 点云对象中本次选中点的id列表
  • flag 选择模式,默认为ClearAndSelect,执行后选中id对应点云中的points

返回值

示例

// 假设已有点云id且之前点云未选中

// 选中index为1的点
std::vector<size_t> points{1}
mpl::SelectPointCloud(id, points);
// 获取选中的indexes, 结果是 {1}
auto selectedIndexes = mpl::GetSelectedCloudPointIndexes(id);

// 增选index为2,3的点
std::vector<size_t> pointsAdded{2, 3}
mpl::SelectPointCloud(id, pointsAdded, mpl::SelectionFlag::Select);
// 获取选中的indexes, 结果是 {1, 2, 3}
selectedIndexes = mpl::GetSelectedCloudPointIndexes(id);

// 减选index为2的点
std::vector<size_t> pointsRemoved{2}
mpl::SelectPointCloud(id, pointsAdded, mpl::SelectionFlag::Deselect);
// 获取选中的indexes, 结果是 {1, 3}
selectedIndexes = mpl::GetSelectedCloudPointIndexes(id);

SetBodySelected

原型

void SetBodySelected(unsigned bodyId);

功能

将指定的实体设置为选中状态,在layout和3D区域内对象会高亮。

参数

  • bodyId: 要选中的实体Id

返回值

示例

如需清除选中状态,可参考 ClearSelection

SetExternalJoints

原型

void SetExternalJoints(unsigned taskId, const ExtJoint& ej);

功能

设置指定任务的外轴关节值。

参数

  • taskId: 任务ID,标识要操作的任务
  • ej: 外轴关节值,类型为ExtJoint, ej的eax_a至eax_f对应逻辑轴1至逻辑轴6

返回值

示例

#include "mplsdk.h"
#include "ExtJoint.h"

mpl ExtJoint extJoint;
// 关节值的单位为度或mm
// 设置逻辑轴1为1000mm
extJoint.eax_a = 1000;
// 设置逻辑轴2为30度
extJoint.eax_b = 30.0;
// 设置逻辑轴4为60度
extJoint.eax_d = 60.0;
// 其余轴的值为9e9,表示无效,控制器不会修改对应逻辑轴的关节值

auto tasks = mpl::GetTaskList();
std::string taskName = "name"
for (auto& task : tasks) {
if (task.name == "name") {
mpl::SetExternalJoints(task.id, extJoint);
return;
}
}

SetGeometrySelectionMode

原型

void SetGeometrySelectionMode(GeometrySelectMode mode);

功能

设置几何体选择模式,用于指定用户在场景中可以选择的几何体类型。

参数

  • mode: 几何体选择模式,可选值如下:
    • GeometrySelectMode::None - 无选择模式
    • GeometrySelectMode::Edge - 边选择模式
    • GeometrySelectMode::Face - 面选择模式
    • GeometrySelectMode::Body - 实体选择模式
    • GeometrySelectMode::Part - 零件选择模式
    • GeometrySelectMode::Assembly - 装配体选择模式
    • GeometrySelectMode::Link - 链接选择模式
    • GeometrySelectMode::Mechanism - 机构选择模式
    • GeometrySelectMode::Data - 数据选择模式
    • GeometrySelectMode::Point - 点选择模式
    • GeometrySelectMode::Instruction - 指令选择模式
    • GeometrySelectMode::Path - 路径选择模式

返回值

示例

mpl::SetGeometrySelectionMode(mpl::GeometrySelectMode::Face);

SetGeometrySnapMode

原型

void SetGeometrySnapMode(GeometrySnapMode mode);

功能

设置几何体捕捉模式,用于指定用户在场景中进行几何操作时的捕捉行为。

参数

  • mode: 几何体捕捉模式,可选值如下:
    • GeometrySnapMode::None - 无捕捉模式
    • GeometrySnapMode::Object - 对象捕捉模式
    • GeometrySnapMode::Center - 中心点捕捉模式
    • GeometrySnapMode::MidPoint - 中点捕捉模式
    • GeometrySnapMode::End - 端点捕捉模式
    • GeometrySnapMode::Edge - 边捕捉模式
    • GeometrySnapMode::GravityCenter - 重心捕捉模式
    • GeometrySnapMode::Origin - 原点捕捉模式
    • GeometrySnapMode::Grid - 网格捕捉模式

返回值

示例

mpl::SetGeometrySnapMode(mpl::GeometrySnapMode::Center);

ShowMessage

原型

void ShowMessage(QString msg);

功能

用于弹出一个信息提示对话框。

参数

  • msg 需要显示的提示信息

返回值

示例

mpl::ShowMessage(tr("Hello from HelloPlugin"));