Skip to content

新增 Insert Bundle Unbundle:按位置顺序 Bundle/Unbundle 选中的多条 wire - #46

Merged
nevstop merged 12 commits into
mainfrom
feat/new_quickdrops
Sep 29, 2026
Merged

nevstop merged 12 commits into
mainfrom
feat/new_quickdrops

Conversation

@nevstop

@nevstop nevstop commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

背景

选中多条数据 wire 后,自动插入一对 Bundle + Unbundle:先把选中的线按上下位置顺序 bundle 成一个 cluster,再立即解开并把每个元素接回原来的源端子与下游端子,过程结束后原有逻辑不变(线序与接线关系都不动,只是中间多了一对节点)。

本次交付为可直接接线的 subVI,QD 插件外壳由使用者在 NEVSTOP_QuickDrop/QuickDrop Plugin Template.vit 中自行接入。

改动

  • 新增 src/resource/dialog/QuickDrop/plugins/QD_Bundle Unbundle/Insert Bundle Unbundle.vi
  • 新增 Insert Bundle Unbundle.html(单文件说明:模板接入步骤、端子与 conIdx、行为、验证记录)
  • 新增 .github/skills/labview-quickdrop-plugin/:QuickDrop 插件与 labview-mcp 工作流 skill(SKILL.md + AIXML/VI Scripting 事实清单 + 模态框看门狗脚本)
  • .gitignore 增加 .tmp/*

实现要点

  • 取 QD Launch VI Ref 的 Selection List[],过滤出 LV.Wire,按 Master Bounds Rect.Top 自上而下排序(Top * 4096 + i 作键)
  • 用 VI Scripting 创建 Bundle(style 2049)/ Unbundle(style 2048),删除原 wire 后按「源端子 → Bundle 输入 i」「Unbundle 输出 i → 原下游端子」重新连线
  • 增长顺序有要求:先把前两个源接进 input 0/1 让节点定下 cluster 类型,再 AddInputAfter(Index := Input Count - 1),否则 AddInputAfter 报 1055
  • 分叉线在 LabVIEW 里是端子数 > 2 的单个 Wire 对象,据此判定「每根线只有一个下游端子」,不满足则报错放弃、不改动框图
  • 连接器板 4-2-2-4(pattern 4815):QD Launch VI Ref = 11、Diagnostic VI Path = 10、error in (no error) = 8、changes made? = 3、error out = 0

验证

  • 三根独立线(double / string / bool):changes made? = TRUE、无错误;导出目标 VI 确认源控件与 Bundle 元素一一对应、Unbundle 输出接回原指示器、上下顺序保持
  • 分叉线(一个源接两个下游):返回 code = 1 / Bundle Unbundle aborted、changes made? = FALSE、目标 VI 未被改动
  • 连接器板经 lvai_connector_pane 复测,判定符合 NI 风格指南
  • 以上验证通过 VI 的 Diagnostic VI Path 输入无头执行(给路径即操作该 VI 全部 wire 并保存)
  • skill 内看门狗脚本以 -Once -DryRun 自检通过(能枚举并分类 LabVIEW 窗口)

说明

  • 本 VI 不开启 Undo 事务,撤销由调用方(QD 插件模板 / 管理器)负责;返回错误时应让事务失败
  • 快捷键描述行 Default Shortcut - [X] 需由使用者在插件 VI 上补充
  • 分支内另含:若干插件 VI 与工程文件更新、Copilot 指令文件

nevstop added 4 commits September 28, 2026 22:22
- 取 QuickDrop 启动 VI 的 Selection List[],筛出 wire 并按 Master Bounds Rect.Top 自上而下排序
- 用 VI Scripting 创建 Bundle/Unbundle,删除原 wire 后按源端子/下游端子重新连线,cluster 元素顺序与原始线一致
- 只支持每个 wire 有单一游端子;选中项非全为 wire、少于 2 根或存在分叉时报错放弃且不改动框图
- 连接器板为 4-2-2-4(pattern 4815),已按 NI 风格指南分配端子
- 附带单文件 HTML 使用说明:模板接入步骤、端子与 conIdx、行为与验证记录
@nevstop

nevstop commented Sep 28, 2026

Copy link
Copy Markdown
Collaborator Author

本阶段交付 Insert Bundle Unbundle(subVI,可直接接线,QD 插件外壳由使用者接入模板)。

内容:选中多条 wire 后按上下位置顺序 Bundle 成 cluster 再 Unbundle 接回原端子;新增 VI 与单文件 HTML 说明,.gitignore 增加 .tmp/*。

关键决策与事实:

  • 只支持「每根线只有一个下游端子」。LabVIEW 里分叉线是端子数 > 2 的单个 Wire 对象,据此判定;不满足则返回 code 1 / Bundle Unbundle aborted、changes made? = FALSE,不改动框图。
  • 增长 Bundle 必须先接好前两个源让节点定下 cluster 类型,再 AddInputAfter,否则报 1055。
  • 生成的 VI 默认不分配连接器板端子,需在 AIXML 里写 conIdx;成品为 4-2-2-4(pattern 4815):11 / 10 / 8 / 3 / 0。

验证:三根独立线端到端成功且顺序与接线正确;分叉线被拒绝且目标未改动;连接器板经复测符合 NI 风格指南。

@nevstop nevstop self-assigned this Sep 28, 2026
nevstop added 2 commits September 28, 2026 23:40
- SKILL.md:模态框看门狗门禁、labview-mcp 能力边界、插件契约、可测试性设计、实施流程
- references/aixml-and-scripting-facts.md:AIXML 语法、生成与保存、VI Scripting、验证手段的事实清单
- scripts/lv-dialog-guard.ps1:监视 LabVIEW 模态对话框并自动置前 + 回车,避免 AI gRPC 服务被冻结
@nevstop

nevstop commented Sep 28, 2026

Copy link
Copy Markdown
Collaborator Author

本阶段把 QuickDrop 插件开发经验沉淀成 skill,并放进仓库。

内容:新增 .github/skills/labview-quickdrop-plugin/

  • SKILL.md:模态框看门狗门禁(labview-mcp 期间 LabVIEW 弹模态框会冻结整个 gRPC 服务,所有 lvai_* 超时)、工具能力边界(AIXML 只能新建 VI;不写 conIdx 就没有连接器板)、插件契约、可测试性设计、实施流程
  • references/aixml-and-scripting-facts.md:AIXML 语法 / 生成与保存 / VI Scripting / 验证手段的事实清单
  • scripts/lv-dialog-guard.ps1:常驻监视 LabVIEW 模态对话框并自动置前 + 回车,命中写日志;支持 -Once / -DryRun

关键决策:skill 从用户级目录 ~/.copilot/skills/ 移入本仓库(工作区 skill 位置为 .github/skills/),避免同名 skill 两份并存。

验证:看门狗脚本在新位置以 -Once -DryRun 自检通过(枚举到 LabVIEW 窗口时按规则分类;默认阈值下不误碰主窗口)。

nevstop added 6 commits September 28, 2026 23:45
- .gitmodules 记录 .wiki -> LabVIEW-QuickDrops-Manager.wiki.git
- 仓库约定补充 .wiki/ 目录说明
- README(zh-cn).md 内容合并进 README.md,按「英文在前、-----、中文在后」单文件双语
- .vipb 移除 README(zh-cn).md 排除项
- 更新 Copilot 指令补充文档中英文一致与单页版式约定
- 同步 .wiki submodule
@nevstop
nevstop merged commit 3dc5325 into main Sep 29, 2026
2 checks passed
@nevstop
nevstop deleted the feat/new_quickdrops branch September 29, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant