【OPT】SciSmart3嵌入库开发说明

第一章:软件概述

在阅读本文档前,默认已经基本掌握了Smart3的基本使用方式,理解Smart3的基本知识。嵌入库需要配合Smart3软件共同开发。嵌入的前提为Smart3在环境中能够正常打开。

Smart3是一款简单易用功能、功能齐全、性能稳定的视觉软件开发平台。视觉系统还支持用户基于自定义需求的二次开发。并基于COM和.NET接口技术,增加了对C#,C++等多种编程语言的支持。能满足用户的特殊嵌入使用需求。嵌入库技术提供了将Smart3嵌入到客户的软件中的可能性。Smart3将再后台运行,视觉部分仍由Smart3完成,而客户软件则展示在前台。通过API接口,完成必要的软件信息交互,操作交互。

1718076266157

第二章:环境配置

2.1 安装Smart3

根据Smart3的安装指引安装Smart3软件以及环境,成功安装Smart3并能顺利打开软件。

2.2 注册com组件

Smart3软件根目录下,以管理员身份运行RegisterSciCmtCam.bat或者在控制台中直接输入
regsvr32 "xx\xxx\xx\SciSmtCam.dll" (xx\xxx\xx为软件目录)
注册成功后,会弹出注册成功的提示窗口。

注册失败的常见原因:

  • 未使用管理员模式运行.bat文件,注册命令需要足够的权限进行操作。
  • 依赖项组建未正确安装

2.3 环境准备

使用引擎时,需要调用到Smart3依赖的dll。目前需要将Smart3的根目标和所生成的exe放在同一路径下。
注:v1.8.1.0版本可以通过替换dll来实现不需要将exe放在Smart根目录下

#第三章:编程讲解/C++

3.1 Visual Studio + Qt5.9.3

3.1.1工程配置

选择创建带界面的QWidget工程,根据提示点击下一步。完成Qt工程创建。
点击解决方案->属性->Qt Project Settings->Qt Modules, 添加axontainer。

1718076542453

亦可使用Qt的添加模组窗口,选择ActiveQtS.
1718076549374
此类用于让Qt调用com组件。

3.1.2 添加头文件

将所需的头文件添加到项目中

  • sci3dplane.h
  • sci3dplanearray.h
  • sci3dpoint.h
  • sci3dpointarray.h
  • sciboolArray.h
  • sciengine.h
  • scinumberarray.h
  • scipoint.h
  • scipointarray.h
  • scistringarray.h

3.1.3 基本开发思路

开发思路讲解: 使用引擎开发时,首先需要了解需要开发的主要内容,通常可以分为以下几个部分,本章节也会围绕着该部分进行讲解。

初始化引擎: 引擎类初始化应当跟随软件初始化一同完成。引擎初始化需要一定的时间(主要为硬件搜索、UI构造、方案加载解析等)

配置显示窗口: 绑定UI显示界面到嵌入软件中,主要为Smart中方案已经编辑好的显示窗口,用于视觉界面展示,数据展示与参数调整界面等。

Smart软件交互: 该部分内容主要是针对已有项目方案的细节开发,根据每个算子块和算子都有启动、结束信号,可以根据该信号对应的时机获取相应的变量结果。可以通过算子块名称->算子名称打开对应算子的参数设置页面。

变量交互: 顾名思义就是可以读取,修改对应的变量,控制参数,流程的改变,获取结果展示等功能。

1718076553842

3.14 编程讲解

1.添加引擎类并初始化/析构

在对应的界面类中添加SciEngine类,并在构造函数中完成对引擎的初始化。

class SciSmartEngineDemo : public QWidget
{
    Q_OBJECT
    ...
    SciEngine* m_engine;
    ...
};

引擎初始化的四个步骤:

  1. 构造SciEngine类
  2. 初始化引擎方法调用
    void SciEngine::InitEngine();
  3. 设置Windows消息窗口
    void SciEngine::SetMsgWindow((long long) handle);
  4. 释放引擎
    void SciEngine::ReleaseEngine();
SciSmartEngineDemo::SciSmartEngineDemo(QWidget *parent) : QWidget(parent)
{
    ui.setupUi(this);
    //构造SciEngine
    m_engine = new SciEngine();
    //初始化引擎
    m_engine->InitEngine();

    //设置windows消息窗口
    m_engine->SetMsgWindow((long)this->window());
    ...
}

SciSmartEngineDemo::~SciSmartEngineDemo()
{
    m_engine->ReleaseEngine();
    
}
2.绑定UI

