mcpField
A
acad-cuix-builder

acad-cuix-builder

github.com/autodesk-platform-services开发1100 次安装3 周前更新
代码仓库

关于 acad-cuix-builder

acad-cuix-builder 是一个对话式技能,用于生成 AutoCAD 插件的完整 .bundle 文件夹,包含 CUIX 功能区、工具提示、LISP 文件和插件清单。适合配置 AutoCAD 插件界面与按钮的用户。

主要功能

  1. 01生成 CUIX 功能区、面板和按钮
  2. 02创建带动画的扩展工具提示
  3. 03复制 LISP 命令文件
  4. 04生成 PackageContents.xml 清单
  5. 05支持图标匹配与 F1 CHM 帮助

适用场景

  1. 01为 AutoCAD 插件创建功能区界面
  2. 02批量配置面板中的命令按钮
  3. 03为按钮添加图标和动画工具提示
  4. 04生成含 F1 帮助配置的插件包

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/autodesk-platform-services/skills --skill acad-cuix-builder

安装后在 Claude Code 中输入/acad-cuix-builder确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

install.ps1
README.md
references/
cuix-architecture.md

详细介绍

AutoCAD CUIX 生成器

通过对话生成完整的 AutoCAD .bundle 文件夹:

  • 功能区选项卡 + 面板 + 按钮(CUIX)
  • 带 GIF 动画的扩展工具提示(XAML)
  • LISP 命令文件(从 lispPath 复制)
  • PackageContents.xml — AutoCAD 插件清单

将该 bundle 放入 %APPDATA%\Autodesk\ApplicationPlugins\,AutoCAD 会在下次启动时自动加载。

架构参考:请参阅 references/cuix-architecture.md。


步骤 0 — 确认生成器可用

$exe = "$env:USERPROFILE\.cuixbuilder\CuixBuilder.exe"
if (Test-Path $exe) {
    & $exe --help          # shows all config fields
} elseif (Get-Command dotnet -ErrorAction SilentlyContinue) {
    dotnet --version
} else {
    Write-Host "Neither found — run install.ps1 first"
}
  • 找到 exe → 在步骤 5 中使用 & $exe <config.json>
  • 找到 dotnet SDK → 在步骤 5 中使用 dotnet run --project <src-path> -c Release -- <config.json>
  • 两者都没有 → 告诉用户先运行 install.ps1(会下载 exe,无需 SDK)

步骤 1 — 收集插件身份信息

询问:

  • 插件显示名称 — 显示为功能区选项卡和组标签(例如 Drafting Tools)
  • 内部名称 — 根据显示名称生成,不含空格(例如 DraftingTools)

步骤 2 — 收集面板信息

询问:

  • 需要多少个功能区面板?
  • 每个面板的名称(例如 Annotation、View)

步骤 3 — 收集按钮信息(按面板)

自动扫描图标文件夹(用户提供文件夹路径时)

如果用户说“使用 <folder> 中的图标”,列出该文件夹,并按按钮名称自动匹配文件:

Get-ChildItem "D:\SkillDemo\demo\icons\" | Select-Object Name

匹配规则(不区分大小写,空格→空):

  • {buttonname}.bmp → imagePath(16×16 功能区图标)
  • {buttonname}.gif → tooltipImage(展开工具提示动画)
  • {buttonname}.png → tooltipImage(没有 GIF 时的后备选项)

示例:按钮标签 Zoom Selection,内部名称 zoomsel:

  • zoomsel.bmp → imagePath
  • zoomsel.gif → tooltipImage

根据标签生成内部名称:转为小写,去掉空格和特殊字符(例如 Zoom Selection → zoomsel,Isolate Layer → layiso)。如果没有找到匹配项,则使用彩色占位图。

每个按钮的字段

对于每个面板中的每个按钮,询问:

  • 标签 — 按钮上显示的文字(例如 Quick Leader)
  • 命令 — 以下其中一种:
    • 裸 AutoCAD 命令:QLEADER → 生成器会自动添加 ^C^C
    • LISP 表达式:(c:ZOOMSEL) → 生成器会自动添加 ^C^C
    • 已格式化:^C^CMYCOMMAND → 原样使用
  • 图像 — 从图标文件夹自动匹配,或提供 .bmp 文件路径,或跳过 → 使用彩色占位图
  • 工具提示 — 简短的悬停文本(默认使用标签)
  • 工具提示说明 — 可选的扩展正文,在展开的工具提示中显示
  • 工具提示 GIF — 从图标文件夹自动匹配,或提供 .gif/.png 路径(建议:300×187px,<30KB)
  • 帮助主题 — F1 帮助的锚点名称(例如 zoomsel);如果未提供,则根据内部名称生成
CHM / F1 帮助

