步骤
先确认现有工具不够用
先在工具库里按分类搜一遍:图像源、图像处理、定位、测量、识别、标定对齐、缺陷检测、深度学习、逻辑、控制流、系统、通信、用户自定义。能靠现有节点组合解决的,就别新造——自建工具要自己维护。
右键「新建工具」,填元数据
在 FlowDesigner 工具库树上右键选「新建工具」打开向导:填分类(默认落在「用户自定义」)、名称、类名、作者、图标、版本和说明,然后选实现语言——Python 或 C++。
在向导里定义输入输出参数
逐条添加参数并排序:名称、keyId、类型、默认值、是否允许连接数据流,以及参数是否可见、是否需要密码保护。这份定义决定了工具在流程画布上有哪些引脚、能怎么连线。
实现逻辑(两条路径二选一)
Python:向导生成一个 .py 脚本并登记到 system/PythonToolNav.cfg,由 Python 工具包装器加载;在外部编辑器改完脚本,回工具库面板点「重载修改过的 Python 脚本」即可生效,不用重启程序。C++:向导生成 .h / .cpp / README,把源码加进工具插件工程编译成 DLL,放到 config/DllPlugins.cfg 里 scanDir 指向的目录,重启软件后注册生效——C++ 插件不支持运行期热替换。
在流程里调用,绑到界面上
重启(仅 C++ 路径需要)后在节点列表中定位新工具,拖入流程画布并连接上下游,运行验证输出。之后其输出可按内置工具同样的方式绑定至组件属性并呈现。
批量分发:导入 / 卸载工具包
要给多台机器装同一批自研工具,用随包提供的 ToolPackImport.exe 把「工具模块 + 工具表」整体导入,不需要逐台手工配置;不用的工具包也可以卸载。
两条实现路径
| 项 | Python 脚本 | C++ 插件 |
|---|---|---|
| 向导产物 | .py 脚本 + system/PythonToolNav.cfg 登记 | .h / .cpp / README,需自行接入插件工程 |
| 生效方式 | 工具库面板点「重载修改过的 Python 脚本」,不用重启 | 编译成 DLL 放到 scanDir,重启软件注册 |
| 热更新 | 支持 | 不支持 |
| 适合场景 | 算法试验、临时工具、脚本级逻辑 | 性能敏感、需要复用现有 C++ 工具框架 |
| 分发 | 随工程或工具包一起给 | 随工具包(含 DLL)导入 |
自定义工具与内置工具怎么区分
- 自定义工具默认落在「用户自定义」分类,和内置工具按分类分开。
- 工具表里有 author 字段,填清楚作者,换人维护时一眼能认出是谁写的。
- 没有单独的「自研」来源标记,分类 + 作者就是约定俗成的识别方式。
注意
- 内置工具和自研工具靠「用户自定义」分类与工具表的 author 字段区分,没有单独的工具级来源标记——把作者填清楚,换人维护时一眼能认出。
- 参数 keyId 命名跟内置工具保持一致风格,以后替换或复用节点会省很多事。
- 先用 Python 路径把逻辑跑通,确认值得长期用,再考虑移植成 C++ 插件。