显示控件引擎允许将UI设计其中编辑的界面绑定到Qt的控件中,通常使用Widget或Label控件进行绑定。通过下面函数进行绑定。

  1. 设置软件至运行模式
    int SciEngine::RunMode()

2.连接运行界面窗口
SciEngine::ConnectRunWnd(int index,long long winId);
参数1:index:序号,通过序号控制绑定不同的界面,如Main主界面序号为0,Page1子界面序号为1,以此类推。
参数2:winID:控件的winID,通过Qt控件的winId()方法获得
注:此处UI界面的窗口样式可以把标题栏设置为空,否则点击标题栏可以在控件范围内拖动UI。

1718076558886

把一个控件绑定为运行界面的显示窗口,调用方式如下:

SciSmartEngineDemo::SciSmartEngineDemo(QWidget *parent) : QWidget(parent)
{
    ...
    //设置引擎为运行模式
    m_engine->RunMode();
    //连接运行界面1到控件上
    m_engine->ConnectRunWnd(0,(long long)ui.image1->winId());
    ...
}
3.软件基本功能交互接口

软件基本功能主要指运行、停止等主软件的交互接口。如下图所示,菜单栏中的一些主要功能。通过接口,可以控制软件运行。

1718076563015

常用交互接口

  1. 切换至软件运行模式
    void SciEngine::RunMode();

  2. 软件运行
    void SciEngine::Run();

  3. 软件停止运行
    void SciEngine::Stop();

  4. 弹出Smart3软件本体(主界面)
    void SciEngine::ShowMainWindow();

  5. 弹出硬件设置
    void SciEngine::ShowSettingWindow();

  6. 弹出设置窗口
    void SciEngine::ShowSettingWindow();

  7. 弹出标定窗口
    void SciEngine::ShowCaliSettingDlg();

  8. 保存方案
    void SciEngine::SaveProject();
    void SciEngine::SaveProjectAs(QString); //路径

  9. 打开方案
    void SciEngine::OpenProject(const QString path);

4. 流程/算子交互

如果需要监控某个算子块或某个算子的运行结果,可以通过以下两个接口来调用。该方式为主动调用,获取状态结果。需要用户自己选择获取的时机。

  1. 获取算子块运行状态
    long long SciEngine:: GetBlockRunState(QString blockName , int& value); //输入参数为算子块名称,参数2为结果值、0为NG,1为OK

1718076567903

  1. 获取算子运行状态
    long long SciEngine::GetOprRunState(QString blockName,QString oprName,int& value); //输入参数为算子块,算子名称,参数3为结果,0为NG,1为OK

1718076572097

  1. 绑定事件
    通过注册Smart3中的事件机制,可以将事件通过回调的形式穿透到嵌入库exe中,使其在执行完毕后,事件可以被外部exe捕捉并作出相应的动作,以完成对结果的展示等功能。Smart3提供了4种算子事件可以注册调用。
  • OnOperatorStartSlot:算子执行开始事件(即算子即将开始执行,尚未完成运行动作时)
  • OnOperatorEndSlot:算子块结束事件(即算子已经执行完毕时)
  • OnOperatorOKSlot:算子块执行OK事件(与结束事件同时发出,当算子状态为OK时发出信号)
  • OnOperatorNgSlot:算子块执行NG事件(与结束事件同时发出,当算子状态为NG时发出信号)

下图为对应的关系

1718076576780

使用该功能前,首先需要在Smart3中开启对应算子的执行事件。
打开Smart3软件与对应方案(不使用嵌入库的情况下打开,否则UI功能会被禁用)
UI设计器 ->> 事件 ->> 事件设置,弹出事件设置窗口。

1718076580302
根据算子块和算子名找到对应需要打开的事件,并开启对应的功能。

1718076583801

代码注册部分
注册方式,通过Qt信号槽完成注册:
下面代码演示了如何注册事件,并举例了在事件中当灰度匹配_1开始执行前,打印了相关信息。