如果用户没有提及 CHM 文件,务必询问:

“你有用于 F1 支持的 CHM 帮助文件吗?如果有,请提供路径。”

如果用户提供了文件,则在配置中设置 chmPath。如果跳过,则省略 chmPath(F1 会打开 AutoCAD 自带的帮助)。
每个按钮的帮助主题 = 根据按钮内部名称生成的锚点名称(例如 zoomsel)。


步骤 4 — 输出路径

询问将 .cuix 文件保存到何处。
默认值:当前目录 + <PluginName>.cuix


步骤 5 — 确认、构建 JSON 并生成

显示摘要表格:

Plugin : <DisplayName>   Tab : <Tab>   Output : <path>

Panel: <name>
  [1] <label>  →  <command>   image: <file or "placeholder blue">
  [2] ...

与用户确认后,构建 JSON 配置:

{
  "pluginName": "DraftingTools",
  "displayName": "Drafting Tools",
  "tab": "Drafting Tools",
  "outputPath": "C:\\full\\path\\DraftingTools.cuix",
  "acadDir": "C:\\Program Files\\Autodesk\\AutoCAD 2027",
  "lispPath": "C:\\full\\path\\DraftingTools.lsp",
  "panels": [
    {
      "name": "Panel Name",
      "buttons": [
        {
          "label": "Zoom Selection",
          "command": "(c:ZOOMSEL)",
          "imagePath": "C:\\icons\\zoomsel.bmp",
          "tooltip": "Zoom to selected objects",
          "tooltipDescription": "Zooms viewport to fit current selection set.",
          "tooltipImage": "C:\\icons\\zoomsel.gif"
        }
      ]
    }
  ]
}
  • acadDir — AutoCAD 安装目录,用于检测 R 系列版本(R26.0 = 2027,R25.1 = 2026,R25.0 = 2025)
  • lispPath — 复制到 bundle 中;旁边的 .Help.html 和 .chm 也会自动复制
  • tooltipImage — 在展开的工具提示中显示的 GIF/PNG;建议 300×187px,<30KB
  • imagePath — 功能区按钮图标的 16×16 BMP;省略时会自动生成彩色占位图

使用明确的时间戳将配置写入 $env:TEMP,然后运行:

$configPath = "$env:TEMP\cuix_$(Get-Date -Format 'yyyyMMdd_HHmmss').json"
# ... write config to $configPath ...

# With exe (preferred)
& "$env:USERPROFILE\.cuixbuilder\CuixBuilder.exe" $configPath

# With SDK fallback — clone source from GitHub
$src = "$env:TEMP\acad-cuix-builder-src"
if (-not (Test-Path $src)) {
    git clone https://github.com/ADN-DevTech/acad-cuix-builder $src
}
dotnet run --project $src -c Release -- $configPath

步骤 6 — 报告结果

成功时:

Done: <outputPath>
In AutoCAD: CUILOAD → browse to <outputPath>

失败时:显示 stderr 并进行诊断(常见原因:缺少 exe、路径错误、JSON 无效)。


命令规范化

用户输入转换为
QLEADER^C^CQLEADER
zoom e^C^CZOOM E
(alert "Hi")^C^C(alert "Hi")
^C^CMYCOMMAND^C^CMYCOMMAND(保持不变)

占位图标颜色(未提供图像时自动生成)

索引会在 CUIX 中的所有按钮之间按 0→7 循环。

01234567
蓝色绿色橙色紫色青绿色红色琥珀色青色

F1 帮助 — 通过 PackageContents 使用 CHM

F1 帮助通过 CHM + PackageContents.xml 实现。已在 AutoCAD 2027 中测试并确认可用。

工作原理
  • 在 <ApplicationPackage> 上设置 HelpFile="./Contents/Win64/Plugin.chm"
  • <Command Local="ZOOMSEL" HelpTopic="zoomsel" /> — 仅使用锚点名称(不带 .htm)
  • CUIX <ToolTip HelpTopic="zoomsel" HelpSource="C:\absolute\path\Plugin.chm" />
配置

为每个按钮设置 chmPath 和 helpTopic(锚点名称,而非文件名):

{
  "chmPath": "C:\\path\\to\\DraftingTools.chm",
  "panels": [{
    "buttons": [{
      "helpTopic": "zoomsel"
    }]
  }]
}

如果用户提供文件名,CuixBuilder 会自动移除 .htm/.html 扩展名,并且始终只输出锚点名称。


要求

  • CuixBuilder.exe — 通过 install.ps1 安装(从 GitHub Releases 下载,约 200KB)
  • .NET 10 runtime — 随 AutoCAD 2027 提供;也可从 https://dot.net 安装
  • 仅限 Windows — AutoCAD 插件包格式仅适用于 Windows

评论

支持 Markdown