.h
class yourWidget:public QWidget
{
    ....
    SciEngine *p_engine;     //引擎对象指针
public slots:
    void OnOperatorStartSlot(QString,QString);
    void OnOperatorEndSlot(QString,QString);
    void OnOperatorRunOK(QString,QString);
    void OnOperatorRunNG(QString,QString);
    
private:
    void ConnectSignalSlots();        
....
}
.cpp
void yourWidget::ConnectSignalSlots()
{
    connect(p_engine->m_axObj,SIGNAL(OnOperatorStart(QString,QString)),this,SLOT(OnOperatorStartSlot(QString,QString)));
    connect(p_engine->m_axObj,SIGNAL(OnOperatorEnd(QString,QString)),this,SLOT(OnOperatorStartSlot(QString,QString)));
    connect(p_engine->m_axObj,SIGNAL(OnOperatorRunOK(QString,QString)),this,SLOT(OnOperatorRunNG(QString,QString)));
    connect(p_engine->m-axObj,SIGNAL(OnOperatorRunNG(QString,QString)),this,SLOT(OnOperatorRunNG(QString,QString)));    
}

void yourWidget::OnOpearotrStartSlot(QString blockName,QString oprName)
{
    if(blockName == "Block1" && oprName == "灰度匹配_1")
    {
        qDebug()<<"灰度匹配即将执行";
        ...               
    }
    ...
}

5.变量交互/参数设置

嵌入库提供与Smart变量交互的接口,可以在嵌入软件中调用接口操作Smart3的变量系统以及唤出参数设置界面。
Smart3中一共有6种类型的变量:其中常规类型的变量有4种,3D的变量有2种,每种变量各自有对应的点集。

NSBP3D_P3D_PL
数字字符串布尔点(x,y)3D点(x,y,z)3D点云(a,b,c,d)
获取变量

1.获取全局变量的数组
long long SciEngine::GetVaraibleList(SciStringArray* variableNames);
参数1:输出全局变量的数组

2. 获取 N型全局变量
long long SciEngine::GetVariableNumber(const QString variableName ,double& value);
参数1:变量名称
参数2:获取的变量值
long long SciEngine::GetVariableArray(const QString variableName,SciNumberArray *arrayValue);
参数1:变量名称
参数2:获取N变量数组

3.获取 B型全局变量
long long SciEngine::GetVariableBool(const QString variableName,int& value);
参数1:变量名称
参数2:获取的B变量
long long SciEngine::GetVariableBoolArray(const QString variableName, SciBoolArray* arrayValue);
参数1:变量名称
参数2:获取的B变量数组

4.获取 S型全局变量
long long SciEngine::GetVariableString(const QString variableName,QString& value);
参数1:变量名称
参数2:获得的S型变量值
long long SciEngine::GetVariableStringArray(const QString variableName,SciStringArray* arrayValue);
参数1:变量名称
参数2:获得的S型变量数组

5.获取 P型全局变量
long long SciEngine::GetVariablePoint(const QString variableName,SciPoint* value);
参数1:变量名称
参数2:获得的P型点的值

long long SciEngine::GetVariablePointArray(const QString variableName, SciPointArray* arrayValue);
参数1:变量名称
参数2:获得的P型数组的值

6.获取 3D_P全局变量
long long SciEngine::GetVariable3DPoint(const QString variableName,Sci3DPoint* value);
参数1:变量名称
参数2:获得的3D_P型数据的值
long long SciEngine::SciEngine::GetVariable3DPointArray(const QString variableNames, Sci3DPointArray *arrayValue);
参数1:变量名称
参数2:获得的3D_P型数组的值

7.获取 3D_PL全局变量
long long SciEngine::GetVariable3DPlane(const QString variableNames,Sci3DPlane *value);
参数1:变量名称
参数2:获得的3D_Plane数据的值
long long SciEngine::GetVariable3DPlaneArray(const QString varibaleNames,Sci3DPlaneArray *value);
参数1:变量名称
参数2:获得的3D_Plane数据的值

设置变量
Smart3中,设置变量可分为两种状态:
第一种为只改变当前的值。即可调用接口后,在本次软件打开后生效。下次软件打开时,变量会恢复到Smart3创建变量中的初始值,即创建变量时设置的初始值。
第二种则是同时改变当前的值与初始值,在下次打开软件后,会变成新设置的值。

例如:假设视觉流程为定位贴合流程,变量A控制是否进入标定流程,此时修改A的值调用第一种方式,在进入标定流程结束后,在脚本中复位该变量。这个设置动作并不会保留下来,若调用第二种方式设置初始值,则第二次打开软件时,该变量就会为这个默认的初始值,后面打开软件,运行时则会默认跑一次标定流程。所以调用哪一种接口,需要开发者根据实际情况选择。
以下接口的参数,含义一致,故不再重复声明。

参数1:需要修改的变量名称参数2:变量值

1.设置N变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariableNumber(const QString variableName, double value);
修改变量值数组
void SciEngine::SetVariableNumberArray(const QString variableName , SciNumberArray *value);

修改变量值与初始值
int SciEngine::SetCustomLongVarInitValueAndValue(const QString varName, int INumVariant);
int SciEngine::SetCustomDoubleVarInitValueAndValue(const QString varName, double dNumberVariant);
int SciEngine::SetCustomLongVarInitValueAndValue(const QString varName, long LNumberVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomNumberArrayVarInitValueAndValue(const QString varName,SciNumberArray *value);

2.设置B变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariableBool(const QString variableName,int value);
修改变量值数组
void SciEngine::SetVariableBoolArray(const QString variableName,SciBoolArray *value)

修改变量与初始值
int SciEngine::SetCustomBoolVarInitValueAndValue(const QString varName,int boolVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomBoolArrayVarInitValueAndValue(const QString varname,SciBoolArray* value);

3.设置S变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariableString(const QString variableName,const QString value);
修改变量值数组
void SciEngine::SetVariableStringArray(const QString variableName,SciStringArray* value);

修改变量与初始值
int SciEngine::SetCustomStringVarInitValueAndValue(const QString varName,const QString strVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomStringArrayVarInitValueAndValue(const QString varName,SciStringArray *value);

4.设置P变量以及其数组的两种接口
修改变量值
void SciEngine::SetCustomPoint(const QString varName, const QString strVariant);
修改变量值数组
void SciEngine::SetVariableStringArray(const QString variableName,SciStringArray* value);

修改变量与初始值
int SciEngine::SetCustomPointVarInitValueAndValue(const QString varName,const QString strVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomPointArrayVarInitValueAndValue(const QString varName,SciStringArray *value);

5.设置3D_P变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariable3DPoint(const QString variableName,Sci3DPoint *value);
修改变量数组
void SciEngine::SetVariable3DPointArray(const QString variableName,Sci3DPointArray *value);

修改变量与初始值
int SciEngine::SetCustom3DPointVarInitValueAndValue(const QString varName,Sci3DPoint *value);
修改变量数组的值与初始值
int SciEngine::SetCustom3DPointArrayVarInitValueAndValue(const QString varName,Sci3DPointArray *value);

6.设置3D_Plane变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariable3DPlane(const QString variableName,Sci3DPlane* value);
修改变量数组
void SciEngine::SetVaraible3DPlaneArray(const QString variableName,Sci3DPlaneArray* value);

修改变量与初始值
int SciEngine::SetCustom3DPlaneVarInitValueAndValue(const QString varName,Sci3DPlane* value);
修改变量数组的值与初始值
int SetCustom3DPlaneArrayVarInitValueAndValue(const QString varName,Sci3DPlaneArray *value);

第四章:编程讲解 / C#

4.1添加Com组建

在确保注册成功后,在对应的C#项目中,解决方案资源管理器-》引用-》添加引用。如下图所示,点击COM 资源,在列表中找到“SciSmtCam 1.0 Type Library”即可。

1718076591808

添加后,在对应文件中添加添加引用 SciSmtCamLib 即可。
using SciSmtCamLib

4.2基本开发思路

开发思路讲解: 使用引擎开发时,首先需要了解需要开发的主要内容,通常可以分为以下几个部分,本章节也会围绕着该部分进行讲解。

初始化引擎: 引擎类初始化应当跟随软件初始化一同完成。引擎初始化需要一定的时间(主要为硬件搜索、UI构造、方案加载解析等)

配置显示窗口: 绑定UI显示界面到嵌入软件中,主要为Smart中方案已经编辑好的显示窗口,用于视觉界面展示,数据展示与参数调整界面等。

Smart软件交互: 该部分内容主要是针对已有项目方案的细节开发,根据每个算子块和算子都有启动、结束信号,可以根据该信号对应的时机获取相应的变量结果。可以通过算子块名称->算子名称打开对应算子的参数设置页面。

变量交互: 顾名思义就是可以读取,修改对应的变量,控制参数,流程的改变,获取结果展示等功能。

1718076553842

4.3编程讲解

4.3.1 添加引擎对象并初始化

在相应的类中声明并创建对象
SciEngine m_engine = new SciEngine();
在对此类中的构造函数中进行引擎初始化。

1.初始化引擎
InitEngine();

2.打开方案
OpenProject(const QString path);

3.绑定窗口界面
SetMsgWindow(long WindowHandle);

4.设置运行模式
RunMode();

5.绑定显示窗口
ConnectRunWnd(int index,long windowHandle);

6.移动窗口
MoveRunWindow(int index,int left,int top,int righrt,int bottom);
参数1为窗口编号
参数2,3,4,5分别为控件的位置关系。通常的用法为

m_engine.MoveRunWindow(0, 0, 30, pictureBox1.Right - pictureBox1.Left, pictureBox1.Bottom - pictureBox1.Top );

代码演示

public Form1()
{
    ...
    m_engine.InitEngine();
    m_engine.SetMsgWindow((long)this.Handle);
    m_engine.RunMode();
    m_engine.ConnectRunWnd(0, (long)pictureBox1.Handle);
    //The height of the title is approximately 30 pixels.
    m_engine.MoveRunWindow(0, 0, 30, pictureBox1.Right - pictureBox1.Left, pictureBox1.Bottom - pictureBox1.Top );
 }

释放引擎
通常情况下,在调用了SciEngine类的析构函数中,调用释放引擎函数。请注意,若未成功释放引擎,Smart3会残留在后台中,若再次打开会提示软件已打开。
ReleaseEngine();

4.3.2 软件基本功能交互

软件基本功能主要是指运行、停止等主软件的交互接口。如下图所示,菜单栏中的一些主要功能。可以通控制软件运行、停止、加载方案、保存方案、弹出设置比窗口等功能。
1718076563015
1.切换至软件运行模式
void SciEngine::RunMode();

2.软件运行
void SciEngine()::Run();

3.软件停止运行
void SciEngine::Stop();

4.弹出Smart3软件本体(主界面)
void SciEngine::ShowMainWindow();

5.弹出硬件设置
void SciEngine::ShowHardwarSettingDlg();

6. 弹出设置窗口
void SciEngine::ShowCailSettingDlg();

7.弹出标定窗口
void SciEngine::ShowCaliSettingDlg();

8.保存方案
int SciEngine::SaveProject();
int SciEngine::SavePriojectAs(string); //路径

9.打开方案
void SciEngine::OpenProject(string);

4.3.3 算子流程交互事件

如果需要监控某个算子块或者某个算子的运行结果,可以通过以下两个接口来调用。该方式为主动调用,获取状态结果。需要用户自己选择获取时机。

1. 获取算子块运行状态
int GetBlockRunState(string blockName,out int value);
blockName:算子名
value:结果值
1718076567903

2. 获取算子运行状态
int GetOprRunState(string blockName,string oprName,out int& value)
1718076572097

3.注册事件
嵌入库C#接口共提供6个事件。其中分为软件事件和算子事件。

软件事件

OnAppStart  //软件开始  指软件方案开始运行的动作
OnAppEnd    //软件结束  指软件方案结束运行的动作

算子事件

OnOperatorStart(QString blockName,string oprName);  //算子运行开始(即算子即将开始执行,尚未完成运行动作时)
OnOperaotorEnd(QString blockName,string oprName);   //算子运行结束
OnOperatorRunOK(QString blockName,string oprName);  //算子运行OK
OnOperatorRunNG(QString blockName,string oprName);  //算子运行NG

1718076576780
通过参数中的blockName和oprName

4.3.5 变量交互/参数设置

嵌入库提供与Smart变量交互的接口,可以在嵌入软件中调用接口操作Smart3的变量系统以及唤出参数设置界面。
Smart3中一共有6种类型的变量:其中常规类型的变量有4种,3D的变量有2种,每种变量各自有对应的点集。

NSBP3D_P3D_PL
数字字符串布尔点(x,y)3D点(x,y,z)3D点云(a,b,c,d)

获取变量
1.获取 全局变量的数组
int GetVariableList(SciStringArray* variableNames);
参数1:输出全局变量的数组。

2.获取N型全局变量
int GetVariableNumber(string variableName,ref double arrayValue);
参数1:变量名称
参数2:获取的变量值
int GetVariableNumberArray(string variableName,ref SciStringArray arrayValue);
参数1:变量名称
参数2:获取的N型变量数组

3.获取B型全局变量
int GetVariableBool(string variableName,out int value);
参数1:变量名称
参数2:获取的变量值
int GetVariableBoolArray(string variableName,ref SciBoolArray arrayValue);
参数1:变量名称
参数2:获得的B型变量数组

4.获取S型全局变量
int GetVariableString(string variableName,out string value);
参数1:变量名称
参数2:获得的S型变量值
int GetVariableStringArray(string variableName,ref SciStringArray arrayValue);
参数1:变量名称
参数2:获得的S型数组变量

5.获取P型全局变量
int GetVariablePoint(string variableName, ref SciPoint value);
参数1:变量名称
参数2:获得的P型点的值
int GetVariablePointArray(string variableName , ref SciPointArray value);
参数1:变量名称
参数2:获得的P型数组的值

6.获取3D_P全局变量
int GetVariable3DPoint(string variableName , ref Sci3DPoint point3D);
参数1:变量名称
参数2:获得的3D_P型数据的值
int GetVariable3DPointArray(string variableName, ref Sci3DPointArray point3DArray);
参数1:变量名称
参数2:获得的3D_P型数组的值

7.获取3D_PL全局变量
int GetVariable3DPlane(string variableName,ref Sci3DPlane plane3d);
参数1:变量名称
参数2:获得的3D_Plane数据的值
int GetVariable3DPlaneArray(string variableName, ref Sci3DPlaneArray plane3dArray);
参数1:变量名称
参数2:获得的3D_Plane数据的值

设置变量
Smart3中,设置变量可分为两种状态:
第一种为只改变当前的值。即可调用接口后,在本次软件打开后生效。下次软件打开时,变量会恢复到Smart3创建变量中的初始值,即创建变量时设置的初始值。
第二种则是同时改变当前的值与初始值,在下次打开软件后,会变成新设置的值。
例如:假设视觉流程为定位贴合流程,变量A控制是否进入标定流程,此时修改A的值调用第一种方式,在进入标定流程结束后,在脚本中复位该变量。这个设置动作并不会保留下来,若调用第二种方式设置初始值,则第二次打开软件时,该变量就会为这个默认的初始值,后面打开软件,运行时则会默认跑一次标定流程。所以调用哪一种接口,需要开发者根据实际情况选择。
以下接口的参数,含义一致,故不再重复声明。

1.设置N变量以及其数组的两种接口
修改变量值
int SetVariableNumber(string variableName,double value);
修改变量值数组
int SetVariableNumberArray(string variableName, SciNumberArray arrayValue);

修改变量值与初始值
int SetCustomStringVarInitValueAndValue(string varName, double dNumberVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomNumberArrayVarInitValueAndValue(const QString varName,SciNumberArray *value);

2.设置B变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariableBool(const QString variableName,int value);
修改变量值数组
void SciEngine::SetVariableBoolArray(const QString variableName,SciBoolArray *value)

修改变量与初始值
int SciEngine::SetCustomBoolVarInitValueAndValue(const QString varName,int boolVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomBoolArrayVarInitValueAndValue(const QString varname,SciBoolArray* value);

3.设置S变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariableString(const QString variableName,const QString value);
修改变量值数组
void SciEngine::SetVariableStringArray(const QString variableName,SciStringArray* value);

修改变量与初始值
int SciEngine::SetCustomStringVarInitValueAndValue(const QString varName,const QString strVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomStringArrayVarInitValueAndValue(const QString varName,SciStringArray *value);

4.设置P变量以及其数组的两种接口
修改变量值
void SciEngine::SetCustomPoint(const QString varName, const QString strVariant);
修改变量值数组
void SciEngine::SetVariableStringArray(const QString variableName,SciStringArray* value);

修改变量与初始值
int SciEngine::SetCustomStringVarInitValueAndValue(const QString varName,const QString strVariant);
修改变量数组的值与初始值
int SciEngine::SetCustomPointArrayVarInitValueAndValue(const QString varName,SciStringArray *value);

5.设置3D_P变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariable3DPoint(const QString variableName,Sci3DPoint *value);
修改变量数组
void SciEngine::SetVariable3DPointArray(const QString variableName,Sci3DPointArray *value);

修改变量与初始值
int SciEngine::SetCustom3DPointVarInitValueAndValue(const QString varName,Sci3DPoint *value);
修改变量数组的值与初始值
int SciEngine::SetCustom3DPointArrayVarInitValueAndValue(const QString varName,Sci3DPointArray *value);

6.设置3D_Plane变量以及其数组的两种接口
修改变量值
void SciEngine::SetVariable3DPlane(const QString variableName,Sci3DPlane* value);
修改变量数组
void SciEngine::SetVaraible3DPlaneArray(const QString variableName,Sci3DPlaneArray* value);

修改变量与初始值
int SciEngine::SetCustom3DPlaneVarInitValueAndValue(const QString varName,Sci3DPlane* value);
修改变量数组的值与初始值
int SetCustom3DPlaneArrayVarInitValueAndValue(const QString varName,Sci3DPlaneArray *value);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值